diff --git a/.gitignore b/.gitignore index 97cd869f4..b521d33ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,61 +1,13 @@ +*.aps +*.ncb +*.opensdf +*.sdf +*.suo *.user -/*.ncb -/*.opensdf -/*.sdf -/*.suo -/Bin/Beta Release/Config/Project64.cache3 -/Bin/Beta Release/Config/Project64.cfg -/Bin/Beta Release/Config/Project64.cht -/Bin/Beta Release/Config/Project64.rdb -/Bin/Beta Release/Config/Project64.rdn -/Bin/Beta Release/Config/Project64.rdx -/Bin/Beta Release/Config/Project64.zcache -/Bin/Beta Release/Logs/Project64.log -/Bin/Beta Release/map/Project64.map -/Bin/Beta Release/pdb/Project64.pdb -/Bin/Beta Release/Project64.exe -/Bin/Debug/Config/Glide64.rdb -/Bin/Debug/Config/Project64.cache3 -/Bin/Debug/Config/Project64.cht -/Bin/Debug/Config/Project64.rdb -/Bin/Debug/Config/Project64.rdn -/Bin/Debug/Config/Project64.rdx -/Bin/Debug/Config/Project64.zcache -/Bin/Debug/lib -/Bin/Debug/Logs -/Bin/Debug/map -/Bin/Debug/pdb -/Bin/Debug/Project64.exe -/Bin/Debug/Project64.leak.csv -/Bin/Debug/Save -/Bin/Debug/Screenshots -/Bin/Debug/Setup Project64*.exe -/Bin/Debug/SyncPlugin -/Bin/External Release/Config/Project64.cache3 -/Bin/External Release/Config/Project64.cfg -/Bin/External Release/Config/Project64.cht -/Bin/External Release/Config/Project64.rdb -/Bin/External Release/Config/Project64.rdn -/Bin/External Release/Config/Project64.rdx -/Bin/External Release/Config/Project64.zcache -/Bin/External Release/d3d syslog.txt -/Bin/External Release/Logs/CPUoutput.log -/Bin/External Release/Logs/Project64.log -/Bin/External Release/Logs/RSP_x86Log.txt -/Bin/External Release/Project64.exe +Thumbs.db +/Bin/Debug /Bin/Package -/Bin/Release/d3d syslog.txt -/Bin/Release/d3d syslog.txt.bak -/Bin/Release/lib -/Bin/Release/Logs -/Bin/Release/map -/Bin/Release/pdb -/Bin/Release/Project64.exe -/Bin/Release/Save -/Bin/Release/Screenshots -/Bin/Release/Setup Project64*.exe -/Bin/Release/SortRdb.exe -/Bin/Release/SyncPlugin +/Bin/Release /build /Config/Project64.cache3 /Config/Project64.cfg @@ -63,29 +15,20 @@ /Config/Project64.sc3 /Config/Project64.zcache /ipch -/Plugin/GFX/lib/PJ64Glide64.exp -/Plugin/GFX/lib/PJ64Glide64.lib -/Plugin/GFX/lib/PJ64Glide64_d.exp -/Plugin/GFX/lib/PJ64Glide64_d.lib -/Plugin/GFX/map/PJ64Glide64.map -/Plugin/GFX/map/PJ64Glide64_d.map -/Plugin/GFX/pdb/PJ64Glide64.pdb -/Plugin/GFX/pdb/PJ64Glide64_d.pdb +/Plugin/GFX/lib +/Plugin/GFX/map +/Plugin/GFX/pdb /Plugin/GFX/PJ64Glide64.dll /Plugin/GFX/PJ64Glide64_d.dll -/Plugin/Input/PJ64_NRage.dll -/Plugin/Input/PJ64_NRage_d.dll /Plugin/Input/lib /Plugin/Input/map /Plugin/Input/pdb +/Plugin/Input/PJ64_NRage.dll +/Plugin/Input/PJ64_NRage_d.dll /Plugin/RSP/lib /Plugin/RSP/map /Plugin/RSP/pdb /Plugin/RSP/RSP 1.7.dll /Plugin/RSP/RSP_d 1.7.dll -/Save /Source/3rd Party/wx/lib/vc_lib/mswu/wx/msw/rcdefs.h /Source/3rd Party/wx/lib/vc_lib/mswud/wx/msw/rcdefs.h -/Source/Glide64/Glide64.aps -/Source/Project64/User Interface/UI Resources.aps -/Textures diff --git a/Bin/Debug/pif2.dat b/Bin/Debug/pif2.dat deleted file mode 100644 index 78ccf364d..000000000 --- a/Bin/Debug/pif2.dat +++ /dev/null @@ -1,275 +0,0 @@ -; DO NOT EDIT THIS FILE -; File created by Tooie and Azimer - -; Jet Force Gemini -0x8FBB1DB876B63CEC, 0x025BEAEDEC803A6B, 0xDEB04FDB4CF76A13, 0x000B73E74AC64045 - -; Banjo Tooie -0x0004001000400000, 0x0200000000000001, 0xA862ECC671D39FBF, 0x00F9F9F9F9F9F9CB -0x0004001000400001, 0x0200001000400001, 0x71939FBF8C2AE6B4, 0x00171737C6A8EC76 -0x0004001000400002, 0x0200002000800001, 0xA862ECC671D399B9, 0x001717177171F9CB -0x0004001000400003, 0x0200003000C00001, 0x71939FBF8C2AC6BE, 0x005555558C2AEC76 -0x0004001000410004, 0x0200004000000001, 0xF91B1737E6B471B3, 0x00ECC6A8ECC66EFE -0x0004001000410005, 0x0200005000400001, 0xA862ECE69F2FC6B8, 0x00ECC6A81737F9CB -0x0004001000410006, 0x0200006000800001, 0x71939FBF8C5A37BD, 0x00C66E4EECE6EC76 -0x0004001000410007, 0x0200007000C00001, 0x8CCA6EEC9909A8B2, 0x00C66E4E17377163 -0x0004001000420008, 0x0200008000000001, 0xA862ECE69F5F17B7, 0x00717171F9F9F9CB -0x0004001000420009, 0x0200009000400001, 0xF91B1737C60E6EBC, 0x005555B5E6046EFE -0x000400100042000A, 0x020000A000800001, 0xA862ECE69F5F11B1, 0x009F9F9F7171F9CB -0x000400100042000B, 0x020000B000C00001, 0x55151111A8A2ECB6, 0x007171D38C2A8C5A -0x000400100043000C, 0x020000C000000001, 0xF91B1737C69855BB, 0x006E8C2AECC66EFE -0x000400100043000D, 0x020000D000400001, 0x4EE0C66E17A74EB0, 0x00ECC6A89FBF7163 -0x000400100043000E, 0x020000E000800001, 0xF91B1737C69855B5, 0x006E8C2A6E4E6EFE -0x000400100043000F, 0x020000F000C00001, 0x4EE0C66E17A78CBA, 0x006EECC617377163 -0x0004001100440010, 0x0200000000000001, 0x8CCA6E3CC62EE604, 0x0071717171717163 -0x0004001100440011, 0x0200001000400001, 0x5575716317D79909, 0x00171737C6A88C5A -0x0004001100440012, 0x0200002000800001, 0x8CCA6E3CC62EC60E, 0x009F9F9FF9F97163 -0x0004001100440013, 0x0200003000C00001, 0x37FDF9CB71B37103, 0x009F9FBF6E8C6E1C -0x0004001100450014, 0x0200004000000001, 0x37FDF9CB7123C608, 0x00ECC6A8ECC66E1C -0x0004001100450015, 0x0200005000400001, 0x8CCA6E3CC65E370D, 0x006E8C2A9FBF7163 -0x0004001100450016, 0x0200006000800001, 0x55757163370DA802, 0x00C66E4EECE68C5A -0x0004001100450017, 0x0200007000C00001, 0x8CCA6E3CC65E1707, 0x00C66E4E17377163 -0x0004001100460018, 0x0200008000000001, 0xA862EC16A8026E0C, 0x00717171F9F9F9CB -0x0004001100460019, 0x0200009000400001, 0x37FDF9CB71531101, 0x005555B5E6046E1C -0x000400110046001A, 0x020000A000800001, 0x4EE0E6B4ECA6EC06, 0x00171717F9F97163 -0x000400110046001B, 0x020000B000C00001, 0x557571631797550B, 0x007171D38C2A8C5A -0x000400110047001C, 0x020000C000000001, 0x55757143F9AB4E00, 0x00ECC6A8C66E8C5A -0x000400110047001D, 0x020000D000400001, 0x8CCA6E1C6E9C5505, 0x00ECC6A89FBF7163 -0x000400110047001E, 0x020000E000800001, 0x55757143F9AB8C0A, 0x006EECC6ECE68C5A -0x000400110047001F, 0x020000F000C00001, 0x4EE0E6B4ECD69F0F, 0x006EECC617377163 -0x0004001200480020, 0x0200000000000001, 0x4EE0C66811915555, 0x0071717171717163 -0x0004001200480021, 0x0200001000400001, 0x71939FBF4EA08C5A, 0x00171737C6A8EC76 -0x0004001200480022, 0x0200002000800001, 0x4EE0C648F9DB9F5F, 0x009F9F9FF9F97163 -0x0004001200480023, 0x0200003000C00001, 0x9959551BA822E654, 0x007171D3C6A8C69E -0x0004001200490024, 0x0200004000000001, 0x71939FBF4ED09959, 0x006E8C2AC66EEC76 -0x0004001200490025, 0x0200005000400001, 0x4EE0C6681727C65E, 0x006E8C2A9FBF7163 -0x0004001200490026, 0x0200006000800001, 0x557571116EBC7153, 0x00C66E4EECE68C5A -0x0004001200490027, 0x0200007000C00001, 0x4EE0C6681727C658, 0x00C66E4E17377163 -0x00040012004A0028, 0x0200008000000001, 0x4EE0C6681757375D, 0x00F9F9F971717163 -0x00040012004A0029, 0x0200009000400001, 0x379D99B9EC06A852, 0x005555B5E6046E1C -0x00040012004A002A, 0x020000A000800001, 0x4EE0C66817571757, 0x00171717F9F97163 -0x00040012004A002B, 0x020000B000C00001, 0x379D99B9EC066E5C, 0x001717376E8C6E1C -0x00040012004B002C, 0x020000C000000001, 0x557571116E5C1151, 0x00ECC6A8C66E8C5A -0x00040012004B002D, 0x020000D000400001, 0xA8624EE09FAFEC56, 0x006E8C2A1737F9CB -0x00040012004B002E, 0x020000E000800001, 0x71939FBF4E90555B, 0x006EECC6ECE6EC76 -0x00040012004B002F, 0x020000F000C00001, 0xA8624EE09FAF4E50, 0x00C66E4E9FBFF9CB -0x00040013004C0030, 0x0200000000000001, 0x4EE0C6BEEC26C6A8, 0x0071717171717163 -0x00040013004C0031, 0x0200001000400001, 0xF91B376D115137AD, 0x00171737E6046EFE -0x00040013004C0032, 0x0200002000800001, 0x4EE0E6B44E00A8A2, 0x009F9F9FF9F97163 -0x00040013004C0033, 0x0200003000C00001, 0xF91B376D115117A7, 0x009F9FBF6E8C6EFE -0x00040013004D0034, 0x0200004000000001, 0xF91B17A755056EAC, 0x00ECC6A8ECC66EFE -0x00040013004D0035, 0x0200005000400001, 0x4EE0E6B44EB071A1, 0x006E8C2A9FBF7163 -0x00040013004D0036, 0x0200006000800001, 0xF91B374DF9A9ECA6, 0x00ECC6A86E4E6EFE -0x00040013004D0037, 0x0200007000C00001, 0xA862EC36C638F9AB, 0x006EECC69FBFF9CB -0x00040013004E0038, 0x0200008000000001, 0xA862EC166EAE4EA0, 0x00717171F9F9F9CB -0x00040013004E0039, 0x0200009000400001, 0x995955E59F9F55A5, 0x001717378C2AC69E -0x00040013004E003A, 0x020000A000800001, 0xA862EC166EAE8CAA, 0x009F9F9F7171F9CB -0x00040013004E003B, 0x020000B000C00001, 0xF91B374DF9D99FAF, 0x001717376E8C6EFE -0x00040013004F003C, 0x020000C000000001, 0xF91B17A75525E6A4, 0x006E8C2AECC66EFE -0x00040013004F003D, 0x020000D000400001, 0xA8624E10A832F9A9, 0x006E8C2A1737F9CB -0x00040013004F003E, 0x020000E000800001, 0x995955E59F0F6EAE, 0x00C66E4EC66EC69E -0x00040013004F003F, 0x020000F000C00001, 0x4EE0C6BE8CBA71A3, 0x006EECC617377163 -0x0005001400500040, 0x0200000000000001, 0xA8F2F91B6E8CF9F9, 0x00F9F9F9F9F9F9CB -0x0005001400500041, 0x0200001000400001, 0x9FCF6EAC55556EFE, 0x009F9FBF8C2AE694 -0x0005001400500042, 0x0200002000800001, 0xC65E553BE60471F3, 0x009F9F9FF9F971E1 -0x0005001400500043, 0x0200003000C00001, 0x17678CCA7171C6F8, 0x009F9FBF6E8C6E1C -0x0005001400510044, 0x0200004000000001, 0x9FCFA86237AD37FD, 0x00ECE6046EECE694 -0x0005001400510045, 0x0200005000400001, 0x8C7A71B38C5AA8F2, 0x006E8C2A9FBF7163 -0x0005001400510046, 0x0200006000800001, 0x9FCFA86237AD17F7, 0x006EECC6C66EE694 -0x0005001400510047, 0x0200007000C00001, 0x8C7A71B38C5A6EFC, 0x00C66E4E17377163 -0x0005001400520048, 0x0200008000000001, 0xC65E553BC60E71F1, 0x00F9F9F9717171E1 -0x0005001400520049, 0x0200009000400001, 0x17678CCA71F3ECF6, 0x005555B5E6046E1C -0x000500140052004A, 0x020000A000800001, 0x8C7A71B3EC86F9FB, 0x00171717F9F97163 -0x000500140052004B, 0x020000B000C00001, 0x17678CCA71F34EF0, 0x001717376E8C6E1C -0x000500140053004C, 0x020000C000000001, 0x9FCFA842F9EB55F5, 0x00C66E8C6EECE694 -0x000500140053004D, 0x020000D000400001, 0xC65E553BC6F88CFA, 0x00ECC6A89FBF71E1 -0x000500140053004E, 0x020000E000800001, 0x17674EE099299FFF, 0x006E8C2A6E4E6E1C -0x000500140053004F, 0x020000F000C00001, 0xA8F2F9B94E70E6F4, 0x00C66E4E9FBFF9CB -0x0005001500540050, 0x0200000000000001, 0xC65E55E599596E4E, 0x00717171717171E1 -0x0005001500540051, 0x0200001000400001, 0x17674E30C6087143, 0x00171737E6046E1C -0x0005001500540052, 0x0200002000800001, 0x8C7A71A15575C648, 0x009F9F9Ff9f97163 -0x0005001500540053, 0x0200003000C00001, 0x17674E106EAC374D, 0x009F9FBF6E8C6E1C -0x0005001500550054, 0x0200004000000001, 0x17674E30C65EA842, 0x00ECC6A8ECC66E1C -0x0005001500550055, 0x0200005000400001, 0xC6989FCF71A11747, 0x006E8C2A9FBF71E1 -0x0005001500550056, 0x0200006000800001, 0x17674E30C65E6E4C, 0x00ECC6A86E4E6E1C -0x0005001500550057, 0x0200007000C00001, 0x4E101767370D7141, 0x00C66E4E17377163 -0x0005001500560058, 0x0200008000000001, 0x4E10176717F7EC46, 0x00F9F9F971717163 -0x0005001500560059, 0x0200009000400001, 0x55E5C6B88C8AF94B, 0x005555B5C6A88C5A -0x000500150056005A, 0x020000A000800001, 0x4E10176717F74E40, 0x00171717F9F97163 -0x000500150056005B, 0x020000B000C00001, 0x55E5C6B88CEA5545, 0x007171D38C2A8C5A -0x000500150057005C, 0x020000C000000001, 0x17674E106EFC8C4A, 0x006E8C2AECC66E1C -0x000500150057005D, 0x020000D000400001, 0x4E101767372D9F4F, 0x00ECC6A89FBF7163 -0x000500150057005E, 0x020000E000800001, 0x17674E30E674E644, 0x006E8C2A6E4E6E1C -0x000500150057005F, 0x020000F000C00001, 0xC6989FEF9F8FF949, 0x006EECC6173771E1 -0x0005001600580060, 0x0200000000000001, 0xC6989F1FA8229F9F, 0x00717171717171E1 -0x0005001600580061, 0x0200001000400001, 0x9FCF6E4CF979E694, 0x009F9FBF8C2AE694 -0x0005001600580062, 0x0200002000800001, 0xC65E5535E684F999, 0x009F9F9FF9F971E1 -0x0005001600580063, 0x0200003000C00001, 0x9FCF6E6C375D6E9E, 0x007171D3C6A8E694 -0x0005001600590064, 0x0200004000000001, 0x9FCF6E6C11017193, 0x00ECE6046EECE694 -0x0005001600590065, 0x0200005000400001, 0xC65E55156E7EC698, 0x006E8C2A9FBF71E1 -0x0005001600590066, 0x0200006000800001, 0x1767ECA655A5379D, 0x00ECC6A86E4E6E1C -0x0005001600590067, 0x0200007000C00001, 0xC6989F1FA852A892, 0x00C66E4E173771E1 -0x00050016005A0068, 0x0200008000000001, 0x4E1037BD8CAA1797, 0x00F9F9F971717163 -0x00050016005A0069, 0x0200009000400001, 0x9FCF6E6C17576E9C, 0x001717378C2AE694 -0x00050016005A006A, 0x020000A000800001, 0x4E1037BDEC067191, 0x00171717F9F97163 -0x00050016005A006B, 0x020000B000C00001, 0x9FCF6E4CF9FBEC96, 0x00555555C6A8E694 -0x00050016005B006C, 0x020000C000000001, 0x55E5E6C47183F99B, 0x00ECC6A8C66E8C5A -0x00050016005B006D, 0x020000D000400001, 0x8C7A71B34EF04E90, 0x00ECC6A89FBF7163 -0x00050016005B006E, 0x020000E000800001, 0x55E5E6C471E35595, 0x006EECC6ECE68C5A -0x00050016005B006F, 0x020000F000C00001, 0x8C7A71B34EF08C9A, 0x006EECC617377163 -0x00050017005C0070, 0x0200000000000001, 0xA8F2F9AB55F5ECE6, 0x00F9F9F9F9F9F9CB -0x00050017005C0071, 0x0200001000400001, 0x17678C3AC6E855EB, 0x00171737E6046E1C -0x00050017005C0072, 0x0200002000800001, 0xA8F2F9AB55F54EE0, 0x001717177171F9CB -0x00050017005C0073, 0x0200003000C00001, 0x17678C3AC6E855E5, 0x009F9FBF6E8C6E1C -0x00050017005D0074, 0x0200004000000001, 0x9FCFA8B28CFA8CEA, 0x00ECE6046EECE694 -0x00050017005D0075, 0x0200005000400001, 0xA8F2F9AB552B9FEF, 0x00ECC6A81737F9CB -0x00050017005D0076, 0x0200006000800001, 0x55E5E614A872E6E4, 0x00C66E4EECE68C5A -0x00050017005D0077, 0x0200007000C00001, 0xA8F2F9AB552B99E9, 0x006EECC69FBFF9CB -0x00050017005E0078, 0x0200008000000001, 0x8C1A11611777C6EE, 0x00F9F9F971717163 -0x00050017005E0079, 0x0200009000400001, 0x9FCFA8B28C0A71E3, 0x001717378C2AE694 -0x00050017005E007A, 0x020000A000800001, 0x8C1A11611777C6E8, 0x00171717F9F97163 -0x00050017005E007B, 0x020000B000C00001, 0x17678C1A6EAE37ED, 0x001717376E8C6E1C -0x00050017005F007C, 0x020000C000000001, 0x55E5C6B84E50A8E2, 0x00ECC6A8C66E8C5A -0x00050017005F007D, 0x020000D000400001, 0xA8F2F9C971A317E7, 0x006E8C2A1737F9CB -0x00050017005F007E, 0x020000E000800001, 0x55E5C6B84E506EEC, 0x006EECC6ECE68C5A -0x00050017005F007F, 0x020000F000C00001, 0xABF2F9C971A311E1, 0x00C66E4E9FBFF9CB -0x0006001800600080, 0x0200000000000001, 0x6E6CEC46F9F91737, 0x00F9F9F9F9F9F9CB -0x0006001800600081, 0x0200001000400001, 0x379D9F3FC6A86E3C, 0x00171737E6046E1C -0x0006001800600082, 0x0200002000800001, 0x6E6CEC46F9F91131, 0x001717177171F9CB -0x0006001800600083, 0x0200003000C00001, 0x379D9F1F6E4EEC36, 0x009F9FBF6E8C6E1C -0x0006001800610084, 0x0200004000000001, 0x379D9F1F6E3C553B, 0x00ECC6A8ECC66E1C -0x0006001800610085, 0x0200005000400001, 0xE6C46ECE71434E30, 0x006E8C2A9FBF71E1 -0x0006001800610086, 0x0200006000800001, 0x379D9F1F6E3C5535, 0x00ECC6A86E4E6E1C -0x0006001800610087, 0x0200007000C00001, 0xE6C46ECE71438C3A, 0x00C66E4E173771E1 -0x0006001800620088, 0x0200008000000001, 0x6E6CEC46F97B9F3F, 0x00717171F9F9F9CB -0x0006001800620089, 0x0200009000400001, 0x551537BD4EC0E634, 0x005555B5C6A88C5A -0x000600180062008A, 0x020000A000800001, 0x6E6CEC46F97B9939, 0x009F9F9F7171F9CB -0x000600180062008B, 0x020000B000C00001, 0x551537BD4EC0C63E, 0x007171D38C2A8C5A -0x000600180063008C, 0x020000C000000001, 0x379D9F3FE6547133, 0x006E8C2AECC66E1C -0x000600180063008D, 0x020000D000400001, 0x6E6C4EA055C5C638, 0x006E8C2A1737F9CB -0x000600180063008E, 0x020000E000800001, 0x379D9F3FC6F8373D, 0x006E8C2A6E4E6E1C -0x000600180063008F, 0x020000F000C00001, 0x6E6CEC6617A7A832, 0x00C66E4E9FBFF9CB -0x0006001900640090, 0x0200000000000001, 0x8CEAE6146EAC6E8C, 0x0071717171717163 -0x0006001900640091, 0x0200001000400001, 0x7153556B37FD1181, 0x00171737C6A8EC76 -0x0006001900640092, 0x0200002000800001, 0x8CEAC61EA842EC86, 0x009F9F9FF9F97163 -0x0006001900640093, 0x0200003000C00001, 0x715355A5553B558B, 0x005555558C2AEC76 -0x0006001900650094, 0x0200004000000001, 0x7153556B17474E80, 0x006E8C2AC66EEC76 -0x0006001900650095, 0x0200005000400001, 0xE6C4A8B24E305585, 0x006E8C2A9FBF71E1 -0x0006001900650096, 0x0200006000800001, 0x7153556B17478C8A, 0x00C66E4EECE6EC76 -0x0006001900650097, 0x0200007000C00001, 0xE6C46EBC8C7A9F8F, 0x00C66E4E173771E1 -0x0006001900660098, 0x0200008000000001, 0x8CEAE634E6C4E684, 0x00F9F9F971717163 -0x0006001900660099, 0x0200009000400001, 0x9F7F71E39F7F9989, 0x001717378C2AE694 -0x000600190066009A, 0x020000A000800001, 0x8CEAE634E6C4C68E, 0x00171717F9F97163 -0x000600190066009B, 0x020000B000C00001, 0x9F7F71C371537183, 0x00555555C6A8E694 -0x000600190067009C, 0x020000C000000001, 0x17F7F94BF9C9C688, 0x006E8C2AECC66E1C -0x000600190067009D, 0x020000D000400001, 0x8CEAE6146EFC378D, 0x00ECC6A89FBF7163 -0x000600190067009E, 0x020000E000800001, 0x17F7F94BF9ABA882, 0x006E8C2A6E4E6E1C -0x000600190067009F, 0x020000F000C00001, 0x8CEAE6146EFC1787, 0x006EECC617377163 -0x0002000A002800A0, 0x0200000000000000, 0xF97B71919F1F71D3, 0x00F9F9F9F9F9F9F9 -0x0002000A002800A1, 0x0200001000400000, 0x4EC06EEEE684C6D8, 0x009F9FBF8C2AC66E -0x0002000A002800A2, 0x0200002000800000, 0x71F3F91917B737DD, 0x009F9F9FF9F97171 -0x0002000A002800A3, 0x0200003000C00000, 0xC6684E60EC66A8D2, 0x009F9FBF6E8C6EEC -0x0002000A002900A4, 0x0200004000000000, 0xECE6C6C86EBC17D7, 0x00ECE6046EECC66E -0x0002000A002900A5, 0x0200005000400000, 0x71111757556B6EDC, 0x006E8C2A9FBF7171 -0x0002000A002900A6, 0x0200006000800000, 0x4EC06EEEE61471D1, 0x006EECC6C66EC66E -0x0002000A002900A7, 0x0200007000C00000, 0xF97B71131101ECD6, 0x006EECC69FBFF9F9 -0x0002000A002A00A8, 0x0200008000000000, 0xF97B71737191F9DB, 0x00717171F9F9F9F9 -0x0002000A002A00A9, 0x0200009000400000, 0xC6684E60EC064ED0, 0x005555B5E6046EEC -0x0002000A002A00AA, 0x020000A000800000, 0x71F3F9FBF9FB55D5, 0x00171717F9F97171 -0x0002000A002A00AB, 0x020000B000C00000, 0xC6684E60EC068CDA, 0x001717376E8C6EEC -0x0002000A002B00AC, 0x020000C000000000, 0x4EC06EEEC63E9FDF, 0x00C66E8C6EECC66E -0x0002000A002B00AD, 0x020000D000400000, 0xF97B71737183E6D4, 0x006E8C2A1737F9F9 -0x0002000A002B00AE, 0x020000E000800000, 0xC6684E60EC96F9D9, 0x006E8C2A6E4E6EEC -0x0002000A002B00AF, 0x020000F000C00000, 0x7111175755656EDE, 0x006EECC617377171 -0x0002000B002C00B0, 0x0200000000000000, 0x9F5F55654E008C2A, 0x009F9F9F9F9F9F9F -0x0002000B002C00B1, 0x0200001000400000, 0xECE6C67871339F2F, 0x009F9FBF8C2AC66E -0x0002000B002C00B2, 0x0200002000800000, 0xF97B71E3C688E624, 0x991717177171F9F9 -0x0002000B002C00B3, 0x0200003000C00000, 0xECE6C67871339929, 0x007171D3C6A8C66E -0x0002000B002D00B4, 0x0200004000000000, 0x4EC06E1E378DC62E, 0x00ECE6046EECC66E -0x0002000B002D00B5, 0x0200005000400000, 0xF97B71E3C6187123, 0x00ECC6A81737F9F9 -0x0002000B002D00B6, 0x0200006000800000, 0x4EC06E1E378DC628, 0x006EECC6C66EC66E -0x0002000B002D00B7, 0x0200007000C00000, 0x9F5F55654EB0372D, 0x00C66E8C55559F9F -0x0002000B002E00B8, 0x0200008000000000, 0xF97B71E3E664A822, 0x00717171F9F9F9F9 -0x0002000B002E00B9, 0x0200009000400000, 0x4EC06E5C55B51727, 0x001717378C2AC66E -0x0002000B002E00BA, 0x020000A000800000, 0xF97B71E3E6646E2C, 0x009F9F9F7171F9F9 -0x0002000B002E00BB, 0x020000B000C00000, 0xC6684EF0F9BB1121, 0x001717376E8C6EEC -0x0002000B002F00BC, 0x020000C000000000, 0xC668EC969F0FEC26, 0x006E8C2AECC66EEC -0x0002000B002F00BD, 0x020000D000400000, 0xF97B71E3E6F4552B, 0x006E8C2A1737F9F9 -0x0002000B002F00BE, 0x020000E000800000, 0xC668EC969F0F4E20, 0x006E8C2A6E4E6EEC -0x0002000B002F00BF, 0x020000F000C00000, 0xF97B71E3E6F45525, 0x00C66E4E9FBFF9F9 -0x0003000C003000C0, 0x0200000000000000, 0xF9EBC6E8C66E7171, 0x00F9F9F9F9F9F9F9 -0x0003000C003000C1, 0x0200001000400000, 0x4E1011515555EC76, 0x009F9FBF8C2AC66E -0x0003000C003000C2, 0x0200002000800000, 0x376D8C6AECE6F97B, 0x001717379F9F1717 -0x0003000C003000C3, 0x0200003000C00000, 0x4E10115155554E70, 0x007171D3C6A8C66E -0x0003000C003100C4, 0x0200004000000000, 0xEC16377D71435575, 0x00ECE6046EECC66E -0x0003000C003100C5, 0x0200005000400000, 0x376D8C6A8C5A8C7A, 0x00C66EEC55551717 -0x0003000C003100C6, 0x0200006000800000, 0xEC16371D11819F7F, 0x006EECC6C66EC66E -0x0003000C003100C7, 0x0200007000C00000, 0xF9EBC6E8C6D8E674, 0x006EECC69FBFF9F9 -0x0003000C003200C8, 0x0200008000000000, 0x376D8C6A4EE0F979, 0x009F9F9F17171717 -0x0003000C003200C9, 0x0200009000400000, 0xE654559599B96E7E, 0x005555B5E6046EEC -0x0003000C003200CA, 0x020000A000800000, 0xF9EBC6E8C6687173, 0x009F9F9F7171F9F9 -0x0003000C003200CB, 0x020000B000C00000, 0x4E70711337DDC678, 0x00555555C6A8C66E -0x0003000C003300CC, 0x020000C000000000, 0xEC16377D7103377D, 0x00C66E8C6EECC66E -0x0003000C003300CD, 0x020000D000400000, 0xF9EBC6E8E6B4A872, 0x006E8C2A1737F9F9 -0x0003000C003300CE, 0x020000E000800000, 0xEC16377D71031777, 0x00C66E4EC66EC66E -0x0003000C003300CF, 0x020000F000C00000, 0xF9EBC6E8C6BE6E7C, 0x00C66E4E9FBFF9F9 -0x0003000D003400D0, 0x0200000000000000, 0x376D8C9A9959ECC6, 0x0017171717171717 -0x0003000D003400D1, 0x0200001000400000, 0x6E9E9F6F8CEAF9CB, 0x00171737C6A8ECC6 -0x0003000D003400D2, 0x0200002000800000, 0x376D8C9A99594EC0, 0x001717379F9F1717 -0x0003000D003400D3, 0x0200003000C00000, 0xEC1617C7A84255C5, 0x007171D3C6A8C66E -0x0003000D003500D4, 0x0200004000000000, 0xEC1637EDC65E8CCA, 0x00ECE6046EECC66E -0x0003000D003500D5, 0x0200005000400000, 0x376DEC5655859FCF, 0x00C66EEC55551717 -0x0003000D003500D6, 0x0200006000800000, 0xEC1617C76EDCE6C4, 0x006EECC6C66EC66E -0x0003000D003500D7, 0x0200007000C00000, 0x376D4E909FEFF9C9, 0x00ECC6A871D31717 -0x0003000D003600D8, 0x0200008000000000, 0xF9EBC61837BD6ECE, 0x00717171F9F9F9F9 -0x0003000D003600D9, 0x0200009000400000, 0xEC1617C76E6C71C3, 0x001717378C2AC66E -0x0003000D003600DA, 0x020000A000800000, 0x55C5A87271D1C6C8, 0x009F9F9F71D35555 -0x0003000D003600DB, 0x020000B000C00000, 0xEC1617C7A80237CD, 0x00555555C6A8C66E -0x0003000D003700DC, 0x020000C000000000, 0xEC1637EDC6B8A8C2, 0x00C66E8C6EECC66E -0x0003000D003700DD, 0x020000D000400000, 0xF9EBC618170717C7, 0x006E8C2A1737F9F9 -0x0003000D003700DE, 0x020000E000800000, 0xEC1617C7A8B26ECC, 0x00C66E4EC66EC66E -0x0003000D003700DF, 0x020000F000C00000, 0x55C5A812116171C1, 0x006EECC611115555 -0x0003000E003800E0, 0x0200000000000000, 0x55C56ECC6E0C1717, 0x0055555555555555 -0x0003000E003800E1, 0x0200001000400000, 0xEC16371D17B76E1C, 0x009F9FBF8C2AC66E -0x0003000E003800E2, 0x0200002000800000, 0xF9EBE664EC667111, 0x001717177171F9F9 -0x0003000E003800E3, 0x0200003000C00000, 0xEC16371D375DEC16, 0x007171D3C6A8C66E -0x0003000E003900E4, 0x0200004000000000, 0xEC16177771E3F91B, 0x00ECE6046EECC66E -0x0003000E003900E5, 0x0200005000400000, 0x55C56ECCA8524E10, 0x006E8C2A99995555 -0x0003000E003900E6, 0x0200006000800000, 0x6E9E9FFFF94B5515, 0x00C66E4EECE6ECC6 -0x0003000E003900E7, 0x0200007000C00000, 0x55C56ECCA8528C1A, 0x00C66E4E11115555 -0x0003000E003A00E8, 0x0200008000000000, 0x55C5A8E2C68E9F1F, 0x007171D355555555 -0x0003000E003A00E9, 0x0200009000400000, 0xE654555B55D5E614, 0x005555B5E6046EEC -0x0003000E003A00EA, 0x020000A000800000, 0x55C5A8E2C6E8F919, 0x009F9F9F71D35555 -0x0003000E003A00EB, 0x020000B000C00000, 0xEC16171711B16E1E, 0x00555555C6A8C66E -0x0003000E003B00EC, 0x020000C000000000, 0xE654555B55657113, 0x006E8C2AECC66EEC -0x0003000E003B00ED, 0x020000D000400000, 0xF9EBE6648CDAC618, 0x006E8C2A1737F9F9 -0x0003000E003B00EE, 0x020000E000800000, 0xE654555B550B371D, 0x006E8C2A6E4E6EEC -0x0003000E003B00EF, 0x020000F000C00000, 0x55C56ECC6EBCA812, 0x006EECC611115555 -0x0003000F003C00F0, 0x0200000000000000, 0x376D8C9A9FDFC66E, 0x0017171717171717 -0x0003000F003C00F1, 0x0200001000400000, 0xC69899698C6A7163, 0x00171737E6046EEC -0x0003000F003C00F2, 0x0200002000800000, 0x376D8C9A9FDFC668, 0x001717379F9F1717 -0x0003000F003C00F3, 0x0200003000C00000, 0xC69899694E00376D, 0x009F9FBF6E8C6EEC -0x0003000F003D00F4, 0x0200004000000000, 0xC6989969ECB6A862, 0x00ECC6A8ECC66EEC -0x0003000F003D00F5, 0x0200005000400000, 0x376D4E5055051767, 0x00C66EEC55551717 -0x0003000F003D00F6, 0x0200006000800000, 0xC69899694EB06E6C, 0x00ECC6A86E4E6EEC -0x0003000F003D00F7, 0x0200007000C00000, 0x376D4E5055051161, 0x00ECC6A871D31717 -0x0003000F003E00F8, 0x0200008000000000, 0x376D4E50555BEC66, 0x009F9F9F17171717 -0x0003000F003E00F9, 0x0200009000400000, 0xEC1617E7E644556B, 0x001717378C2AC66E -0x0003000F003E00FA, 0x020000A000800000, 0x376D4E50555B4E60, 0x009F9FBF9F9F1717 -0x0003000F003E00FB, 0x020000B000C00000, 0xEC1617E7E6445565, 0x00555555C6A8C66E -0x0003000F003F00FC, 0x020000C000000000, 0xC69899694E508C6A, 0x006E8C2AECC66EEC -0x0003000F003F00FD, 0x020000D000400000, 0x55C5A81217879F6F, 0x00ECC6A899995555 -0x0003000F003F00FE, 0x020000E000800000, 0x4E7071C16EDEE664, 0x00C66E4EC66EC66E -0x0003000F003F00FF, 0x020000F000C00000, 0x55C5A81217879969, 0x006EECC611115555 - -0x0006001A006800A0, 0x0200000000000001, 0x6E6C4E60375D71D3, 0x00F9F9F9F9F9F9CB -0x0006001A006800A1, 0x0200001000400001, 0x17F7F9196ECEC6D8, 0x00171737E6046E1C -0x0006001A006800A2, 0x0200002000800001, 0x8CEAC6C871F137DD, 0x009F9F9FF9F97163 -0x0006001A006800A3, 0x0200003000C00001, 0x551517B74EA0A8D2, 0x005555558C2A8C5A -0x0006001A006900A4, 0x0200004000000001, 0x9F1F11B1ECF617D7, 0x00ECE6046EECE694 -0x0006001A006900A5, 0x0200005000400001, 0x6E6C8CAA55A56EDC, 0x00ECC6A81737F9CB -0x0006001A006900A6, 0x0200006000800001, 0x9F7F7113A85271D1, 0x006EECC6C66EE694 -0x0006001A006900A7, 0x0200007000C00001, 0x6E6C4E40F94BECD6, 0x006EECC69FBFF9CB -0x0006001A006A00A8, 0x0200008000000001, 0x6E6C8CAA55D5F9DB, 0x00717171F9F9F9CB -0x0006001A006A00A9, 0x0200009000400001, 0x551517B74E404ED0, 0x005555B5C6A88C5A -0x0006001A006A00AA, 0x020000A000800001, 0xE6C46EEE993955D5, 0x00171717F9F971E1 diff --git a/Bin/Debug/pifdata.bin b/Bin/Debug/pifdata.bin deleted file mode 100644 index 58ed067ff..000000000 Binary files a/Bin/Debug/pifdata.bin and /dev/null differ diff --git a/Bin/Release/Docs/3rd Party Plugins/Adaptoid.txt b/Bin/Release/Docs/3rd Party Plugins/Adaptoid.txt deleted file mode 100644 index d1e09edc5..000000000 --- a/Bin/Release/Docs/3rd Party Plugins/Adaptoid.txt +++ /dev/null @@ -1,7 +0,0 @@ -This plugin requires: - -- 1-4 genine Adaptoid(s) hardware accessories by Wishtech, http://www.wishtech.com -- real N64 hardware accessories ('Paks') -- the Wishtech drivers installed - standard Microsoft USB drivers are not adequate. - -You do not _have_ to use this plugin if you have an Adaptoid, you can use any input plugin. diff --git a/Bin/Release/Docs/3rd Party Plugins/N-Rage - Readme.txt b/Bin/Release/Docs/3rd Party Plugins/N-Rage - Readme.txt deleted file mode 100644 index 98fafa4ae..000000000 --- a/Bin/Release/Docs/3rd Party Plugins/N-Rage - Readme.txt +++ /dev/null @@ -1,92 +0,0 @@ -N-Rage's Input Plugin -Release Version 1.82a - -Disclaimer: - Im not responsible for any Damage caused by this Programm! - This Programm is Freeware, its freely distributable, but it must be distributed as whole unmodified Zip-Archive. - U aren't allowed to earn money by distributing it. - -The use of this Plugin - This Plugin is for use with a N64-Emulator that supports InputPlugins and Zilmars Spec. - Some Emulators that support it are: Project64, Apollo, 1964, TR64 - -Main Features - Up to four Players - Up to four GamePads, 1 Keyboard and 1 Mouse can be handled at once - Full support of Buttons, POVs, Sliders, Axes, Mouse, Keyboard - Emulating Mem-Paks and Rumble-Paks(via ForceFeedBack) - Direct Adaptoid Support - up to 256 Configurable Modifiers, with 3 different Types - System-independent Controller-Profiles - This Plugin is compatible to Zilmar's Input-Plugin Specs 1.0 and will work with all Emulators that support this Spec - -Requirements: - A computer with Windows & DirectX8.0 or higher installed. - A Emulator wouldnt be a bad thing too. - -Thanks go out to - Azimer for his help with MemPaks - Zilmar & Jabo for their awesome Project64. - Smiff, Bodie, Cyber, Hotshitu, Gannonboy for testing. - MadManMark for adding Transferpaks - -Known Issues: - Old Profiles wont work, this is by purpose. - -#---------------------------------------------------------------------# -History: - -Release 1.82a: -Fixed: Correct handling POV Controls again.. DOH - -Release 1.82: -Added: Transferpak-Emulation - done by MadManMark, so hes the one to thank for this. -Changed: Various cleanups&optimizations, recompiled with VC++ 7.0 - -Release 1.81a: - Fixed a bug introduced by the last version. - -Release 1.81: -Added: Default Profile & default Shortcuts. -Changed: can now open read-only Files, some old & unecessary checks removed - Interface tweaked a bit. - -Release 1.80: -Fixed: another Access Violation, crash within Rumble emulation -Added: MouseLock Shortcut -Changed: Code-Cleanups, "save" and "use" Buttons instead of "Ok" - -Beta 1.79: -Fixed: Access Violations -Added: saving/loading Profiles, visual Rumble, DexDrive support - -Beta 1.78: -Added: MemPak Manager Functions, 2 switchable Analog Stick settings, Config Modifier, absolute KeyBoard setting -Changed: KeyBoard & Mouse Handling - -Beta 1.76: -Only a small Part is based on older Plugins, new gui, new features. -New: Direct Adaptoid support, up to 256 Modifiers, different Rumble settings, Shortcuts -Missing: saving/loading Profiles, Config Modifier, alternate Controlset -Changed: about everything else ;) - -Release 1.61: -Fixed: a small MemPak issue( Perfect Dark ) - -Release 1.60: -Fixed: crashes in Config-Dialog, crashes when a used GamePad isnt available, Toggle-Modifiers now get reset each time a rom is loaded or the configuration changed, now games that reported "no Controller" in RAW Mode will work, multiple Controllers of the same name now get enumerated and detected right. -Changes: Mouse-Axis can now be assigned by moving it. Now all Devices are scaned at once in Config-Window. "Default Axe-Movement" is now replaced by "Default Analog-Stick Range", which means it sets maximum range of the virtual Stick. -Added seperate X/Y Modes for Mouse - -Beta 1.53: Fixed yet more Bugs. Changed Profile-Format, old Profiles wont work( The new Format leaves some Space for future Functions, so they should stay compatible now) -Beta 1.52: Fixed a bunch of bugs, some cleanups, gave the Status-Line a life. -Beta 1.51: Fixed Issues when more than one Pak is used. MemPak is workin now( was alot easier than i thought ). RAW-Handling tweaked. -Beta 1.50b: Finally fixed Rumble Issues, with feedback from bodie & hotshi again. -Beta 1.50: Added Rapid-Fire for Macro-Modifiers, seperate option for negating X/Y Axis. Rumble doesnt works with all gamepads, no clue why not. Thanx to bodie, cyber and hotshitu who gave me allota feedback about Rumble. -Beta 1.49b-d: small Bugfixes, tried to get Rumble working on all GamePads. -Beta 1.49a: fixed some Controllers(including Adaptoid) not working ingame & hopefully the Controllers that dint Rumble -Beta 1.49: some Bugfixes with POV and RRRRRumble is working now! -Beta 1.48: Configuration Routines written from scratch, extended Modifiers, much better Mouse Support, tweaked the whole Code. Almost a new Plugin ;) - -Beta 1.42: This was the last Release before i rewritten the Configuration Stuff, I dint kept track of the Versions before 1.48, many of em were just internal Releases. And I totally messed it up with the Versions-Numbers anyway. - diff --git a/Bin/Release/Docs/Cheat - Changes.txt b/Bin/Release/Docs/Cheat - Changes.txt deleted file mode 100644 index a5c3a5ab5..000000000 --- a/Bin/Release/Docs/Cheat - Changes.txt +++ /dev/null @@ -1,40 +0,0 @@ -Project64 1.6 Official Cheats Database (Project64.cht) -From The emu64cheats authors - - ------Version=1.6 Official Cheat Changes - 1st April 2005----- - - -So what has changed on the Cheats front ? -Have a look at the Project64.chm Cheat Help Section or for online http://www.pj64cheats.net -This will walk you through all the do's & Don'ts' of adding, Using, -Including a handy Cheats FAQ! - -Added & Improved Cheat Codes Support for following the Regions.: - -(J) = Japan -(U) = USA -(E) = Europe -(A) = Australia -(F) = France -(G) = Germany -(I) = Italy -(S) = Spain - - -If you experience any problems when using these cheats in pj64 -just refer to the mentioned cheats.chm this should help you with all you need to know. -If you have a problem that is not covered on the site -then we also have a pj64cheats Message Board on emutalk.net - -If you are not a member on emutalk.net we suggest you become one -so you can have your say and be upto date on the pj64cheats progression. - -Thank You for your help & support. - -For a full Listing of Games supported with Cheats: -have a look at the "Cheats In Cheat Support" Section of the Cheat Help Section -or The Supported link on the Project64 Cheats Website. - -All The best -Gent \ No newline at end of file diff --git a/Bin/Release/Docs/Cheat - Readme.txt b/Bin/Release/Docs/Cheat - Readme.txt deleted file mode 100644 index 9baea887f..000000000 --- a/Bin/Release/Docs/Cheat - Readme.txt +++ /dev/null @@ -1,59 +0,0 @@ -Project64 Official Cheats Database (Project64.cht) README -From Gent - -Maximize this window if you are having trouble viewing it. - -Table Of Contents - I. Introduction - II. Installation - III. Contacting The Authors - - - -I. Introduction - -Welcome to the Official Project64 Cheat Database. This database contains a listing of -pre-formatted GameShark and Pro-Action Replay cheat codes for use with Project 64. Due to -new developments in the cheat system of Project 64, the files accompanied with this file -will no longer be compatible with versions of PJ64 prior to v1.5 For personal notes from -the authors please read the appropriate files that come with this database. - - - -II. Installation - -Installation is an easy task. Simply extract the contents of this archive to the Project 64 -software's directory. This archive should contain the following files: - - \Project64.cht - The actual cheats database file - \Docs\Cheat Codes\Readme.txt - This readme file - \Docs\Cheat Codes\Changes.txt - Changes made since the previous version - - -III. Contacting The Authors - -You can get in touch with us On the PJ64 Cheats Board in the Project64 section of emutalk.net -If you wish to Post a question that is unanswered on the official pj64cheats site -http://www.pj64cheats.net Or the Manual supplied with the pj64 package. - -Please read the following before contacting us. - -Reasons to Contact Us: - -1. To notify us of a code(s) that are not producing the desired effect. NOTE: Check to see - that you are using a GoodN64 approved rom before contacting us. -2. To send a code not in the database have for a game currently in the database. Please test - all codes before sending them with GoodN4 approved roms. - -Reasons NOT to Contact Us: - -1. To request a code that produce a desired effect for a game. -2. To send us a code(s) for games not supported by pj64. -3. To ask us how to fix a game or get it to work on pj64. - -NOTE: It is not appropriate to post lists of cheat codes to add to the cheat database as a - thread on the pj64cheats message forum. The forum can be used to inform others as - well as the cheat code authors about codes that do not work or to gain help using - the cheat codes. Do not e-mail the emu64 cheats authors about problems that - you find in the cheats database, instead contact us and we will - attempt to correct them. \ No newline at end of file diff --git a/Bin/Release/Docs/GameFAQ - WhatsNew.txt b/Bin/Release/Docs/GameFAQ - WhatsNew.txt deleted file mode 100644 index e3f6ea636..000000000 --- a/Bin/Release/Docs/GameFAQ - WhatsNew.txt +++ /dev/null @@ -1,10 +0,0 @@ - -Game FAQ (PJgameFAQ.chm) v1.6 (1st April 2005) - -Many thanks to Clements and the Emutalk Members for thier input and work that Contributed to the updating of the Project64 Game FAQ. - - -Thanks for reading, -Project64 team - -//EOF \ No newline at end of file diff --git a/Bin/Release/Docs/Plugin Specs/Audio #1.1.h b/Bin/Release/Docs/Plugin Specs/Audio #1.1.h deleted file mode 100644 index b43b4757f..000000000 --- a/Bin/Release/Docs/Plugin Specs/Audio #1.1.h +++ /dev/null @@ -1,202 +0,0 @@ -/********************************************************************************** -Common Audio plugin spec, version #1.1 maintained by zilmar (zilmar@emulation64.com) - -All questions or suggestions should go through the mailing list. -http://www.egroups.com/group/Plugin64-Dev -********************************************************************************** -Notes: ------- - -Setting the approprate bits in the MI_INTR_REG and calling CheckInterrupts which -are both passed to the DLL in InitiateAudio will generate an Interrupt from with in -the plugin. - -**********************************************************************************/ -#ifndef _AUDIO_H_INCLUDED__ -#define _AUDIO_H_INCLUDED__ - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Note: BOOL, BYTE, WORD, DWORD, TRUE, FALSE are defined in windows.h */ - -#define PLUGIN_TYPE_AUDIO 3 - -#define EXPORT __declspec(dllexport) -#define CALL _cdecl - -#define SYSTEM_NTSC 0 -#define SYSTEM_PAL 1 -#define SYSTEM_MPAL 2 - -/***** Structures *****/ -typedef struct { - WORD Version; /* Should be set to 0x0101 */ - WORD Type; /* Set to PLUGIN_TYPE_AUDIO */ - char Name[100]; /* Name of the DLL */ - - /* If DLL supports memory these memory options then set them to TRUE or FALSE - if it does not support it */ - BOOL NormalMemory; /* a normal BYTE array */ - BOOL MemoryBswaped; /* a normal BYTE array where the memory has been pre - bswap on a dword (32 bits) boundry */ -} PLUGIN_INFO; - - -typedef struct { - HWND hwnd; - HINSTANCE hinst; - - BOOL MemoryBswaped; // If this is set to TRUE, then the memory has been pre - // bswap on a dword (32 bits) boundry - // eg. the first 8 bytes are stored like this: - // 4 3 2 1 8 7 6 5 - BYTE * HEADER; // This is the rom header (first 40h bytes of the rom - // This will be in the same memory format as the rest of the memory. - BYTE * RDRAM; - BYTE * DMEM; - BYTE * IMEM; - - DWORD * MI_INTR_REG; - - DWORD * AI_DRAM_ADDR_REG; - DWORD * AI_LEN_REG; - DWORD * AI_CONTROL_REG; - DWORD * AI_STATUS_REG; - DWORD * AI_DACRATE_REG; - DWORD * AI_BITRATE_REG; - - void (*CheckInterrupts)( void ); -} AUDIO_INFO; - -/****************************************************************** - Function: AiDacrateChanged - Purpose: This function is called to notify the dll that the - AiDacrate registers value has been changed. - input: The System type: - SYSTEM_NTSC 0 - SYSTEM_PAL 1 - SYSTEM_MPAL 2 - output: none -*******************************************************************/ -EXPORT void CALL AiDacrateChanged (int SystemType); - -/****************************************************************** - Function: AiLenChanged - Purpose: This function is called to notify the dll that the - AiLen registers value has been changed. - input: none - output: none -*******************************************************************/ -EXPORT void CALL AiLenChanged (void); - -/****************************************************************** - Function: AiReadLength - Purpose: This function is called to allow the dll to return the - value that AI_LEN_REG should equal - input: none - output: The amount of bytes still left to play. -*******************************************************************/ -EXPORT DWORD CALL AiReadLength (void); - -/****************************************************************** - Function: AiUpdate - Purpose: This function is called to allow the dll to update - things on a regular basis (check how long to sound to - go, copy more stuff to the buffer, anyhting you like). - The function is designed to go in to the message loop - of the main window ... but can be placed anywhere you - like. - input: if Wait is set to true, then this function should wait - till there is a messgae in the its message queue. - output: none -*******************************************************************/ -EXPORT void CALL AiUpdate (BOOL Wait); - -/****************************************************************** - Function: CloseDLL - Purpose: This function is called when the emulator is closing - down allowing the dll to de-initialise. - input: none - output: none -*******************************************************************/ -EXPORT void CALL CloseDLL (void); - -/****************************************************************** - Function: DllAbout - Purpose: This function is optional function that is provided - to give further information about the DLL. - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllAbout ( HWND hParent ); - -/****************************************************************** - Function: DllConfig - Purpose: This function is optional function that is provided - to allow the user to configure the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllConfig ( HWND hParent ); - -/****************************************************************** - Function: DllTest - Purpose: This function is optional function that is provided - to allow the user to test the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllTest ( HWND hParent ); - -/****************************************************************** - Function: GetDllInfo - Purpose: This function allows the emulator to gather information - about the dll by filling in the PluginInfo structure. - input: a pointer to a PLUGIN_INFO stucture that needs to be - filled by the function. (see def above) - output: none -*******************************************************************/ -EXPORT void CALL GetDllInfo ( PLUGIN_INFO * PluginInfo ); - -/****************************************************************** - Function: InitiateSound - Purpose: This function is called when the DLL is started to give - information from the emulator that the n64 audio - interface needs - Input: Audio_Info is passed to this function which is defined - above. - Output: TRUE on success - FALSE on failure to initialise - - ** note on interrupts **: - To generate an interrupt set the appropriate bit in MI_INTR_REG - and then call the function CheckInterrupts to tell the emulator - that there is a waiting interrupt. -*******************************************************************/ -EXPORT BOOL CALL InitiateAudio (AUDIO_INFO Audio_Info); - -/****************************************************************** - Function: ProcessAList - Purpose: This function is called when there is a Alist to be - processed. The Dll will have to work out all the info - about the AList itself. - input: none - output: none -*******************************************************************/ -EXPORT void CALL ProcessAList(void); - -/****************************************************************** - Function: RomClosed - Purpose: This function is called when a rom is closed. - input: none - output: none -*******************************************************************/ -EXPORT void CALL RomClosed (void); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/Bin/Release/Docs/Plugin Specs/Controller #1.1.h b/Bin/Release/Docs/Plugin Specs/Controller #1.1.h deleted file mode 100644 index 11a7370ad..000000000 --- a/Bin/Release/Docs/Plugin Specs/Controller #1.1.h +++ /dev/null @@ -1,230 +0,0 @@ -/********************************************************************************** -Common Controller plugin spec, version #1.1 maintained by -zilmar (zilmar@emulation64.com) - -All questions or suggestions should go through the emutalk plugin forum. -http://www.emutalk.net/cgi-bin/ikonboard/ikonboard.cgi?s=3bd272222f66ffff;act=SF;f=20 -**********************************************************************************/ -#ifndef _CONTR_H_INCLUDED__ -#define _CONTR_H_INCLUDED__ - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Note: BOOL, BYTE, WORD, DWORD, TRUE, FALSE are defined in windows.h */ - -#define PLUGIN_TYPE_CONTROLLER 4 - -/*** Conteroller plugin's ****/ -#define PLUGIN_NONE 1 -#define PLUGIN_MEMPAK 2 -#define PLUGIN_RUMBLE_PAK 3 // not implemeted for non raw data -#define PLUGIN_TANSFER_PAK 4 // not implemeted for non raw data -#define PLUGIN_RAW 5 // the controller plugin is passed in raw data - -/********************************************************************************* - Note about Conteroller plugin's: - the rumble pak needs a function for the force feed back joystick and tranfer pak - probaly needs a function for the plugin to be able to select the GB rom and - eeprom... maybe this should be done by the emu instead of the plugin, but I think - it probaly should be done by the plugin. I will see about adding these functions - in the next spec -**********************************************************************************/ - -#define EXPORT __declspec(dllexport) -#define CALL _cdecl - -/***** Structures *****/ -typedef struct { - WORD Version; /* Should be set to 0x0101 */ - WORD Type; /* Set to PLUGIN_TYPE_CONTROLLER */ - char Name[100]; /* Name of the DLL */ - BOOL Reserved1; - BOOL Reserved2; -} PLUGIN_INFO; - -typedef struct { - BOOL Present; - BOOL RawData; - int Plugin; -} CONTROL; - -typedef union { - DWORD Value; - struct { - unsigned R_DPAD : 1; - unsigned L_DPAD : 1; - unsigned D_DPAD : 1; - unsigned U_DPAD : 1; - unsigned START_BUTTON : 1; - unsigned Z_TRIG : 1; - unsigned B_BUTTON : 1; - unsigned A_BUTTON : 1; - - unsigned R_CBUTTON : 1; - unsigned L_CBUTTON : 1; - unsigned D_CBUTTON : 1; - unsigned U_CBUTTON : 1; - unsigned R_TRIG : 1; - unsigned L_TRIG : 1; - unsigned Reserved1 : 1; - unsigned Reserved2 : 1; - - signed Y_AXIS : 8; - - signed X_AXIS : 8; - }; -} BUTTONS; - -typedef struct { - HWND hMainWindow; - HINSTANCE hinst; - - BOOL MemoryBswaped; // If this is set to TRUE, then the memory has been pre - // bswap on a dword (32 bits) boundry, only effects header. - // eg. the first 8 bytes are stored like this: - // 4 3 2 1 8 7 6 5 - BYTE * HEADER; // This is the rom header (first 40h bytes of the rom) - CONTROL *Controls; // A pointer to an array of 4 controllers .. eg: - // CONTROL Controls[4]; -} CONTROL_INFO; - -/****************************************************************** - Function: CloseDLL - Purpose: This function is called when the emulator is closing - down allowing the dll to de-initialise. - input: none - output: none -*******************************************************************/ -EXPORT void CALL CloseDLL (void); - -/****************************************************************** - Function: ControllerCommand - Purpose: To process the raw data that has just been sent to a - specific controller. - input: - Controller Number (0 to 3) and -1 signalling end of - processing the pif ram. - - Pointer of data to be processed. - output: none - - note: This function is only needed if the DLL is allowing raw - data, or the plugin is set to raw - - the data that is being processed looks like this: - initilize controller: 01 03 00 FF FF FF - read controller: 01 04 01 FF FF FF FF -*******************************************************************/ -EXPORT void CALL ControllerCommand ( int Control, BYTE * Command); - -/****************************************************************** - Function: DllAbout - Purpose: This function is optional function that is provided - to give further information about the DLL. - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllAbout ( HWND hParent ); - -/****************************************************************** - Function: DllConfig - Purpose: This function is optional function that is provided - to allow the user to configure the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllConfig ( HWND hParent ); - -/****************************************************************** - Function: DllTest - Purpose: This function is optional function that is provided - to allow the user to test the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllTest ( HWND hParent ); - -/****************************************************************** - Function: GetDllInfo - Purpose: This function allows the emulator to gather information - about the dll by filling in the PluginInfo structure. - input: a pointer to a PLUGIN_INFO stucture that needs to be - filled by the function. (see def above) - output: none -*******************************************************************/ -EXPORT void CALL GetDllInfo ( PLUGIN_INFO * PluginInfo ); - -/****************************************************************** - Function: GetKeys - Purpose: To get the current state of the controllers buttons. - input: - Controller Number (0 to 3) - - A pointer to a BUTTONS structure to be filled with - the controller state. - output: none -*******************************************************************/ -EXPORT void CALL GetKeys(int Control, BUTTONS * Keys ); - -/****************************************************************** - Function: InitiateControllers - Purpose: This function initialises how each of the controllers - should be handled. - input: - The handle to the main window. - - A controller structure that needs to be filled for - the emulator to know how to handle each controller. - output: none -*******************************************************************/ -EXPORT void CALL InitiateControllers (CONTROL_INFO ControlInfo); - -/****************************************************************** - Function: ReadController - Purpose: To process the raw data in the pif ram that is about to - be read. - input: - Controller Number (0 to 3) and -1 signalling end of - processing the pif ram. - - Pointer of data to be processed. - output: none - note: This function is only needed if the DLL is allowing raw - data. -*******************************************************************/ -EXPORT void CALL ReadController ( int Control, BYTE * Command ); - -/****************************************************************** - Function: RomClosed - Purpose: This function is called when a rom is closed. - input: none - output: none -*******************************************************************/ -EXPORT void CALL RomClosed (void); - -/****************************************************************** - Function: RomOpen - Purpose: This function is called when a rom is open. (from the - emulation thread) - input: none - output: none -*******************************************************************/ -EXPORT void CALL RomOpen (void); - -/****************************************************************** - Function: WM_KeyDown - Purpose: To pass the WM_KeyDown message from the emulator to the - plugin. - input: wParam and lParam of the WM_KEYDOWN message. - output: none -*******************************************************************/ -EXPORT void CALL WM_KeyDown( WPARAM wParam, LPARAM lParam ); - -/****************************************************************** - Function: WM_KeyUp - Purpose: To pass the WM_KEYUP message from the emulator to the - plugin. - input: wParam and lParam of the WM_KEYDOWN message. - output: none -*******************************************************************/ -EXPORT void CALL WM_KeyUp( WPARAM wParam, LPARAM lParam ); - -#if defined(__cplusplus) -} -#endif -#endif - diff --git a/Bin/Release/Docs/Plugin Specs/Gfx #1.3.h b/Bin/Release/Docs/Plugin Specs/Gfx #1.3.h deleted file mode 100644 index 3ca658abf..000000000 --- a/Bin/Release/Docs/Plugin Specs/Gfx #1.3.h +++ /dev/null @@ -1,269 +0,0 @@ -/********************************************************************************** -Common gfx plugin spec, version #1.3 maintained by zilmar (zilmar@emulation64.com) - -All questions or suggestions should go through the mailing list. -http://www.egroups.com/group/Plugin64-Dev -*********************************************************************************** - -Notes: ------- - -Setting the approprate bits in the MI_INTR_REG and calling CheckInterrupts which -are both passed to the DLL in InitiateGFX will generate an Interrupt from with in -the plugin. - -The Setting of the RSP flags and generating an SP interrupt should not be done in -the plugin - -**********************************************************************************/ -#ifndef _GFX_H_INCLUDED__ -#define _GFX_H_INCLUDED__ - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Plugin types */ -#define PLUGIN_TYPE_GFX 2 - -#define EXPORT __declspec(dllexport) -#define CALL _cdecl - -/***** Structures *****/ -typedef struct { - WORD Version; /* Set to 0x0103 */ - WORD Type; /* Set to PLUGIN_TYPE_GFX */ - char Name[100]; /* Name of the DLL */ - - /* If DLL supports memory these memory options then set them to TRUE or FALSE - if it does not support it */ - BOOL NormalMemory; /* a normal BYTE array */ - BOOL MemoryBswaped; /* a normal BYTE array where the memory has been pre - bswap on a dword (32 bits) boundry */ -} PLUGIN_INFO; - -typedef struct { - HWND hWnd; /* Render window */ - HWND hStatusBar; /* if render window does not have a status bar then this is NULL */ - - BOOL MemoryBswaped; // If this is set to TRUE, then the memory has been pre - // bswap on a dword (32 bits) boundry - // eg. the first 8 bytes are stored like this: - // 4 3 2 1 8 7 6 5 - - BYTE * HEADER; // This is the rom header (first 40h bytes of the rom - // This will be in the same memory format as the rest of the memory. - BYTE * RDRAM; - BYTE * DMEM; - BYTE * IMEM; - - DWORD * MI_INTR_REG; - - DWORD * DPC_START_REG; - DWORD * DPC_END_REG; - DWORD * DPC_CURRENT_REG; - DWORD * DPC_STATUS_REG; - DWORD * DPC_CLOCK_REG; - DWORD * DPC_BUFBUSY_REG; - DWORD * DPC_PIPEBUSY_REG; - DWORD * DPC_TMEM_REG; - - DWORD * VI_STATUS_REG; - DWORD * VI_ORIGIN_REG; - DWORD * VI_WIDTH_REG; - DWORD * VI_INTR_REG; - DWORD * VI_V_CURRENT_LINE_REG; - DWORD * VI_TIMING_REG; - DWORD * VI_V_SYNC_REG; - DWORD * VI_H_SYNC_REG; - DWORD * VI_LEAP_REG; - DWORD * VI_H_START_REG; - DWORD * VI_V_START_REG; - DWORD * VI_V_BURST_REG; - DWORD * VI_X_SCALE_REG; - DWORD * VI_Y_SCALE_REG; - - void (*CheckInterrupts)( void ); -} GFX_INFO; - -/****************************************************************** - Function: CaptureScreen - Purpose: This function dumps the current frame to a file - input: pointer to the directory to save the file to - output: none -*******************************************************************/ -EXPORT void CALL CaptureScreen ( char * Directory ); - -/****************************************************************** - Function: ChangeWindow - Purpose: to change the window between fullscreen and window - mode. If the window was in fullscreen this should - change the screen to window mode and vice vesa. - input: none - output: none -*******************************************************************/ -EXPORT void CALL ChangeWindow (void); - -/****************************************************************** - Function: CloseDLL - Purpose: This function is called when the emulator is closing - down allowing the dll to de-initialise. - input: none - output: none -*******************************************************************/ -EXPORT void CALL CloseDLL (void); - -/****************************************************************** - Function: DllAbout - Purpose: This function is optional function that is provided - to give further information about the DLL. - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllAbout ( HWND hParent ); - -/****************************************************************** - Function: DllConfig - Purpose: This function is optional function that is provided - to allow the user to configure the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllConfig ( HWND hParent ); - -/****************************************************************** - Function: DllTest - Purpose: This function is optional function that is provided - to allow the user to test the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -EXPORT void CALL DllTest ( HWND hParent ); - -/****************************************************************** - Function: DrawScreen - Purpose: This function is called when the emulator receives a - WM_PAINT message. This allows the gfx to fit in when - it is being used in the desktop. - input: none - output: none -*******************************************************************/ -EXPORT void CALL DrawScreen (void); - -/****************************************************************** - Function: GetDllInfo - Purpose: This function allows the emulator to gather information - about the dll by filling in the PluginInfo structure. - input: a pointer to a PLUGIN_INFO stucture that needs to be - filled by the function. (see def above) - output: none -*******************************************************************/ -EXPORT void CALL GetDllInfo ( PLUGIN_INFO * PluginInfo ); - -/****************************************************************** - Function: InitiateGFX - Purpose: This function is called when the DLL is started to give - information from the emulator that the n64 graphics - uses. This is not called from the emulation thread. - Input: Gfx_Info is passed to this function which is defined - above. - Output: TRUE on success - FALSE on failure to initialise - - ** note on interrupts **: - To generate an interrupt set the appropriate bit in MI_INTR_REG - and then call the function CheckInterrupts to tell the emulator - that there is a waiting interrupt. -*******************************************************************/ -EXPORT BOOL CALL InitiateGFX (GFX_INFO Gfx_Info); - -/****************************************************************** - Function: MoveScreen - Purpose: This function is called in response to the emulator - receiving a WM_MOVE passing the xpos and ypos passed - from that message. - input: xpos - the x-coordinate of the upper-left corner of the - client area of the window. - ypos - y-coordinate of the upper-left corner of the - client area of the window. - output: none -*******************************************************************/ -EXPORT void CALL MoveScreen (int xpos, int ypos); - -/****************************************************************** - Function: ProcessDList - Purpose: This function is called when there is a Dlist to be - processed. (High level GFX list) - input: none - output: none -*******************************************************************/ -EXPORT void CALL ProcessDList(void); - -/****************************************************************** - Function: ProcessRDPList - Purpose: This function is called when there is a Dlist to be - processed. (Low level GFX list) - input: none - output: none -*******************************************************************/ -EXPORT void CALL ProcessRDPList(void); - -/****************************************************************** - Function: RomClosed - Purpose: This function is called when a rom is closed. - input: none - output: none -*******************************************************************/ -EXPORT void CALL RomClosed (void); - -/****************************************************************** - Function: RomOpen - Purpose: This function is called when a rom is open. (from the - emulation thread) - input: none - output: none -*******************************************************************/ -EXPORT void CALL RomOpen (void); - -/****************************************************************** - Function: ShowCFB - Purpose: Useally once Dlists are started being displayed, cfb is - ignored. This function tells the dll to start displaying - them again. - input: none - output: none -*******************************************************************/ -EXPORT void CALL ShowCFB (void); - -/****************************************************************** - Function: UpdateScreen - Purpose: This function is called in response to a vsync of the - screen were the VI bit in MI_INTR_REG has already been - set - input: none - output: none -*******************************************************************/ -EXPORT void CALL UpdateScreen (void); - -/****************************************************************** - Function: ViStatusChanged - Purpose: This function is called to notify the dll that the - ViStatus registers value has been changed. - input: none - output: none -*******************************************************************/ -EXPORT void CALL ViStatusChanged (void); - -/****************************************************************** - Function: ViWidthChanged - Purpose: This function is called to notify the dll that the - ViWidth registers value has been changed. - input: none - output: none -*******************************************************************/ -EXPORT void CALL ViWidthChanged (void); - -#if defined(__cplusplus) -} -#endif -#endif diff --git a/Bin/Release/Docs/Plugin Specs/Plugin Spec history.txt b/Bin/Release/Docs/Plugin Specs/Plugin Spec history.txt deleted file mode 100644 index 8463adbc6..000000000 --- a/Bin/Release/Docs/Plugin Specs/Plugin Spec history.txt +++ /dev/null @@ -1,35 +0,0 @@ -=================================================== -GFX Common Plugin Spec 1.3 -=================================================== -+ Added Screen Capture -+ Added Process RDP List -+ Added Show CFB -=================================================== -GFX Common Plugin Spec 1.2 -=================================================== -+ Added HEADER to the GFX_INFO structure -+ Moved the __declspec(dllexport) to a define -+ Added CALL to set function calling method -+ Added _GFX_H_INCLUDED__ to make sure include file is only used once -- Changed the ChangeWindow function -=================================================== -GFX Common Plugin Spec 1.1 -=================================================== -- removed PLugin types dealing with other plugins. -- removed ProcessRDPList from plugin spec. -+ Add some general comments about the plugin spec - -=================================================== -Audio Common Plugin Spec 1.1 -=================================================== -+ Changed the function name for processing an Alist -+ Moved the __declspec(dllexport) to a define -+ Added CALL to set function calling method -+ Added _AUDIO_H_INCLUDED__ to make sure include file is only used once -+ Added HEADER to the AUDIO_INFO structure -- Removed SystemType from the AUDIO_INFO structure -+ Added SystemType to AiDacrateChanged -=================================================== -Controller Common Plugin Spec 1.1 -=================================================== -+ Added HEADER to the CONTROL_INFO structure diff --git a/Bin/Release/Docs/Plugin Specs/Rsp #1.1.h b/Bin/Release/Docs/Plugin Specs/Rsp #1.1.h deleted file mode 100644 index 76e1e7b34..000000000 --- a/Bin/Release/Docs/Plugin Specs/Rsp #1.1.h +++ /dev/null @@ -1,199 +0,0 @@ -#if defined(__cplusplus) -extern "C" { -#endif - -/* Note: BOOL, BYTE, WORD, DWORD, TRUE, FALSE are defined in windows.h */ - -#define PLUGIN_TYPE_RSP 1 -#define PLUGIN_TYPE_GFX 2 -#define PLUGIN_TYPE_AUDIO 3 -#define PLUGIN_TYPE_CONTROLLER 4 - -typedef struct { - WORD Version; /* Should be set to 0x0101 */ - WORD Type; /* Set to PLUGIN_TYPE_RSP */ - char Name[100]; /* Name of the DLL */ - - /* If DLL supports memory these memory options then set them to TRUE or FALSE - if it does not support it */ - BOOL NormalMemory; /* a normal BYTE array */ - BOOL MemoryBswaped; /* a normal BYTE array where the memory has been pre - bswap on a dword (32 bits) boundry */ -} PLUGIN_INFO; - -typedef struct { - HINSTANCE hInst; - BOOL MemoryBswaped; /* If this is set to TRUE, then the memory has been pre - bswap on a dword (32 bits) boundry */ - BYTE * RDRAM; - BYTE * DMEM; - BYTE * IMEM; - - DWORD * MI_INTR_REG; - - DWORD * SP_MEM_ADDR_REG; - DWORD * SP_DRAM_ADDR_REG; - DWORD * SP_RD_LEN_REG; - DWORD * SP_WR_LEN_REG; - DWORD * SP_STATUS_REG; - DWORD * SP_DMA_FULL_REG; - DWORD * SP_DMA_BUSY_REG; - DWORD * SP_PC_REG; - DWORD * SP_SEMAPHORE_REG; - - DWORD * DPC_START_REG; - DWORD * DPC_END_REG; - DWORD * DPC_CURRENT_REG; - DWORD * DPC_STATUS_REG; - DWORD * DPC_CLOCK_REG; - DWORD * DPC_BUFBUSY_REG; - DWORD * DPC_PIPEBUSY_REG; - DWORD * DPC_TMEM_REG; - - void (*CheckInterrupts)( void ); - void (*ProcessDlistList)( void ); - void (*ProcessAlistList)( void ); - void (*ProcessRdpList)( void ); - void (*ShowCFB)( void ); -} RSP_INFO; - -typedef struct { - /* Menu */ - /* Items should have an ID between 5001 and 5100 */ - HMENU hRSPMenu; - void (*ProcessMenuItem) ( int ID ); - - /* Break Points */ - BOOL UseBPoints; - char BPPanelName[20]; - void (*Add_BPoint) ( void ); - void (*CreateBPPanel) ( HWND hDlg, RECT rcBox ); - void (*HideBPPanel) ( void ); - void (*PaintBPPanel) ( PAINTSTRUCT ps ); - void (*ShowBPPanel) ( void ); - void (*RefreshBpoints) ( HWND hList ); - void (*RemoveBpoint) ( HWND hList, int index ); - void (*RemoveAllBpoint) ( void ); - - /* RSP command Window */ - void (*Enter_RSP_Commands_Window) ( void ); - -} RSPDEBUG_INFO; - -typedef struct { - void (*UpdateBreakPoints)( void ); - void (*UpdateMemory)( void ); - void (*UpdateR4300iRegisters)( void ); - void (*Enter_BPoint_Window)( void ); - void (*Enter_R4300i_Commands_Window)( void ); - void (*Enter_R4300i_Register_Window)( void ); - void (*Enter_RSP_Commands_Window) ( void ); - void (*Enter_Memory_Window)( void ); -} DEBUG_INFO; - -/****************************************************************** - Function: CloseDLL - Purpose: This function is called when the emulator is closing - down allowing the dll to de-initialise. - input: none - output: none -*******************************************************************/ -__declspec(dllexport) void CloseDLL (void); - -/****************************************************************** - Function: DllAbout - Purpose: This function is optional function that is provided - to give further information about the DLL. - input: a handle to the window that calls this function - output: none -*******************************************************************/ -__declspec(dllexport) void DllAbout ( HWND hParent ); - -/****************************************************************** - Function: DllConfig - Purpose: This function is optional function that is provided - to allow the user to configure the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -__declspec(dllexport) void DllConfig ( HWND hParent ); - -/****************************************************************** - Function: DllTest - Purpose: This function is optional function that is provided - to allow the user to test the dll - input: a handle to the window that calls this function - output: none -*******************************************************************/ -__declspec(dllexport) void DllTest ( HWND hParent ); - -/****************************************************************** - Function: DoRspCycles - Purpose: This function is to allow the RSP to run in parrel with - the r4300 switching control back to the r4300 once the - function ends. - input: The number of cylces that is meant to be executed - output: The number of cycles that was executed. This value can - be greater than the number of cycles that the RSP - should have performed. - (this value is ignored if the RSP is stoped) -*******************************************************************/ -__declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ); - -/****************************************************************** - Function: GetDllInfo - Purpose: This function allows the emulator to gather information - about the dll by filling in the PluginInfo structure. - input: a pointer to a PLUGIN_INFO stucture that needs to be - filled by the function. (see def above) - output: none -*******************************************************************/ -__declspec(dllexport) void GetDllInfo ( PLUGIN_INFO * PluginInfo ); - -/****************************************************************** - Function: GetRspDebugInfo - Purpose: This function allows the emulator to gather information - about the debug capabilities of the dll by filling in - the DebugInfo structure. - input: a pointer to a RSPDEBUG_INFO stucture that needs to be - filled by the function. (see def above) - output: none -*******************************************************************/ -__declspec(dllexport) void GetRspDebugInfo ( RSPDEBUG_INFO * RSPDebugInfo ); - -/****************************************************************** - Function: InitiateRSP - Purpose: This function is called when the DLL is started to give - information from the emulator that the n64 RSP - interface needs - input: Rsp_Info is passed to this function which is defined - above. - CycleCount is the number of cycles between switching - control between the RSP and r4300i core. - output: none -*******************************************************************/ -__declspec(dllexport) void InitiateRSP ( RSP_INFO Rsp_Info, DWORD * CycleCount); - -/****************************************************************** - Function: InitiateRSPDebugger - Purpose: This function is called when the DLL is started to give - information from the emulator that the n64 RSP - interface needs to intergrate the debugger with the - rest of the emulator. - input: DebugInfo is passed to this function which is defined - above. - output: none -*******************************************************************/ -__declspec(dllexport) void InitiateRSPDebugger ( DEBUG_INFO DebugInfo); - -/****************************************************************** - Function: RomClosed - Purpose: This function is called when a rom is closed. - input: none - output: none -*******************************************************************/ -__declspec(dllexport) void RomClosed (void); - -#if defined(__cplusplus) -} -#endif diff --git a/Bin/Release/Docs/RDB - WhatsNew.txt b/Bin/Release/Docs/RDB - WhatsNew.txt deleted file mode 100644 index 7043a9bc8..000000000 --- a/Bin/Release/Docs/RDB - WhatsNew.txt +++ /dev/null @@ -1,283 +0,0 @@ -ROM Database (Project64.rdb) for v1.6 (November 2005) -Changes since v1.6 release (1st April 2005) - -also much credit to: Gent, Radeon, Trotter, Witten, SGi, Nekokabu -and everyone who gives feedback on the ET forum, thank you all! - -Most recent changes at top (so no particular order!) - - -RDB v1.6.015 - -Turok - Rage Wars (U) 1 Corrected GoodName (silly error) -F-ZERO X 3 Changed SMCM back to ChangeM&C and TLB on, unstable? but was wiping save on Protect. -Toy Story 2 4 Changed CF2>1, runs at much better speed -Jikkyou Powerful Pro... (J) 1 Updated GoodName (added "V1.0" as newer ROM exists) -Wonder Project J2 1 Added note about a couple of problems -Donald Duck - Quack... 1 Changed status Compatible>Issues(p), added note -Ms. Pac-Man - Maze Madness 1 Changed status to Uncertain, reports of various issues. - -Added 1 new ROM: - Jikkyou Powerful Pro Yakyuu 2000 (J) (V1.1) - - --------- -RDB v1.6.014 - -Title #ROMs Type Details - -Doom 64 (U) 1 Updated GoodName (added "V1.0" as newer ROM exists) -Zelda no Densetsu - Mujura... 1 Updated GoodName (added "V1.0" as newer ROM exists) -Zelda no Densetsu - Toki.. 1 Updated GoodName (added "V1.0" as newer ROM exists) -Waialae Country Club (U) 1 Corrected GoodName (to match other regions) -Diddy Kong Racing (E) 2 Corrected GoodName (E is M3 not M2) -Top Gear Hyper-Bike 3 Added fix for all regions, should be playable, some video issues -Top Gear Overdrive 3 Added fix for all regions, game now works on Interpreter (slow), mixed issues -Hoshi no Kirby 1 Updated GoodName (added "V1.0" as newer ROM exists) -Starshot - Space Circus.. 2 Added note about AV in intro, must skip to avoid! -Space Station SV 3 Changed status Compatible>Issues (p), added note about missing sprite/depth prob. -SCARS 2 Added note about depth problem for effects -Tom and Jerry... 2 Set to FlashRAM, should no longer freeze! removed gFAQ entry (RadeonUser) -Duke Nukem ZERO HOUR (E) 1 Corrected position of potential freeze fix entry (oops!) -Star Wars EP1 racer 3 Changed to 8MB, just because i'm fed up with people reporting it. v1.5.2 plug users put back to 4. -StarCraft 64 (E) 1 Added info about ReDump -Iggy's Reckin Balls 3 Changed SMCM to ChangeM&C for possible hang fix. -Mischief Makers 3 Changed Status Compatible > Issues (plugin), added details to GameFAQ. -Fire Electric Pen 1 Changed status to Uncertain, may hang randomly? -Wave Race 64 (J) 1 Updated GoodName (added "V1.0" as newer ROM exists) -Bokujo Monogatari 2 (J) 1 Updated GoodName (added "V1.0" as newer ROM exists) -Ogre Battle 64 (J) 1 Added note about old [!] ROM being bad, has been redumped. - -Add 16 new ROMs (warning: may not be final Good Names, or may not even be good dumps!) - - Bokujou Monogatari 2 (J) (V1.1) - Bokujou Monogatari 2 (J) (V1.2) - Doom 64 (U) (v1.1) - Duke Nukem 64 (F) - Frogger 2 (Unreleased Alpha) - Hoshi no Kirby 64 (J) (V1.1) - Hoshi no Kirby 64 (J) (V1.2) - Jikkyou World Soccer - World Cup France '98 (J) (V1.1) - Legend of Zelda, The - Ocarina of Time (U) (Debug Version) - O.D.T (E) - O.D.T (U) - Turok - Rage Wars (FI) - Zelda no Densetsu - Mujura no Kamen (J) (V1.1) - Zelda no Densetsu - Toki no Ocarina (J) (V1.1) - Zelda no Densetsu - Toki no Ocarina (J) (V1.2) - Wave Race 64 (J) (V1.1) - - --------- -RDB 1.6x Beta 13: - - Various Good Name corrections and Notes improvements - -Jikkyou World Soccer 3 1 Changed SMCM ChangeMem>Protect in line with U/E ISS64 - may prevent freeze. -Iggy's Reckin' Balls 3 Removed note about AV, was fixed in v1.6 -Army Men - Air Combat (U) 1 Added note about missile drawn incorrectly in level2+ (thanks Speedfreak69) -Bassmasters 2000 (U) 1 Added SMCM Cache, didn't boot on None if ABL off. added note about missing textures. -Chopper Attack/Wild Choppers 3 Added note to see GameFAQ to explain pixel pipe issue (Radeonuser) -Lode Runner 3-D 3 Added note about missing menu highlight -Quake 1&2 4 Improved GameFAQ entry, complicated issues for these games -Duke Nukem - ZER0 H0UR 3 Added fix, (F)/(U) now no longer freeze at first level (thanks Nekokabu!) -Nagano Winter Olympics/Hyper... 3 Added fix, all regions now no longer need overdump ROM (thanks Nekokabu!) - -Added 5 new Zelda ROMs, provisionally Good Named (these names are probably NOT final!) - Legend of Zelda, The - Ocarina of Time - Master Quest (U) (GC Version) - Legend of Zelda, The - Ocarina of Time - Collector's Edition (U) (GC Version) - Zelda no Densetsu - Toki no Ocarina - Zelda Collection Version (J) (GC Version) - Zelda no Densetsu - Toki no Ocarina GC (J) (GC Version) - Zelda no Densetsu - Toki no Ocarina GC Ura (J) (GC Version) - -Renamed two hacked/fixed Zelda ROMs to proposed new Good Names (may also not be correct!) - Legend of Zelda, The - Ocarina of Time - Master Quest (E) [f1] (NTSC) > Legend of Zelda, The - Ocarina of Time - Master Quest (E) [h1C] - Legend of Zelda, The - Ocarina of Time - Master Quest (E) [f2] > Legend of Zelda, The - Ocarina of Time - Master Quest (E) [f1] (NTSC) - -Added one other (non-Zelda) new ROM: - Hoshi no Kirby 64 (J) (v1.3), left old ROM name alone, waiting for confirmation of version number. - --------- -Beta12: - -Added new ROMS (unverified, and some settings may be incorrect, this is why this is a beta file!) - - A Bug's Life (I) - Chou-Kuukan Night Pro Yakyuu King 2 (J) - Jikkyou World Cup France '98 J V1.2 - Pokemon Stadium 2 (I) - Pokemon Stadium (I) - Pro Mahjong Tsuwamono 64 - Shadowgate 64 (I) - Turok 2 - Seeds of Evil (FGD) - -A warning that in the current public version of GoodN64, -the following [!] ROMs may be bad, because a redump exists: - - Bass Tsuri No. 1 - Shigesato Itoi's Bass Fishing (J) - Diddy Kong Racing (J) (changed status to "Bad ROM?" because CRC changed) - Pawapuro Puroyakyu 6 (J) (aka Jikkyou Powerful Pro Yakyuu 6) - Yousuke Ide's Mahjong School (J) (aka Ide Yosuke no Mahjong Juku) - Nushi Tsuri 64 Shiokaze ni notte (old dump definately bad, now starts!) - -Blast Corps/Dozer 4 Added note about menu texture errors -Gex & Gex 3 5 Added note about Water rendering error -Bass Tsuri No.1 1 Added note to use v1.5.2 video plugin, Access Violaton in v1.6 -Micro Machines 2 Added note about menu errros (OK in v1.5.2 but in game worse?) -Superman 2 Added note about fog missing from sky -Twisted Edge/King Hill... 3 Added note about minor menu snowflake problem -Duke Nukem 64 2 Added note about video depth problem -Neon Genesis Evangelion 1 Added D3D Clear Mode only per frame, no negative effects? -Snow Speeder 1 J ver of Big Mountain, clarified note about menu text errors (thanks Gent) -Spider-man 1 Added GameFAQ entry about background/shadow depth/system issues. -Paperboy 2 Added note about missing map details (thanks Speedfreak69) -City Tour GP 1 Changed SMCM CheckM&C>CMA in line with (U)&(E). May fix occasional freezes. Improved GameFAQ entry. -Bomberman64/2nd Attack/Baku... 5 Changed status Compatible>Issues (plugin). Many video plugin issues. - --------- -Betas 1 up to 11: - -Hey You Pikachu/Pikachu Gen... 2 Changed status Compatible>Issues (plugin). no plugin supprts voice pak AFAIK. -World Cup 98 2 Changed status Compatible>Issues (plugin). Added note about menu and pitch errors (thanks Speedfreak69) -64 Oozumou (J) 1 Added note: [video] slow in menus (may not be noticeable on fast system). -Jeremy McGrath Supercross 2000 2 Changed status Compatible>Issues (plugin), added note about missing menu selection indicator. -Doraemon - Mittsu no Seireiseki (J) [!] Changed note, missing text is main gameplay issue (character is visible but missing colour) -Kakutou Denshou: F-Cup Maniax 1/2 J ver of Figher's Destiny 2 - added same menu error note (use v1.5.2 plugin to avoid) (thanks Speedfreak69) -Fighting Cup (J) 1/5 J ver Figher's Destiny - added same menu error note (use v1.5.2 plugin to avoid) -Virtual Chess 1/2 Corrected (U) Good Name -Zelda OoT/MQ 10 Changed SMCM back ChangeMem>CMA, more stable. Added note to GameFAQ to explain Lost Woods issue. -Fushigi no Dungeon... 1 Added GameFAQ entry about menu needing framebuffer. still not sure of Status. -CyberTiger 2 Added core note & gFAQ entry about hang when quit from menu, status Compatible > Issues (core) -NHL Breakaway 98&99 4 Added note to use v1.5.2 video plugin - res detection bad in v1.6 -Derby Stallion 1 Changed Status Compatible>Issues (core). Save problem prevents play (trusting olivieryuyu on this, i can't read Jap!) -Command and Conquer 3 Added note about texture errors in mission briefings -Mario Golf 3 Added GameFAQ entry about MiniGolf depth problem (thanks Techman) -Ready 2 Rumble Boxing (E) 1/2 Added GameFAQ entry about clipping problem (thanks Speedfreak69) -Tarzan 4 Added GameFAQ entry about butterfly video regression (thanks Speedfreak69) -Winback/Operation Winback 3 Added video note and gamefaq entry about grey square -Nascar 99 & 2000 3 Changed video note to say splitscreen multiplayer unusable. -Brunswick Circuit Pro Bowling 1 Added video plugin force res height 240, seems playable now, some minor depth problem still -Monopoly 1 Added video setting force height 240, added note to GameFAQ about Force Alpha needed -South Park - Chef's Luv... 1/2 Changed (E) status to Region Issue (p) for obvious gfx problem, suggesting use (U) ROM -Scooby Doo 2 Added video plugin force res width 480 -1080 Snowboarding 2 Changed core settings LCB off and ABL off - smoother -F-ZERO X 3 Changed SMCM to Protect for all regions - needed. ABL off for smoothness. -ISS98 2 Changed core setting TLB On, may help with "failed to load word" error. feedback please, especially for the (U) version. -Pilotwings (E) 1 Changed video setting D3D clear mode back to default (Always was for border, but broke pics). Changed status Compat>Region Issue(p), added gFAQ entry to explain. (thanks Speedfreak69) -Mega Man 64/Rockman Dash 2 Added note to see GameFAQ about pixel pipe issue. (thanks Techman) -Earthworm Jim 3D 2 Changed note to see GameFAQ, added GameFAQ entry. -Castlevania/Akumajou Dracula.. 3/4 Changed core settings ChangeMem>Protect (stability), ABL off (smoother). (E) ok on ChangeMem+ABL -Big Mountain 2000 1 Added note about menu text errors (thanks Gent) -NFL QB Club 99 2 Changed core setting reg caching back on - faster, but is it stable? feedback please -Glover 2 Added note to use D3D6 v1.5.2 plugin, end of level AV is back in D3D8 v1.6 -Killer Instinct 1/4 Changed (v1.2 U ROM) D3D Clear mode Default>Always to match others, is needed. -NBA Showtime - NBA on NBC (U) 1 Changed CF2>1 for better (faster actually) speed -Pocket Monsters Stadium (J) 1 Changed save type flashram>sram, not sure if that's correct or what other issues game has, seems to hang in menus (Nekokabu) -Mario Tennis 3 Changed note to just See GameFAQ, and tried to improve GameFAQ entry. -F-ZERO X 2/3 Changed (E&U) SMCM ChangeMem>CMA to fix unhandled opcode near end. Needs thorough testing of whole game! (may need Protect Mem) -Turok1/Tokisora Senshi... 6 Added note to see GameFAQ about texture/pixel pipeline issue (thanks Clements) -Dobutsu no Mori 1 Added note about pause screen problem (thanks Clements) -Dr Mario 64 1 Changed status Compatible>Issues(p). added note to see GameFAQ. -Banjo-Tooie 4 Changed to normal size compiler buffer, turned SP hack off - more stable. turned ABL off - smoother -Rat Attack 2 Changed cpu to interpreter, status Issues(c)>Interpreter only. All issues (multiplayer crash, missing graphics) from recomp fixed, but slow (Radeon/Gent) -Pro Mahjong Kiwame 64 (J) 1 Changed CF2>1, solves flickering menu issue (thanks Nekokabu) -Parlor! Pro 64 Pachinko... 1 Changed save type to 16keeprom (not verified) (thanks Nekokabu) -Mahjong Master (J) 1 Added plugin note about text errors in menus, game still seems playable? -Mahjong Hourouki Classic (J) 1 Changed SMCM Cache>Protect, changed status Only intro>Compatible, added note to see GameFAQ (thanks Nekokabu) -Jikkyou World Soccer 3 1 Changed status Uncertain>Issues (p) (thanks Nekokabu) -Donald Duck/Duck Dodgers.... 2 Changed CF2>3 to avoid stuck in loop when talking issue (thanks ScottJC?) -Goldeneye (J) 1 Changed (J) D3D Clear mode Default>Always to match other regions, this is for sky apparently (since its not emulated properly). -Fushigi no Dungeon 1 Changed status to Uncertain, possible graphics and saving issues, needs investigation (thanks Nekokabu) -Castlevania2/Akumajou Dracula.. 3 Changed RDRAM size to 8MB, may help with some graphics issues (or may cause problems e.g. res detection, feedback please!) -Fire Electric Pen 1 Changed status Issues (p)>Needs video plugin, errors too severe. force height 240 (thanks Nekokabu) -Rakuga Kids (J) 1/2 Removed note about being slow, seems better in D3D8, also to match (E) -Shadowgate64 4 Removed note about being slow, doesn't seem slow in D3D8 (thanks PsyMan) -Nushi Tsuri 64 (J) 1 Changed status Issues (p) > Needs video plugin, no way this is playable i think. -Mission Impossible (F) 1/ Changed core note into a GameFAQ entry to explain properly.. -Hiryu no Ken Twin 1/3 Changed status Issues (p)>Region Issue (p), this is (J) Flying Dragon, triangle issue remains. -Flying Dragon 2/3 Changed status Issues (p)>Compatible, changed ABL>OFF, CF2>1. changed note to various - small issues but v. playable afaik. -Virtual Pro Wrestling 1/4 Changed status Issues (p)>(c), this is the (J) WCW vs. nWo - World Tour. changed SMCM Protect>CMA, ABL ON>def, to match others. -Super B-Daman - Battle Phoenix 1 change note to say speed seems ok in game, leaving status Issues (plugin) for now -Kirby64 1/2 Added forced res height 240, fixes line glitch at top -Rayman2 2 Changed status back to Compatible, lum colour and res issues not serious enough imho -1080 Snowboarding 2 Changed SMCM back to Protect Mem, not confident that it's stable on CMA :/ -GT64 - Champ.../City-Tour... 3 Changed notes to be consistent -All-Star Base... 200/2001 3 Changed notes to see GameFAQ -Tetrisphere 2 Fixed typo in note -Turok 1 1/5 Changed core setting ABL ON>default to match others -Yoshi's Story 3 Added video note to see GameFAQ -Nightmare Creatures 1 Changed note to see GameFAQ for pausing issue -Bomberman Hero 3 Change SMCM CheckMem&C>CMA for possible crash later in game - not sure if it actually fixed issue. -Beetle Adv. Racing (E)/HSV... 2/4 Change SMCM CheckMem&C>CMA, prevents crash in intro (Radeonuser), still issues -Mario Golf 1 Removed reference to GameFAQ, pretty much fixed in D3D8. unless anyone thinks there needs to be a page? -Robot Ponkottsu 64 1 Changed to 16keeprom, game seems to work! removed note, not sure about vid plugin or SMCM? (thanks Nekokabu) (may need TLB? - Rad) -Pilotwings 3 Added note [video] (see GameFAQ) for block objects issue -Conker's Bad Fur Day 1/2 Changed (E) core setting ABL OFF to match (U) -Gauntlet Legends 1/4 Changed (U) core setting CF4>2, ABL OFF to match others -Re-volt 2 Changed note to say hangs randomly - CF3 doesn't prevent, can't see any fix for now -Resident Evil 2/Bio... 3 Changed RDRAM 8>4, forced res width 320, for now should help with res. set all RSP audio signal on, CF 1, ABL OFF, may improve stability, not sure -Jikkyou World Soccer 3 (J) 1 Changed status Uncertain > Issues (plugin) changed SMCM Cache>Check Memory & Cache, removed note about freeze (thanks Nekokabu) -Dobutsu no Mori 1 Changed status Uncertain > Compatible, unsure about video plugin (thanks Nekokabu) -Sim City 2000 1 Removed plugin note (oops! not sure why we were telling people to turn off the mempak?) -Human Grand Prix 1 Changed status Only intro > Compatible, removed note (thanks Nekokabu) -Custom Robo V2 1 Changed save type to 16k eeprom (thanks Nekokabu) -A Bug's Life 1/5 Changed core setting TLB ON for (U) to match others, not sure if game actually needs it -64 Oozumou 1 Changed status Issues (plugin) > Compatible, removed note - d3d8 improves speed (thanks Nekokabu) -Super Mario 64 1/4 Changed (E) note to match others (thanks Gent ;) -Beetle Adventure Racing/.. 1/3 Changed (E) core setting CF1>2 - unsure of status, needs testing -Donkey Kong 64 2/4 Changed (E)&(J) settings CF4>2 to match (U) - why was it on 4?? -WCW vs NWO World Tour 3 Change status Issues (plugin) > Issues (core) - not video plug issue (thanks TrotterW) -Hiryuu no Ken Twin (J) 1 Changed core setting CF2>1, reduced flicker -Wonder Project J2 1 Changed core setting SMCM Protect > CMA (thanks Nekokabu) - not tested -Wetrix 1/3 Removed (J) note to match other regions - works fine afaik -BioHazard 2 1/3 Changed status Region Issue > Issues (plugin), Reg Caching & TLB OFF. issue not RSP, changed note to match others (thanks Nekokabu) -AI Shogi 3 1 Changed status Needs video plugin > Unsupported - textures errors not video plugin (thanks Nekokabu) -Super Smash Bros/Ninte... 4 Changed notes to be consistent. disabled ABL - smoother -War Gods 2 Added note (see GameFAQ) for possible non fatal Unknown x86 register error msg -All Star Baseball 2000 (E) 1 Removed note [video] primary_framebuffer:board (Gent) -Hey You, Pikachu 2 Changed note (clarification), changed (J) status to compatible - is this correct? - Fixed various typos and inconsistencies in notes (thanks Clements) -Mischief Makers 2 Changed note to fix typo - is there a (J) ROM? (thanks Clements) -Resident Evil 2/Bio... 2/3 Changed status Compatible > Issues (p) -Int. Track & Field/Ganbare... 3 Changed status Compatible > Broken (c & p) - new category! (thanks 64ultramanic) -ISS98 1 Changed (U) SMCM to Protect Memory, status Issues > Uncertain. maybe stable, but not for everyone? -Tetris64 1 Changed status Issues (plugin) > Compatible - no longer slow with D3D8 plugin -New Tetris 2 Changed status Issues (plugin) > Compatible - D3D8 plugin fixes major issues, small ones remain. -Roadsters Trophy (U) 1/2 Changed status to Region issue (c) - slowness is from (U) needing CF1 to start -Quest64/Holy Mag.../Eltale... 2/5 Added note [video] error(s):speech bubble text to (U/J) like others -NBA Hangtime 1 Changed (U) entry to match (E) - Issues (plugin) -Paper Mario/Mario Story 1 Changed (J) entry to match (U/E) - Compatible -Zelda OoT/MQ (all) 10 Changed core setting SMCM to Change Mem., for Lost Woods. Needs thorough testing of whole game (thanks Allnatural) -Banjo Tooie 1/3 Changed Status back to Compatible. removed note about opcode, unconfirmed. some doubts remaining. -1080 Snowboarding 1/2 Changed (E) core setting SMCM Protect > CMA - (U) accidently left on CMA in 1.6 - smoother, but needs testing! -Mystical Ninja star.../Ganbare 3 Changed core setting RDRAM 4>8MB - was not starting on 4. (J) forced res height 240 -Wetrix 3 Changed core setting: CF 1>3 - better speed. possible AV remaining? (Radeonuser) -Zelda (both games, all roms) 15 Changed core setting: Advanced Block Linking OFF - slower but smoother -Zelda MQ [f1] (NTSC) 1 Added core note: "hacked ROM" - technicaly a bad ROM but leaving in for people who want 60VI/s -Wipeout64 2 Removed note "see GameFAQ" - no known issues remaining in (U) -007 World is Not Enough 2 Changed Status: Issues (plugin) > Compatible - speech issue not so serous imho -Battlezone 1 Changed RDRAM 8>4MB - workaround for video plugin high res. detection issue -Yoshi's Story 3 Added forced resolution 320x240 - seems ok. other video plugin issues remain. -GT64 Champ/City Tour GP 3 Changed core settings: TLB on, Delay SI on - needs testing! -Kirby64/Hoshi no kirby 3 Changed Status: Issues (plugin) > Issues (core) - 'missing eggs' not plugin issue -Jet Force Gemini - Kiosk 1 Changed Status: Broken (core) > Compatible. works afaik? -Mission Impossible (F) 1 Added note: "old [!] ROM bad!", reminder to rescan with new GoodN64 (might remove this later) -Star Wars - Shadows... 5 Changed CF1>2, Default>Only per frame, for speed & flicker. (E) flicker worse (thanks ScottJC) -Nagano Winter Olympics/Hyper... 3 Changed note to clarify: Use [o1] > Use overdump -Sim City 2000 1 Changed note to clarify: [input] needs Rumble-Pak -> [input] disable Memory-Pak -Chameleon Twist 2 Changed note to clarify: [input] needs Rumble-Pak -> [input] disable Memory-Pak - -Removed (actually commented out): -Jet Force Gemini (U) [f1] Reason: bad rom. - - -*I think the average PC is now fast enough to turn this off in the RDB. -(i've known for a long time that ABL Off was smoother in the Zeldas, but loses perhaps 20% speed). -If your machine is not fast enough to maintain 60Vi/s, probably a good idea to turn it back on. -Some chance this affects stability, as not as many people have been playing them with ABL Off. - - -------------- -(1.6 release) ------- -//EOF \ No newline at end of file diff --git a/Bin/Release/Docs/RDX - ReadMe (Unofficial).txt b/Bin/Release/Docs/RDX - ReadMe (Unofficial).txt deleted file mode 100644 index 27dc44e9a..000000000 --- a/Bin/Release/Docs/RDX - ReadMe (Unofficial).txt +++ /dev/null @@ -1,205 +0,0 @@ -Official Project64.rdx v1.0 by lnsop, Perfect Dark and Gent for PJ64 v1.6 GoodN64 v202b+ - - -[Note from Gent: this file has had quite an overall and now includes GoodN64 v202b+ and Force Feedback (Rumble) compatibility. If anyone feels like updating it please contact me via the forum] - - -***************** -* Introduction: * -***************** - - I propose you my config file for project64, the wonderful Nintendo64 emulator. - This file is to place on the principal directory of project64; - it permits to show some extra infos on the games when you use the emulator: - -the game developper - -the game date release (warning for the frenchs:the dates are inversed in english. example: 1998/05/26) - -the genre of the game (example:Sport-Snowboarding) - -the number of players - - - -*************** -* History: * -*************** - -01/04/05 V1.9: - - - Added compatibility for GoodN64 v202b+ & Force Feedback (Rumble) - - -27/02/04 V1.9: - - - Added compatibility with GoodN64 v0999a - -12/11/02 V1.7: - - - Achèvement : City-Tour GP-All Japan Grand Touring Car Championship (J)[!] - Fire Electric Pen (J) [!] - Fushigi no Dungeon - Furai no Shiren 2 (J) [!] - Ganbare Nippon Olympics 2000 (J) [!] - Jinsei Game 64 (J) [!] - Kuiki Uhabi Suigo (J) [!] - Mario no Photopie (J) [!] - Michael Owens WLS 2000 (E) [!] - NBA Pro 98 (E) [!] (thanks lario) - NBA Pro 99 (E) [!] - Nushi Zuri 64 (J) [!] - Parlor! Pro 64 Pachinko Jikki Simulation Game (J) [!] - Premier Manager 64 (E) [!] - Racing Simulation 2 (G) [!] - Telefoot Soccer 2000 (F) [!] - Yakouchuu II - Satsujun Kouru (J) [!] - Zool - Majou Tsukai Densetsu (J) [!] - - - a few info added and corrected - - - 813 roms complete (all info completed !!) - -********************************************************************************************************************* -********************************************************************************************************************* - -01/11/02 V1.6: - - - Finish : Alice no Wakuwaku Trump World (J) [!] - Bakushou Jinsei 64 - Mezase! Resort Ou (J) [!] - Harukanaru Augusta Masters 98 (J) [!] - J. League Dynamite Soccer (J) [!] - J. League Eleven Beat 1997 (J) [!] - Jikkyou Pawapuro Puroyakyu 2000 (J) [!] - Jikkyou World Cup France '98 (J) [!] - Kiratto Kaiketsu! 64 Tanteidan (J) [!] - Mahjong Hourouki Classic (J) [!] - Morita Shogi 64 (J) [!] - Pachinko 365 Nichi (J) [!] - Puzzle Bobble 64 (J) [!] - Super Speed Race 64 (J) [!] - Tamagotchi World 64 (J) [!] - Yousuke Ide's Mahjong School (J) [!] - - - a few info adds - - - Roms to correct (E) (F) (G) : 5 roms - - - Roms to correct (J) : 11 roms - -********************************************************************************************************************* -********************************************************************************************************************* - -26/10/02 V1.5: - - - Finish : RTL World League Soccer 2000 (G) [!] - Bass Tsuri No. 1 - Shigesato Itoi's Bass Fishing (J) [!] - Akumajou Dracula Mokushiroku - Real Action Adventure (J) [!] - Jangou Simulation Mahjong Do 64 (J) [!] - Eltale Monsters (J) [!] - F-Cup Maniax (J) [!] - Heiwa Pachinko World (J) [!] - Jikkyou World Soccer 3 (J) [!] - Mahjong 64 (KOEI) (J) [!] - Mahjong Master (J) [!] - Pawapuro Puroyakyu 4 (J) [!] - Pawapuro Puroyakyu 5 (J) [!] - Pawapuro Puroyakyu 6 (J) [!] - Pro Mahjong Kiwame 64 (J) [!] - Pro Yak Yu King Baseball (J) [!] - St. Andrews Old Course (J) [!] - Violence Killer - Turok New Generation (J) [!] - - - a few info adds - - - Roms to correct (E)(F)(G) : 5 roms - - - Roms to correct (J) : 26 roms - -********************************************************************************************************************* -********************************************************************************************************************* - -19/10/02 V1.4: - - - Finish : -Centre Court Tennis (E) [!] - -Bust-A-Move 3 DX (E) [!] - - - a few info adds - - - Roms to correct (E)(F)(G) : 6 roms - - - Roms to correct (J) : 42 roms - -********************************************************************************************************************* -********************************************************************************************************************* - -11/10/02 V1.3: - - Finish : -Triple Play 2000[!] - -HSV Adventure Racing (A)[!] - -Hydro Thunder (E) [!] - -Hydro Thunder (U) [!] - -New Tetris, The (U) [!] - -New Tetris, The (E) [!] - -Susume! Taisen Puzzle Dama Toukon! Marumata Chou (J) [!] - -South Park Rally (E) [!] - -South Park Rally (U) [!] - -Off Road Challenge (E) [!] - -Off Road Challenge (U) [!] - -Jikkyou G1 Stable (J) [!] - -Pokemon Stadium GS (J) [!] - -Akumajou Dracula Mokushiroku Gaiden-Legend of Cornell (J) [!] - -Les Razmoket - La Chasse Aux Tresors (F) [!] - -Looney Tunes - Duck Dodgers (E) [!] - -NFL Blitz - Special Edition (U) [!] - -Rugrats - Treasure Hunt (E) [!] - -AI Shogi 3 (J) [!] - -NHL Pro 99 (E) [!] - - - Addings in a lot of roms. - - - Roms to correct (E)(F)(G) : 8 roms - - - Roms to correct (J) : 42 roms - - - I have received news from Lnsop which agree to the spread of this file with some little changes - -********************************************************************************************************************* -********************************************************************************************************************* - -06/09/02 V1.2: - - Insop has evolved his file in 1.11 (in english). - but i continue: - - I've collected extra infos - - I've improved the genre infos. ex: racing-rally. - - I must found infos on that games in (e),(u),(f),(g),(a)(22 roms): - Bust a move 3DX, Centre court Tennis, Hydro Thunder, South Park, Les Razmoket, Michael Owens, NBA Pro 98-99, - New Tetris, NFL Blitz, NHL Pro 99, Puzzle Bobble, Racing Simulation 2 (G),RTL soccer, Rugrats treasure hunt, - Super speed race, Telefoot soccer, Off-Road challenge - - and 47 japanese roms to finish. - -********************************************************************************************************************* -********************************************************************************************************************* - -25/09/02 V1.0: - - I began with the fabulous file: Project64 RDX v1.1 - by lnsop - I've changed all the genres (that was some japanese or something like that!) - I've collected extra infos (on Nintendo.com et Nintendo.co.jp) - I've added the rom: Les Razmoket (F) which was added on the rdb file. - I've e-mailed linsop but i have no answer so i continue. - I leave the reference on my file because he has done 80% of the job !!! - - - -*************** -* Conclusion: * -*************** - - - For finish, if you see some improvements to add: - - a genre which could be better (nobody's perfect) - - you know the genre of this games: - Zool - Majou Tsukai Densetsu (J) [!], - Super Speed Race 64 (J) [!], - Kuiki Uhabi Suigo (J) [!], - Fire Electric Pen (J) [!] - - an other unknown info (whith ??) - - a rom to add (only (!) roms) - - e-mail me (perfectdarkfr@free.fr) diff --git a/Bin/Release/Docs/Readme.txt b/Bin/Release/Docs/Readme.txt deleted file mode 100644 index 9dc2c085b..000000000 --- a/Bin/Release/Docs/Readme.txt +++ /dev/null @@ -1,80 +0,0 @@ -================================================ - Project64, by Zilmar and Jabo - Copyright (c) 1998 - 2001 - The Premiere Nintendo64 emulator for Windows -================================================ - -------------------- -Standard Disclaimer -------------------- - -The N64 is a registered trademark of Nintendo, same goes for other companies mentioned above, or their products. - -The authors are not affiliated with any of the companies mentioned, this software may be distributed for free, never sold in any way, as long as the original archive and software included is not modified in any way or distributed with ROM images. - -You use this software at your own risk, the authors are not responsible for any loss or damage resulting from the use of this software. If you do not agree with these terms do not use this software, simple. - --------- -Overview --------- - -Project64 is an emulator that has been in developlment for a couple of years. We are proud to allow other people to use the product that we have made for their enjoyment. Project64 features emulation of the Reality Signal Processor, which was reverse engineered by zilmar. This information has produced an accurate interpreter that has turned in to a recompiler by jabo, setting it apart from some of the emulators in development today. Another feature in Project64 is an accurate and fast Display Processor graphics core for OpenGL and Direct3D, developed by jabo over the last few years. - --------- -Features --------- - -Internally Project64 features two advanced recompilers, for the R4300i and the RSP respectively, both based off of zilmar's original interpreters. Both the R4300i and RSP interpreters are available as alternatives to the recompilers via settings. - -- The R4300i recompiler is written by zilmar. It features dynamic block creation and advanced optimizations due to it's register caching core. It also has self-mod protection schemes implemented to maximize compatibility and speed. - -- The RSP recompiler is written by jabo. This compiler creates dynamic blocks of code, and optimizes the signal processor code through various code analysis techniques. It makes use of MMX and SSE to provide real-time emulation of this powerful co-processor. - -Project64 uses high-level emulation for graphics, and low level emulation for audio. Jabo wrote Direct3D and OpenGL plugins for graphics, they have high quality blending and texturing, with several microcodes implemented from Mario64 to Zelda64 between the plugins. High level microcode emulation is optimized using SSE, and 3DNow!, and some parts of texturing have MMX optimizations. - --------------- -Known Problems --------------- - -Project64 is not perfect, there is some compatibility issues in terms of CPU, Graphics, and Audio that prevents games from functioning properly. See our support web site for a compatibility listing of games that are known to run with Project64, as well as problems that are known already. - -Please do not expect games to be perfect, we put a lot of effort into this emulator, but every detail may not meet the guidelines for perfect emulation. If you want to experience games as they were meant to be played purchase a nintendo 64. - -------------------- -Contact the Authors -------------------- - -All our plugins use the Project64 plugin specifications, see our website for details. - -=> Read this file entirely, use the message boards on the website for all feedback on PJ64, we do not have time to help people individually. - -- If you don't at least meet the min requirements, don't ask us for help -- Do not ask if your system will work, or if we will support your hardware -- Do not ask us about games, we will not send them to you or tell you where to get them -- Do not ask us when a specific game will work -- Do not ask us when the next version will be out, for betas, or what features it will have -- Do not ask us about plugins we didn't write, contact the proper author -- Do not report problems with using our plugins in other emulators -- Do not email us files without permission -- Do not ask us about things not on pj64.net, like the message board, we have no control - -no exceptions, if you want to ask these questions try a messageboard at our website. -http://www.pj64.net - -You can reach us at the following email addresses, if it's feedback on pj64 please think about what you are asking, lots of emails get ignored because you either aren't supposed to email us these questions (read above), or it's answered in this file or through the extensive amount of information available on our support website. - -jabo@emulation64.com, zilmar@emulation64.com - -You can always find updated contact info on our website. - ------------------- -Credits and Greets ------------------- - -We would like to thank the following people for their support and help, in no specific order. - -hWnd, Cricket, F|RES, rcp, _Demo_, Phrodide, icepir8, TNSe, gerrit, schibo, Azimer, Lemmy, LaC, Anarko, duddie, Bpoint, StrmnNrmn, slacka, smiff - -As well as the people we have forgotten. - -[EOF] \ No newline at end of file diff --git a/Bin/Release/Docs/Whatsnew.txt b/Bin/Release/Docs/Whatsnew.txt deleted file mode 100644 index 07ccdddd6..000000000 --- a/Bin/Release/Docs/Whatsnew.txt +++ /dev/null @@ -1,128 +0,0 @@ - -v1.6 - -R4300i core and executable - -- support for rumble enabled controller plugins -- marked some memory allocations with execute flag -- game fixes for DK64, Hydro Thunder, etc -- enable perm cheats -- fixed gui issues -- reduced memory usage - -Direct3D6 - -- Pilotwings no longer crashes -- Fixed drivers that have incorrect depth buffer caps - -Direct3D8 -- Added new plugin - -RSP - -- minor compiler tweaks for speed - -Direct Input - -- support for more axes -- warn user when configuring button already set -- rumble support using force feedback - -==================================================== - -v1.5.1 - -Direct3D6 - -just a few tweaks made soon after v1.5 was released, -that hopefully helped with the "pausing" problem: - -optimised texture cache -better matrix stack handling -optimized texture gen with SSE -less memory uses, faster searches - -==================================================== - -v1.5 - -R4300i core and executable - -- stack pointer optimisations (added SP Hack option) -- PIF2 emulation for Banjo-Tooie and Jet Force Gemini -- added new (default) self.-mod code method: Check Memory Advance -- added Delay SI Interrupt option for games broken in v1.4 -- compiler resets when max code blocks reached rather than erroring -- more non-fatal error messages hidden in release builds -- improved game compatibility - refer to RDB - -- fixed input plugins not showing in menu issue -- fixed possible crash during plugin selection -- fixed couple of causes of crash during rom load -- fixed several possible problems with state saving and loading -- allows saving and window switch while paused -- alt-tab should work better in Win2k/XP -- new rom loading method should fix Radeon+64MB rom issue -- cpu % counters should be more accurate - -- added Hide Advanced Settings option -- added right click menus for rom browser and cheats -- added Always on Top option -- language file rewritten for more complete translations -- added first run selection for language -- opens settings dialog automatically when plugin missing -- better prevention of rom loading when plugins are not initialised -- end emulation in fullscreen doesn't mess up -- rom browser sort now saves by multiple columns -- rom browser window shrink bug fixed -- rom browser sorting by Genre works -- rom browser configuration saving moved to registry -- defaulted first column to Good Name -- removed User Notes box (still reads file) -- added ROM Notes tab -- fixed help file open in Win2k/XP -- fixed many bugs in menu item availibility, less crashes -- added and altered some shortcut keys - -- added edit and delete cheats functions -- improved dialog, can enter many codes at once etc. -- nodes show partially selected cheats with grey ticks -- added serial repeater, activator and stacked activator support -- raised limits to 100 codes per cheat and 500 cheats per game -- added GS button support -- remembers window position, window can be resized -- removed 'mark all' button (caused problems) -- function keys work while cheat window open -- added option for remember selected cheats - - -RSP - -- Implemented more opcodes in compiler -- Validated task lists before sending - - -Direct Input - -- Analog stick range slider -- Set default button - - -Direct3D - -- Better support for cards that lack blending & large textures -- Support for sprite microcodes -- Improved microcode detection -- Rewrote frame buffer emulation, new options to speed it up too -- Redesigned configuration dialog -- Anisotropic filtering slider -- Texture cache more reliable, and faster -- GeForce 3, 4 and Radeon support improved -- Lots of fixes for games, too many to list - - -Direct Sound - -- Implemented volume control -- Cleaned up dialog - diff --git a/Bin/Release/PJgameFAQ.chm b/Bin/Release/PJgameFAQ.chm deleted file mode 100644 index ea3b39454..000000000 Binary files a/Bin/Release/PJgameFAQ.chm and /dev/null differ diff --git a/Bin/Release/Project64.chm b/Bin/Release/Project64.chm deleted file mode 100644 index 0dfbad879..000000000 Binary files a/Bin/Release/Project64.chm and /dev/null differ diff --git a/Bin/Release/pif2.dat b/Bin/Release/pif2.dat deleted file mode 100644 index 78ccf364d..000000000 --- a/Bin/Release/pif2.dat +++ /dev/null @@ -1,275 +0,0 @@ -; DO NOT EDIT THIS FILE -; File created by Tooie and Azimer - -; Jet Force Gemini -0x8FBB1DB876B63CEC, 0x025BEAEDEC803A6B, 0xDEB04FDB4CF76A13, 0x000B73E74AC64045 - -; Banjo Tooie -0x0004001000400000, 0x0200000000000001, 0xA862ECC671D39FBF, 0x00F9F9F9F9F9F9CB -0x0004001000400001, 0x0200001000400001, 0x71939FBF8C2AE6B4, 0x00171737C6A8EC76 -0x0004001000400002, 0x0200002000800001, 0xA862ECC671D399B9, 0x001717177171F9CB -0x0004001000400003, 0x0200003000C00001, 0x71939FBF8C2AC6BE, 0x005555558C2AEC76 -0x0004001000410004, 0x0200004000000001, 0xF91B1737E6B471B3, 0x00ECC6A8ECC66EFE -0x0004001000410005, 0x0200005000400001, 0xA862ECE69F2FC6B8, 0x00ECC6A81737F9CB -0x0004001000410006, 0x0200006000800001, 0x71939FBF8C5A37BD, 0x00C66E4EECE6EC76 -0x0004001000410007, 0x0200007000C00001, 0x8CCA6EEC9909A8B2, 0x00C66E4E17377163 -0x0004001000420008, 0x0200008000000001, 0xA862ECE69F5F17B7, 0x00717171F9F9F9CB -0x0004001000420009, 0x0200009000400001, 0xF91B1737C60E6EBC, 0x005555B5E6046EFE -0x000400100042000A, 0x020000A000800001, 0xA862ECE69F5F11B1, 0x009F9F9F7171F9CB -0x000400100042000B, 0x020000B000C00001, 0x55151111A8A2ECB6, 0x007171D38C2A8C5A -0x000400100043000C, 0x020000C000000001, 0xF91B1737C69855BB, 0x006E8C2AECC66EFE -0x000400100043000D, 0x020000D000400001, 0x4EE0C66E17A74EB0, 0x00ECC6A89FBF7163 -0x000400100043000E, 0x020000E000800001, 0xF91B1737C69855B5, 0x006E8C2A6E4E6EFE -0x000400100043000F, 0x020000F000C00001, 0x4EE0C66E17A78CBA, 0x006EECC617377163 -0x0004001100440010, 0x0200000000000001, 0x8CCA6E3CC62EE604, 0x0071717171717163 -0x0004001100440011, 0x0200001000400001, 0x5575716317D79909, 0x00171737C6A88C5A -0x0004001100440012, 0x0200002000800001, 0x8CCA6E3CC62EC60E, 0x009F9F9FF9F97163 -0x0004001100440013, 0x0200003000C00001, 0x37FDF9CB71B37103, 0x009F9FBF6E8C6E1C -0x0004001100450014, 0x0200004000000001, 0x37FDF9CB7123C608, 0x00ECC6A8ECC66E1C -0x0004001100450015, 0x0200005000400001, 0x8CCA6E3CC65E370D, 0x006E8C2A9FBF7163 -0x0004001100450016, 0x0200006000800001, 0x55757163370DA802, 0x00C66E4EECE68C5A -0x0004001100450017, 0x0200007000C00001, 0x8CCA6E3CC65E1707, 0x00C66E4E17377163 -0x0004001100460018, 0x0200008000000001, 0xA862EC16A8026E0C, 0x00717171F9F9F9CB -0x0004001100460019, 0x0200009000400001, 0x37FDF9CB71531101, 0x005555B5E6046E1C -0x000400110046001A, 0x020000A000800001, 0x4EE0E6B4ECA6EC06, 0x00171717F9F97163 -0x000400110046001B, 0x020000B000C00001, 0x557571631797550B, 0x007171D38C2A8C5A -0x000400110047001C, 0x020000C000000001, 0x55757143F9AB4E00, 0x00ECC6A8C66E8C5A -0x000400110047001D, 0x020000D000400001, 0x8CCA6E1C6E9C5505, 0x00ECC6A89FBF7163 -0x000400110047001E, 0x020000E000800001, 0x55757143F9AB8C0A, 0x006EECC6ECE68C5A -0x000400110047001F, 0x020000F000C00001, 0x4EE0E6B4ECD69F0F, 0x006EECC617377163 -0x0004001200480020, 0x0200000000000001, 0x4EE0C66811915555, 0x0071717171717163 -0x0004001200480021, 0x0200001000400001, 0x71939FBF4EA08C5A, 0x00171737C6A8EC76 -0x0004001200480022, 0x0200002000800001, 0x4EE0C648F9DB9F5F, 0x009F9F9FF9F97163 -0x0004001200480023, 0x0200003000C00001, 0x9959551BA822E654, 0x007171D3C6A8C69E -0x0004001200490024, 0x0200004000000001, 0x71939FBF4ED09959, 0x006E8C2AC66EEC76 -0x0004001200490025, 0x0200005000400001, 0x4EE0C6681727C65E, 0x006E8C2A9FBF7163 -0x0004001200490026, 0x0200006000800001, 0x557571116EBC7153, 0x00C66E4EECE68C5A -0x0004001200490027, 0x0200007000C00001, 0x4EE0C6681727C658, 0x00C66E4E17377163 -0x00040012004A0028, 0x0200008000000001, 0x4EE0C6681757375D, 0x00F9F9F971717163 -0x00040012004A0029, 0x0200009000400001, 0x379D99B9EC06A852, 0x005555B5E6046E1C -0x00040012004A002A, 0x020000A000800001, 0x4EE0C66817571757, 0x00171717F9F97163 -0x00040012004A002B, 0x020000B000C00001, 0x379D99B9EC066E5C, 0x001717376E8C6E1C -0x00040012004B002C, 0x020000C000000001, 0x557571116E5C1151, 0x00ECC6A8C66E8C5A -0x00040012004B002D, 0x020000D000400001, 0xA8624EE09FAFEC56, 0x006E8C2A1737F9CB -0x00040012004B002E, 0x020000E000800001, 0x71939FBF4E90555B, 0x006EECC6ECE6EC76 -0x00040012004B002F, 0x020000F000C00001, 0xA8624EE09FAF4E50, 0x00C66E4E9FBFF9CB -0x00040013004C0030, 0x0200000000000001, 0x4EE0C6BEEC26C6A8, 0x0071717171717163 -0x00040013004C0031, 0x0200001000400001, 0xF91B376D115137AD, 0x00171737E6046EFE -0x00040013004C0032, 0x0200002000800001, 0x4EE0E6B44E00A8A2, 0x009F9F9FF9F97163 -0x00040013004C0033, 0x0200003000C00001, 0xF91B376D115117A7, 0x009F9FBF6E8C6EFE -0x00040013004D0034, 0x0200004000000001, 0xF91B17A755056EAC, 0x00ECC6A8ECC66EFE -0x00040013004D0035, 0x0200005000400001, 0x4EE0E6B44EB071A1, 0x006E8C2A9FBF7163 -0x00040013004D0036, 0x0200006000800001, 0xF91B374DF9A9ECA6, 0x00ECC6A86E4E6EFE -0x00040013004D0037, 0x0200007000C00001, 0xA862EC36C638F9AB, 0x006EECC69FBFF9CB -0x00040013004E0038, 0x0200008000000001, 0xA862EC166EAE4EA0, 0x00717171F9F9F9CB -0x00040013004E0039, 0x0200009000400001, 0x995955E59F9F55A5, 0x001717378C2AC69E -0x00040013004E003A, 0x020000A000800001, 0xA862EC166EAE8CAA, 0x009F9F9F7171F9CB -0x00040013004E003B, 0x020000B000C00001, 0xF91B374DF9D99FAF, 0x001717376E8C6EFE -0x00040013004F003C, 0x020000C000000001, 0xF91B17A75525E6A4, 0x006E8C2AECC66EFE -0x00040013004F003D, 0x020000D000400001, 0xA8624E10A832F9A9, 0x006E8C2A1737F9CB -0x00040013004F003E, 0x020000E000800001, 0x995955E59F0F6EAE, 0x00C66E4EC66EC69E -0x00040013004F003F, 0x020000F000C00001, 0x4EE0C6BE8CBA71A3, 0x006EECC617377163 -0x0005001400500040, 0x0200000000000001, 0xA8F2F91B6E8CF9F9, 0x00F9F9F9F9F9F9CB -0x0005001400500041, 0x0200001000400001, 0x9FCF6EAC55556EFE, 0x009F9FBF8C2AE694 -0x0005001400500042, 0x0200002000800001, 0xC65E553BE60471F3, 0x009F9F9FF9F971E1 -0x0005001400500043, 0x0200003000C00001, 0x17678CCA7171C6F8, 0x009F9FBF6E8C6E1C -0x0005001400510044, 0x0200004000000001, 0x9FCFA86237AD37FD, 0x00ECE6046EECE694 -0x0005001400510045, 0x0200005000400001, 0x8C7A71B38C5AA8F2, 0x006E8C2A9FBF7163 -0x0005001400510046, 0x0200006000800001, 0x9FCFA86237AD17F7, 0x006EECC6C66EE694 -0x0005001400510047, 0x0200007000C00001, 0x8C7A71B38C5A6EFC, 0x00C66E4E17377163 -0x0005001400520048, 0x0200008000000001, 0xC65E553BC60E71F1, 0x00F9F9F9717171E1 -0x0005001400520049, 0x0200009000400001, 0x17678CCA71F3ECF6, 0x005555B5E6046E1C -0x000500140052004A, 0x020000A000800001, 0x8C7A71B3EC86F9FB, 0x00171717F9F97163 -0x000500140052004B, 0x020000B000C00001, 0x17678CCA71F34EF0, 0x001717376E8C6E1C -0x000500140053004C, 0x020000C000000001, 0x9FCFA842F9EB55F5, 0x00C66E8C6EECE694 -0x000500140053004D, 0x020000D000400001, 0xC65E553BC6F88CFA, 0x00ECC6A89FBF71E1 -0x000500140053004E, 0x020000E000800001, 0x17674EE099299FFF, 0x006E8C2A6E4E6E1C -0x000500140053004F, 0x020000F000C00001, 0xA8F2F9B94E70E6F4, 0x00C66E4E9FBFF9CB -0x0005001500540050, 0x0200000000000001, 0xC65E55E599596E4E, 0x00717171717171E1 -0x0005001500540051, 0x0200001000400001, 0x17674E30C6087143, 0x00171737E6046E1C -0x0005001500540052, 0x0200002000800001, 0x8C7A71A15575C648, 0x009F9F9Ff9f97163 -0x0005001500540053, 0x0200003000C00001, 0x17674E106EAC374D, 0x009F9FBF6E8C6E1C -0x0005001500550054, 0x0200004000000001, 0x17674E30C65EA842, 0x00ECC6A8ECC66E1C -0x0005001500550055, 0x0200005000400001, 0xC6989FCF71A11747, 0x006E8C2A9FBF71E1 -0x0005001500550056, 0x0200006000800001, 0x17674E30C65E6E4C, 0x00ECC6A86E4E6E1C -0x0005001500550057, 0x0200007000C00001, 0x4E101767370D7141, 0x00C66E4E17377163 -0x0005001500560058, 0x0200008000000001, 0x4E10176717F7EC46, 0x00F9F9F971717163 -0x0005001500560059, 0x0200009000400001, 0x55E5C6B88C8AF94B, 0x005555B5C6A88C5A -0x000500150056005A, 0x020000A000800001, 0x4E10176717F74E40, 0x00171717F9F97163 -0x000500150056005B, 0x020000B000C00001, 0x55E5C6B88CEA5545, 0x007171D38C2A8C5A -0x000500150057005C, 0x020000C000000001, 0x17674E106EFC8C4A, 0x006E8C2AECC66E1C -0x000500150057005D, 0x020000D000400001, 0x4E101767372D9F4F, 0x00ECC6A89FBF7163 -0x000500150057005E, 0x020000E000800001, 0x17674E30E674E644, 0x006E8C2A6E4E6E1C -0x000500150057005F, 0x020000F000C00001, 0xC6989FEF9F8FF949, 0x006EECC6173771E1 -0x0005001600580060, 0x0200000000000001, 0xC6989F1FA8229F9F, 0x00717171717171E1 -0x0005001600580061, 0x0200001000400001, 0x9FCF6E4CF979E694, 0x009F9FBF8C2AE694 -0x0005001600580062, 0x0200002000800001, 0xC65E5535E684F999, 0x009F9F9FF9F971E1 -0x0005001600580063, 0x0200003000C00001, 0x9FCF6E6C375D6E9E, 0x007171D3C6A8E694 -0x0005001600590064, 0x0200004000000001, 0x9FCF6E6C11017193, 0x00ECE6046EECE694 -0x0005001600590065, 0x0200005000400001, 0xC65E55156E7EC698, 0x006E8C2A9FBF71E1 -0x0005001600590066, 0x0200006000800001, 0x1767ECA655A5379D, 0x00ECC6A86E4E6E1C -0x0005001600590067, 0x0200007000C00001, 0xC6989F1FA852A892, 0x00C66E4E173771E1 -0x00050016005A0068, 0x0200008000000001, 0x4E1037BD8CAA1797, 0x00F9F9F971717163 -0x00050016005A0069, 0x0200009000400001, 0x9FCF6E6C17576E9C, 0x001717378C2AE694 -0x00050016005A006A, 0x020000A000800001, 0x4E1037BDEC067191, 0x00171717F9F97163 -0x00050016005A006B, 0x020000B000C00001, 0x9FCF6E4CF9FBEC96, 0x00555555C6A8E694 -0x00050016005B006C, 0x020000C000000001, 0x55E5E6C47183F99B, 0x00ECC6A8C66E8C5A -0x00050016005B006D, 0x020000D000400001, 0x8C7A71B34EF04E90, 0x00ECC6A89FBF7163 -0x00050016005B006E, 0x020000E000800001, 0x55E5E6C471E35595, 0x006EECC6ECE68C5A -0x00050016005B006F, 0x020000F000C00001, 0x8C7A71B34EF08C9A, 0x006EECC617377163 -0x00050017005C0070, 0x0200000000000001, 0xA8F2F9AB55F5ECE6, 0x00F9F9F9F9F9F9CB -0x00050017005C0071, 0x0200001000400001, 0x17678C3AC6E855EB, 0x00171737E6046E1C -0x00050017005C0072, 0x0200002000800001, 0xA8F2F9AB55F54EE0, 0x001717177171F9CB -0x00050017005C0073, 0x0200003000C00001, 0x17678C3AC6E855E5, 0x009F9FBF6E8C6E1C -0x00050017005D0074, 0x0200004000000001, 0x9FCFA8B28CFA8CEA, 0x00ECE6046EECE694 -0x00050017005D0075, 0x0200005000400001, 0xA8F2F9AB552B9FEF, 0x00ECC6A81737F9CB -0x00050017005D0076, 0x0200006000800001, 0x55E5E614A872E6E4, 0x00C66E4EECE68C5A -0x00050017005D0077, 0x0200007000C00001, 0xA8F2F9AB552B99E9, 0x006EECC69FBFF9CB -0x00050017005E0078, 0x0200008000000001, 0x8C1A11611777C6EE, 0x00F9F9F971717163 -0x00050017005E0079, 0x0200009000400001, 0x9FCFA8B28C0A71E3, 0x001717378C2AE694 -0x00050017005E007A, 0x020000A000800001, 0x8C1A11611777C6E8, 0x00171717F9F97163 -0x00050017005E007B, 0x020000B000C00001, 0x17678C1A6EAE37ED, 0x001717376E8C6E1C -0x00050017005F007C, 0x020000C000000001, 0x55E5C6B84E50A8E2, 0x00ECC6A8C66E8C5A -0x00050017005F007D, 0x020000D000400001, 0xA8F2F9C971A317E7, 0x006E8C2A1737F9CB -0x00050017005F007E, 0x020000E000800001, 0x55E5C6B84E506EEC, 0x006EECC6ECE68C5A -0x00050017005F007F, 0x020000F000C00001, 0xABF2F9C971A311E1, 0x00C66E4E9FBFF9CB -0x0006001800600080, 0x0200000000000001, 0x6E6CEC46F9F91737, 0x00F9F9F9F9F9F9CB -0x0006001800600081, 0x0200001000400001, 0x379D9F3FC6A86E3C, 0x00171737E6046E1C -0x0006001800600082, 0x0200002000800001, 0x6E6CEC46F9F91131, 0x001717177171F9CB -0x0006001800600083, 0x0200003000C00001, 0x379D9F1F6E4EEC36, 0x009F9FBF6E8C6E1C -0x0006001800610084, 0x0200004000000001, 0x379D9F1F6E3C553B, 0x00ECC6A8ECC66E1C -0x0006001800610085, 0x0200005000400001, 0xE6C46ECE71434E30, 0x006E8C2A9FBF71E1 -0x0006001800610086, 0x0200006000800001, 0x379D9F1F6E3C5535, 0x00ECC6A86E4E6E1C -0x0006001800610087, 0x0200007000C00001, 0xE6C46ECE71438C3A, 0x00C66E4E173771E1 -0x0006001800620088, 0x0200008000000001, 0x6E6CEC46F97B9F3F, 0x00717171F9F9F9CB -0x0006001800620089, 0x0200009000400001, 0x551537BD4EC0E634, 0x005555B5C6A88C5A -0x000600180062008A, 0x020000A000800001, 0x6E6CEC46F97B9939, 0x009F9F9F7171F9CB -0x000600180062008B, 0x020000B000C00001, 0x551537BD4EC0C63E, 0x007171D38C2A8C5A -0x000600180063008C, 0x020000C000000001, 0x379D9F3FE6547133, 0x006E8C2AECC66E1C -0x000600180063008D, 0x020000D000400001, 0x6E6C4EA055C5C638, 0x006E8C2A1737F9CB -0x000600180063008E, 0x020000E000800001, 0x379D9F3FC6F8373D, 0x006E8C2A6E4E6E1C -0x000600180063008F, 0x020000F000C00001, 0x6E6CEC6617A7A832, 0x00C66E4E9FBFF9CB -0x0006001900640090, 0x0200000000000001, 0x8CEAE6146EAC6E8C, 0x0071717171717163 -0x0006001900640091, 0x0200001000400001, 0x7153556B37FD1181, 0x00171737C6A8EC76 -0x0006001900640092, 0x0200002000800001, 0x8CEAC61EA842EC86, 0x009F9F9FF9F97163 -0x0006001900640093, 0x0200003000C00001, 0x715355A5553B558B, 0x005555558C2AEC76 -0x0006001900650094, 0x0200004000000001, 0x7153556B17474E80, 0x006E8C2AC66EEC76 -0x0006001900650095, 0x0200005000400001, 0xE6C4A8B24E305585, 0x006E8C2A9FBF71E1 -0x0006001900650096, 0x0200006000800001, 0x7153556B17478C8A, 0x00C66E4EECE6EC76 -0x0006001900650097, 0x0200007000C00001, 0xE6C46EBC8C7A9F8F, 0x00C66E4E173771E1 -0x0006001900660098, 0x0200008000000001, 0x8CEAE634E6C4E684, 0x00F9F9F971717163 -0x0006001900660099, 0x0200009000400001, 0x9F7F71E39F7F9989, 0x001717378C2AE694 -0x000600190066009A, 0x020000A000800001, 0x8CEAE634E6C4C68E, 0x00171717F9F97163 -0x000600190066009B, 0x020000B000C00001, 0x9F7F71C371537183, 0x00555555C6A8E694 -0x000600190067009C, 0x020000C000000001, 0x17F7F94BF9C9C688, 0x006E8C2AECC66E1C -0x000600190067009D, 0x020000D000400001, 0x8CEAE6146EFC378D, 0x00ECC6A89FBF7163 -0x000600190067009E, 0x020000E000800001, 0x17F7F94BF9ABA882, 0x006E8C2A6E4E6E1C -0x000600190067009F, 0x020000F000C00001, 0x8CEAE6146EFC1787, 0x006EECC617377163 -0x0002000A002800A0, 0x0200000000000000, 0xF97B71919F1F71D3, 0x00F9F9F9F9F9F9F9 -0x0002000A002800A1, 0x0200001000400000, 0x4EC06EEEE684C6D8, 0x009F9FBF8C2AC66E -0x0002000A002800A2, 0x0200002000800000, 0x71F3F91917B737DD, 0x009F9F9FF9F97171 -0x0002000A002800A3, 0x0200003000C00000, 0xC6684E60EC66A8D2, 0x009F9FBF6E8C6EEC -0x0002000A002900A4, 0x0200004000000000, 0xECE6C6C86EBC17D7, 0x00ECE6046EECC66E -0x0002000A002900A5, 0x0200005000400000, 0x71111757556B6EDC, 0x006E8C2A9FBF7171 -0x0002000A002900A6, 0x0200006000800000, 0x4EC06EEEE61471D1, 0x006EECC6C66EC66E -0x0002000A002900A7, 0x0200007000C00000, 0xF97B71131101ECD6, 0x006EECC69FBFF9F9 -0x0002000A002A00A8, 0x0200008000000000, 0xF97B71737191F9DB, 0x00717171F9F9F9F9 -0x0002000A002A00A9, 0x0200009000400000, 0xC6684E60EC064ED0, 0x005555B5E6046EEC -0x0002000A002A00AA, 0x020000A000800000, 0x71F3F9FBF9FB55D5, 0x00171717F9F97171 -0x0002000A002A00AB, 0x020000B000C00000, 0xC6684E60EC068CDA, 0x001717376E8C6EEC -0x0002000A002B00AC, 0x020000C000000000, 0x4EC06EEEC63E9FDF, 0x00C66E8C6EECC66E -0x0002000A002B00AD, 0x020000D000400000, 0xF97B71737183E6D4, 0x006E8C2A1737F9F9 -0x0002000A002B00AE, 0x020000E000800000, 0xC6684E60EC96F9D9, 0x006E8C2A6E4E6EEC -0x0002000A002B00AF, 0x020000F000C00000, 0x7111175755656EDE, 0x006EECC617377171 -0x0002000B002C00B0, 0x0200000000000000, 0x9F5F55654E008C2A, 0x009F9F9F9F9F9F9F -0x0002000B002C00B1, 0x0200001000400000, 0xECE6C67871339F2F, 0x009F9FBF8C2AC66E -0x0002000B002C00B2, 0x0200002000800000, 0xF97B71E3C688E624, 0x991717177171F9F9 -0x0002000B002C00B3, 0x0200003000C00000, 0xECE6C67871339929, 0x007171D3C6A8C66E -0x0002000B002D00B4, 0x0200004000000000, 0x4EC06E1E378DC62E, 0x00ECE6046EECC66E -0x0002000B002D00B5, 0x0200005000400000, 0xF97B71E3C6187123, 0x00ECC6A81737F9F9 -0x0002000B002D00B6, 0x0200006000800000, 0x4EC06E1E378DC628, 0x006EECC6C66EC66E -0x0002000B002D00B7, 0x0200007000C00000, 0x9F5F55654EB0372D, 0x00C66E8C55559F9F -0x0002000B002E00B8, 0x0200008000000000, 0xF97B71E3E664A822, 0x00717171F9F9F9F9 -0x0002000B002E00B9, 0x0200009000400000, 0x4EC06E5C55B51727, 0x001717378C2AC66E -0x0002000B002E00BA, 0x020000A000800000, 0xF97B71E3E6646E2C, 0x009F9F9F7171F9F9 -0x0002000B002E00BB, 0x020000B000C00000, 0xC6684EF0F9BB1121, 0x001717376E8C6EEC -0x0002000B002F00BC, 0x020000C000000000, 0xC668EC969F0FEC26, 0x006E8C2AECC66EEC -0x0002000B002F00BD, 0x020000D000400000, 0xF97B71E3E6F4552B, 0x006E8C2A1737F9F9 -0x0002000B002F00BE, 0x020000E000800000, 0xC668EC969F0F4E20, 0x006E8C2A6E4E6EEC -0x0002000B002F00BF, 0x020000F000C00000, 0xF97B71E3E6F45525, 0x00C66E4E9FBFF9F9 -0x0003000C003000C0, 0x0200000000000000, 0xF9EBC6E8C66E7171, 0x00F9F9F9F9F9F9F9 -0x0003000C003000C1, 0x0200001000400000, 0x4E1011515555EC76, 0x009F9FBF8C2AC66E -0x0003000C003000C2, 0x0200002000800000, 0x376D8C6AECE6F97B, 0x001717379F9F1717 -0x0003000C003000C3, 0x0200003000C00000, 0x4E10115155554E70, 0x007171D3C6A8C66E -0x0003000C003100C4, 0x0200004000000000, 0xEC16377D71435575, 0x00ECE6046EECC66E -0x0003000C003100C5, 0x0200005000400000, 0x376D8C6A8C5A8C7A, 0x00C66EEC55551717 -0x0003000C003100C6, 0x0200006000800000, 0xEC16371D11819F7F, 0x006EECC6C66EC66E -0x0003000C003100C7, 0x0200007000C00000, 0xF9EBC6E8C6D8E674, 0x006EECC69FBFF9F9 -0x0003000C003200C8, 0x0200008000000000, 0x376D8C6A4EE0F979, 0x009F9F9F17171717 -0x0003000C003200C9, 0x0200009000400000, 0xE654559599B96E7E, 0x005555B5E6046EEC -0x0003000C003200CA, 0x020000A000800000, 0xF9EBC6E8C6687173, 0x009F9F9F7171F9F9 -0x0003000C003200CB, 0x020000B000C00000, 0x4E70711337DDC678, 0x00555555C6A8C66E -0x0003000C003300CC, 0x020000C000000000, 0xEC16377D7103377D, 0x00C66E8C6EECC66E -0x0003000C003300CD, 0x020000D000400000, 0xF9EBC6E8E6B4A872, 0x006E8C2A1737F9F9 -0x0003000C003300CE, 0x020000E000800000, 0xEC16377D71031777, 0x00C66E4EC66EC66E -0x0003000C003300CF, 0x020000F000C00000, 0xF9EBC6E8C6BE6E7C, 0x00C66E4E9FBFF9F9 -0x0003000D003400D0, 0x0200000000000000, 0x376D8C9A9959ECC6, 0x0017171717171717 -0x0003000D003400D1, 0x0200001000400000, 0x6E9E9F6F8CEAF9CB, 0x00171737C6A8ECC6 -0x0003000D003400D2, 0x0200002000800000, 0x376D8C9A99594EC0, 0x001717379F9F1717 -0x0003000D003400D3, 0x0200003000C00000, 0xEC1617C7A84255C5, 0x007171D3C6A8C66E -0x0003000D003500D4, 0x0200004000000000, 0xEC1637EDC65E8CCA, 0x00ECE6046EECC66E -0x0003000D003500D5, 0x0200005000400000, 0x376DEC5655859FCF, 0x00C66EEC55551717 -0x0003000D003500D6, 0x0200006000800000, 0xEC1617C76EDCE6C4, 0x006EECC6C66EC66E -0x0003000D003500D7, 0x0200007000C00000, 0x376D4E909FEFF9C9, 0x00ECC6A871D31717 -0x0003000D003600D8, 0x0200008000000000, 0xF9EBC61837BD6ECE, 0x00717171F9F9F9F9 -0x0003000D003600D9, 0x0200009000400000, 0xEC1617C76E6C71C3, 0x001717378C2AC66E -0x0003000D003600DA, 0x020000A000800000, 0x55C5A87271D1C6C8, 0x009F9F9F71D35555 -0x0003000D003600DB, 0x020000B000C00000, 0xEC1617C7A80237CD, 0x00555555C6A8C66E -0x0003000D003700DC, 0x020000C000000000, 0xEC1637EDC6B8A8C2, 0x00C66E8C6EECC66E -0x0003000D003700DD, 0x020000D000400000, 0xF9EBC618170717C7, 0x006E8C2A1737F9F9 -0x0003000D003700DE, 0x020000E000800000, 0xEC1617C7A8B26ECC, 0x00C66E4EC66EC66E -0x0003000D003700DF, 0x020000F000C00000, 0x55C5A812116171C1, 0x006EECC611115555 -0x0003000E003800E0, 0x0200000000000000, 0x55C56ECC6E0C1717, 0x0055555555555555 -0x0003000E003800E1, 0x0200001000400000, 0xEC16371D17B76E1C, 0x009F9FBF8C2AC66E -0x0003000E003800E2, 0x0200002000800000, 0xF9EBE664EC667111, 0x001717177171F9F9 -0x0003000E003800E3, 0x0200003000C00000, 0xEC16371D375DEC16, 0x007171D3C6A8C66E -0x0003000E003900E4, 0x0200004000000000, 0xEC16177771E3F91B, 0x00ECE6046EECC66E -0x0003000E003900E5, 0x0200005000400000, 0x55C56ECCA8524E10, 0x006E8C2A99995555 -0x0003000E003900E6, 0x0200006000800000, 0x6E9E9FFFF94B5515, 0x00C66E4EECE6ECC6 -0x0003000E003900E7, 0x0200007000C00000, 0x55C56ECCA8528C1A, 0x00C66E4E11115555 -0x0003000E003A00E8, 0x0200008000000000, 0x55C5A8E2C68E9F1F, 0x007171D355555555 -0x0003000E003A00E9, 0x0200009000400000, 0xE654555B55D5E614, 0x005555B5E6046EEC -0x0003000E003A00EA, 0x020000A000800000, 0x55C5A8E2C6E8F919, 0x009F9F9F71D35555 -0x0003000E003A00EB, 0x020000B000C00000, 0xEC16171711B16E1E, 0x00555555C6A8C66E -0x0003000E003B00EC, 0x020000C000000000, 0xE654555B55657113, 0x006E8C2AECC66EEC -0x0003000E003B00ED, 0x020000D000400000, 0xF9EBE6648CDAC618, 0x006E8C2A1737F9F9 -0x0003000E003B00EE, 0x020000E000800000, 0xE654555B550B371D, 0x006E8C2A6E4E6EEC -0x0003000E003B00EF, 0x020000F000C00000, 0x55C56ECC6EBCA812, 0x006EECC611115555 -0x0003000F003C00F0, 0x0200000000000000, 0x376D8C9A9FDFC66E, 0x0017171717171717 -0x0003000F003C00F1, 0x0200001000400000, 0xC69899698C6A7163, 0x00171737E6046EEC -0x0003000F003C00F2, 0x0200002000800000, 0x376D8C9A9FDFC668, 0x001717379F9F1717 -0x0003000F003C00F3, 0x0200003000C00000, 0xC69899694E00376D, 0x009F9FBF6E8C6EEC -0x0003000F003D00F4, 0x0200004000000000, 0xC6989969ECB6A862, 0x00ECC6A8ECC66EEC -0x0003000F003D00F5, 0x0200005000400000, 0x376D4E5055051767, 0x00C66EEC55551717 -0x0003000F003D00F6, 0x0200006000800000, 0xC69899694EB06E6C, 0x00ECC6A86E4E6EEC -0x0003000F003D00F7, 0x0200007000C00000, 0x376D4E5055051161, 0x00ECC6A871D31717 -0x0003000F003E00F8, 0x0200008000000000, 0x376D4E50555BEC66, 0x009F9F9F17171717 -0x0003000F003E00F9, 0x0200009000400000, 0xEC1617E7E644556B, 0x001717378C2AC66E -0x0003000F003E00FA, 0x020000A000800000, 0x376D4E50555B4E60, 0x009F9FBF9F9F1717 -0x0003000F003E00FB, 0x020000B000C00000, 0xEC1617E7E6445565, 0x00555555C6A8C66E -0x0003000F003F00FC, 0x020000C000000000, 0xC69899694E508C6A, 0x006E8C2AECC66EEC -0x0003000F003F00FD, 0x020000D000400000, 0x55C5A81217879F6F, 0x00ECC6A899995555 -0x0003000F003F00FE, 0x020000E000800000, 0x4E7071C16EDEE664, 0x00C66E4EC66EC66E -0x0003000F003F00FF, 0x020000F000C00000, 0x55C5A81217879969, 0x006EECC611115555 - -0x0006001A006800A0, 0x0200000000000001, 0x6E6C4E60375D71D3, 0x00F9F9F9F9F9F9CB -0x0006001A006800A1, 0x0200001000400001, 0x17F7F9196ECEC6D8, 0x00171737E6046E1C -0x0006001A006800A2, 0x0200002000800001, 0x8CEAC6C871F137DD, 0x009F9F9FF9F97163 -0x0006001A006800A3, 0x0200003000C00001, 0x551517B74EA0A8D2, 0x005555558C2A8C5A -0x0006001A006900A4, 0x0200004000000001, 0x9F1F11B1ECF617D7, 0x00ECE6046EECE694 -0x0006001A006900A5, 0x0200005000400001, 0x6E6C8CAA55A56EDC, 0x00ECC6A81737F9CB -0x0006001A006900A6, 0x0200006000800001, 0x9F7F7113A85271D1, 0x006EECC6C66EE694 -0x0006001A006900A7, 0x0200007000C00001, 0x6E6C4E40F94BECD6, 0x006EECC69FBFF9CB -0x0006001A006A00A8, 0x0200008000000001, 0x6E6C8CAA55D5F9DB, 0x00717171F9F9F9CB -0x0006001A006A00A9, 0x0200009000400001, 0x551517B74E404ED0, 0x005555B5C6A88C5A -0x0006001A006A00AA, 0x020000A000800001, 0xE6C46EEE993955D5, 0x00171717F9F971E1 diff --git a/Config/Glide64.rdb b/Config/Glide64.rdb index 9eef2adb8..ebecb2e2f 100644 --- a/Config/Glide64.rdb +++ b/Config/Glide64.rdb @@ -11,7 +11,7 @@ // 2 - F3DEX 2.XX (The Legend of Zelda: Ocarina of Time) // 3 - F3DEX ? (WaveRace) // 4 - RSP SW 2.0D EXT (Star Wars: Shadows of the Empire) -// 5 - RSP SW 2.0 (Diddy Kong Racing); +// 5 - RSP SW 2.0 (Diddy Kong Racing); // 6 - S2DEX 1.XX (Yoshi's Story - SimCity 2000) // 7 - RSP SW PD (Perfect Dark) // 8 - F3DEXBG 2.08 (Conker's Bad Fur Day) @@ -24,10 +24,10 @@ 057e7c62=1 07200895=0 0bf36d36=9 -0d7bbffb=-1 +0d7bbffb=-1 0d7cbffb=5 0ff79527=2 -0ff795bf=-1 +0ff795bf=-1 1118b3e0=1 1517a281=1 168e9cd5=2 @@ -182,8 +182,6 @@ Internal Name=1080 SNOWBOARDING alt_tex_size=1 depthmode=0 fb_clear=1 -fb_hires=1 -fb_smart=1 optimize_texrect=1 swapmode=2 @@ -192,8 +190,6 @@ Good Name=1080 Snowboarding (JU) (M2) Internal Name=1080 SNOWBOARDING depthmode=0 fb_clear=1 -fb_hires=1 -fb_smart=1 optimize_texrect=1 swapmode=2 @@ -285,16 +281,12 @@ force_depth_compare=1 Good Name=All-Star Baseball 2000 (E) Internal Name=All-Star Baseball '0 depthmode=0 -fb_hires=1 -fb_smart=1 force_depth_compare=1 [5E547A4D-90E60795-C:45] Good Name=All-Star Baseball 2000 (U) Internal Name=All-Star Baseball '0 depthmode=0 -fb_hires=1 -fb_smart=1 force_depth_compare=1 [5446C6EF-E18E47BB-C:45] @@ -323,8 +315,6 @@ use_sts1_only=1 Good Name=Baku Bomberman (J) Internal Name=BAKU-BOMBERMAN depthmode=0 -fb_hires=1 -fb_smart=1 [E73C7C4F-AF93B838-C:4A] Good Name=Baku Bomberman 2 (J) @@ -347,63 +337,47 @@ fb_info_disable=1 Good Name=Banjo to Kazooie no Daibouken (J) Internal Name=Banjo-Kazooie depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [514B6900-B4B19881-C:4A] Good Name=Banjo to Kazooie no Daibouken 2 (J) Internal Name=BANJO KAZOOIE 2 depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [733FCCB1-444892F9-C:50] Good Name=Banjo-Kazooie (E) (M3) Internal Name=Banjo-Kazooie depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [A4BF9306-BF0CDFD1-C:45] Good Name=Banjo-Kazooie (U) (V1.0) Internal Name=Banjo-Kazooie depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [CD7559AC-B26CF5AE-C:45] Good Name=Banjo-Kazooie (U) (V1.1) Internal Name=Banjo-Kazooie depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [155B7CDF-F0DA7325-C:55] Good Name=Banjo-Tooie (A) Internal Name=BANJO TOOIE depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [C9176D39-EA4779D1-C:50] Good Name=Banjo-Tooie (E) (M4) depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [C2E9AA9A-475D70AA-C:45] Good Name=Banjo-Tooie (U) Internal Name=BANJO TOOIE depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [B088FBB4-441E4B1D-C:50] @@ -424,8 +398,6 @@ force_depth_compare=1 Good Name=Beetle Adventure Racing (J) Internal Name=BEETLE ADVENTURE JP depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 n64_z_scale=1 wrap_big_tex=1 @@ -434,8 +406,6 @@ wrap_big_tex=1 Good Name=Beetle Adventure Racing! (E) (M3) Internal Name=Beetle Adventure Rac depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 n64_z_scale=1 wrap_big_tex=1 @@ -444,8 +414,6 @@ wrap_big_tex=1 Good Name=Beetle Adventure Racing! (U) (M3) Internal Name=Beetle Adventure Rac depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 n64_z_scale=1 wrap_big_tex=1 @@ -460,16 +428,12 @@ Good Name=Bio F.R.E.A.K.S. (E) Internal Name=BIOFREAKS buff_clear=0 depthmode=0 -fb_hires=1 -fb_smart=1 [08123595-0510F1DE-C:45] Good Name=Bio F.R.E.A.K.S. (U) Internal Name=BIOFREAKS buff_clear=0 depthmode=0 -fb_hires=1 -fb_smart=1 [7EAE2488-9D40A35A-C:4A] Good Name=Biohazard 2 (J) @@ -477,61 +441,48 @@ Internal Name=BioHazard II adjust_aspect=0 depthmode=0 detect_cpu_write=1 -fb_hires=1 -fb_smart=1 fix_tex_coord=128 n64_z_scale=1 swapmode=2 +fb_render=1 [7C64E6DB-55B924DB-C:50] Good Name=Blast Corps (E) Internal Name=Blast Corps depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 swapmode=0 [7C647C25-D9D901E6-C:45] Good Name=Blast Corps (U) (V1.0) Internal Name=Blast Corps depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 swapmode=0 [7C647E65-1948D305-C:45] Good Name=Blast Corps (U) (V1.1) Internal Name=Blast Corps depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 swapmode=0 [65234451-EBD3346F-C:4A] Good Name=Blast Dozer (J) Internal Name=Blastdozer depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 swapmode=0 [0B58B8CD-B7B291D2-C:50] Good Name=Body Harvest (E) (M3) Internal Name=Body Harvest depthmode=1 -fb_hires=1 -fb_smart=1 [5326696F-FE9A99C3-C:45] Good Name=Body Harvest (U) Internal Name=BODY HARVEST depthmode=1 -fb_hires=1 -fb_smart=1 [B3D451C6-E1CB58E2-C:4A] Good Name=Bokujou Monogatari 2 (J) (V1.0) @@ -558,22 +509,16 @@ zmode_compare_less=1 Good Name=Bomberman 64 (E) Internal Name=BOMBERMAN64E depthmode=0 -fb_hires=1 -fb_smart=1 [DF6FF0F4-29D14238-C:4A] Good Name=Bomberman 64 (J) Internal Name=BOMBERMAN64 depthmode=0 -fb_hires=1 -fb_smart=1 [F568D51E-7E49BA1E-C:45] Good Name=Bomberman 64 (U) Internal Name=BOMBERMAN64U depthmode=0 -fb_hires=1 -fb_smart=1 [237E73B4-D63B6B37-C:45] Good Name=Bomberman 64 - The Second Attack! (U) @@ -585,8 +530,6 @@ filtering=1 Good Name=Bottom of the 9th (U) Internal Name=Bottom of the 9th depthmode=0 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 @@ -768,11 +711,8 @@ Good Name=Conker's Bad Fur Day (E) Internal Name=CONKER BFD depthmode=0 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 ignore_previous=1 -lodmode=1 optimize_texrect=1 [30C7AC50-7704072D-C:45] @@ -780,11 +720,8 @@ Good Name=Conker's Bad Fur Day (U) Internal Name=CONKER BFD depthmode=0 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 ignore_previous=1 -lodmode=1 optimize_texrect=1 [46A3F7AF-0F7591D0-C:45] @@ -800,8 +737,6 @@ Good Name=Cruis'n USA (E) Internal Name=Cruis'n USA depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [FF2F2FB4-D161149A-C:45] @@ -809,8 +744,6 @@ Good Name=Cruis'n USA (U) (V1.0) Internal Name=Cruis'n USA depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [5306CF45-CBC49250-C:45] @@ -818,8 +751,6 @@ Good Name=Cruis'n USA (U) (V1.1) Internal Name=Cruis'n USA depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [B3402554-7340C004-C:45] @@ -827,23 +758,17 @@ Good Name=Cruis'n USA (U) (V1.2) Internal Name=Cruis'n USA depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [83CB0B87-7E325457-C:4A] Good Name=Custom Robo (J) Internal Name=custom robo depthmode=0 -fb_hires=1 -fb_smart=1 [079501B9-AB0232AB-C:4A] Good Name=Custom Robo V2 (J) Internal Name=CUSTOMROBOV2 depthmode=0 -fb_hires=1 -fb_smart=1 [D1A78A07-52A3DD3E-C:50] Good Name=CyberTiger (E) @@ -873,8 +798,6 @@ Good Name=Deadly Arts (U) Internal Name=DeadlyArts clip_zmin=1 depthmode=0 -fb_hires=1 -fb_smart=1 soft_depth_compare=1 [3F66A9D9-9BCB5B00-C:46] @@ -960,8 +883,6 @@ fillcolor_fix=1 Good Name=Doraemon - Nobita to 3tsu no Seireiseki (J) Internal Name=ÄÞ×´Óà ïÂɾ²Ú²¾· depthmode=1 -fb_hires=1 -fb_smart=1 read_back_to_screen=1 [A8275140-B9B056E8-C:4A] @@ -974,7 +895,6 @@ Good Name=Dr. Mario 64 (U) Internal Name=DR.MARIO 64 depthmode=1 fb_hires=0 -fb_smart=1 fix_tex_coord=256 optimize_write=1 read_back_to_screen=1 @@ -1056,79 +976,57 @@ filtering=2 Good Name=Excitebike 64 (E) Internal Name=EXCITEBIKE64 depthmode=0 -fb_hires=1 -fb_smart=1 [861C3519-F6091CE5-C:4A] Good Name=Excitebike 64 (J) Internal Name=EXCITEBIKE64 depthmode=0 -fb_hires=1 -fb_smart=1 [07861842-A12EBC9F-C:45] Good Name=Excitebike 64 (U) (V1.0) Internal Name=EXCITEBIKE64 depthmode=0 -fb_hires=1 -fb_smart=1 [F9D411E3-7CB29BC0-C:45] Good Name=Excitebike 64 (U) (V1.1) Internal Name=EXCITEBIKE64 depthmode=0 -fb_hires=1 -fb_smart=1 [AF754F7B-1DD17381-C:45] Good Name=Excitebike 64 (U) (Kiosk Demo) Internal Name=EXCITEBIKE64 depthmode=0 -fb_hires=1 -fb_smart=1 [8E9D834E-1E8B29A9-C:50] Good Name=Extreme-G (E) (M5) depthmode=0 -fb_hires=1 -fb_smart=1 [EE802DC4-690BD57D-C:4A] Good Name=Extreme-G (J) Internal Name=EXTREME-G depthmode=0 -fb_hires=1 -fb_smart=1 [FDA245D2-A74A3D47-C:45] Good Name=Extreme-G (U) Internal Name=extremeg depthmode=0 -fb_hires=1 -fb_smart=1 [1185EC85-4B5A7731-C:50] Good Name=Extreme-G XG2 (E) (M5) depthmode=0 fb_clear=1 -fb_hires=1 -fb_smart=1 [399B9B81-D533AD11-C:4A] Good Name=Extreme-G XG2 (J) Internal Name=´¸½ÄØ°ÑG2 depthmode=0 fb_clear=1 -fb_hires=1 -fb_smart=1 [5CD4150B-470CC2F1-C:45] Good Name=Extreme-G XG2 (U) Internal Name=Extreme G 2 depthmode=0 fb_clear=1 -fb_hires=1 -fb_smart=1 //================ F ================ [FDD248B2-569A020E-C:50] @@ -1252,8 +1150,6 @@ Good Name=G.A.S.P!! Fighters' NEXTream (E) Internal Name=G.A.S.P!!Fighters'NE clip_zmin=1 depthmode=0 -fb_hires=1 -fb_smart=1 soft_depth_compare=1 [AF8679B6-5E1011BF-C:4A] @@ -1261,16 +1157,12 @@ Good Name=G.A.S.P!! Fighters' NEXTream (J) Internal Name=G.A.S.P!!Fighters'NE clip_zmin=1 depthmode=0 -fb_hires=1 -fb_smart=1 soft_depth_compare=1 [457B9CD9-09C55352-C:4A] Good Name=Ganbare Goemon - Derodero Douchuu Obake Tenkomori (J) Internal Name=GOEMON2 DERODERO depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [832C168B-56A2CDAE-C:4A] @@ -1278,8 +1170,6 @@ Good Name=Ganbare Goemon - Neo Momoyama Bakufu no Odori (J) Internal Name=GANBAKE GOEMON alt_tex_size=1 depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 @@ -1361,8 +1251,6 @@ filtering=1 Good Name=Goemon's Great Adventure (U) Internal Name=GOEMONS GREAT ADV depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [4690FB1C-4CD56D44-C:45] @@ -1376,8 +1264,6 @@ Good Name=GoldenEye 007 (E) Internal Name=GOLDENEYE depth_bias=40 depthmode=0 -fb_hires=1 -fb_smart=1 filtering=1 lodmode=1 @@ -1386,8 +1272,6 @@ Good Name=GoldenEye 007 (J) Internal Name=GOLDENEYE depth_bias=40 depthmode=0 -fb_hires=1 -fb_smart=1 filtering=1 lodmode=1 @@ -1396,8 +1280,6 @@ Good Name=GoldenEye 007 (U) Internal Name=GOLDENEYE depth_bias=40 depthmode=0 -fb_hires=1 -fb_smart=1 filtering=1 lodmode=1 @@ -1426,8 +1308,6 @@ force_microcheck=1 Good Name=Harukanaru Augusta - Masters '98 (J) Internal Name=MASTERS'98 depthmode=0 -fb_hires=1 -fb_smart=1 wrap_big_tex=1 [98DF9DFC-6606C189-C:45] @@ -1441,8 +1321,6 @@ zmode_compare_less=1 Good Name=Heiwa Pachinko World 64 (J) Internal Name=HEIWA ÊßÃú Ü°ÙÄÞ64 depthmode=0 -fb_hires=1 -fb_smart=1 fog=0 swapmode=2 @@ -1537,8 +1415,6 @@ swapmode=0 Good Name=HSV Adventure Racing (A) Internal Name=HSV ADVENTURE RACING depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 n64_z_scale=1 wrap_big_tex=1 @@ -1576,26 +1452,26 @@ depthmode=1 fix_tex_coord=1 swapmode=2 +[E436467A-82DE8F9B-C:45] +Good Name=Indy Racing 2000 (U) +Internal Name=INDY RACING 2000 +fb_render=0 +fb_smart=0 + [336364A0-06C8D5BF-C:58] Good Name=International Superstar Soccer 2000 (E) (M2) (Eng-Ger) Internal Name=I.S.S.2000 depthmode=1 -fb_hires=1 -fb_smart=1 [BAE8E871-35FF944E-C:59] Good Name=International Superstar Soccer 2000 (E) (M2) (Fre-Ita) Internal Name=I.S.S.2000 depthmode=1 -fb_hires=1 -fb_smart=1 [8E835437-CD5748B4-C:45] Good Name=International Superstar Soccer 2000 (U) (M2) Internal Name=I.S.S.2000 depthmode=1 -fb_hires=1 -fb_smart=1 [E2D37CF0-F57E4EAE-C:50] Good Name=International Superstar Soccer 64 (E) @@ -1615,16 +1491,12 @@ swapmode=2 Good Name=International Track & Field 2000 (U) Internal Name=ITF 2000 depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [6712C779-3B72781D-C:50] Good Name=International Track & Field Summer Games (E) (M3) Internal Name=IT&F SUMMERGAMES depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 //================ J ================ @@ -1659,8 +1531,6 @@ Internal Name=JET FORCE GEMINI alt_tex_size=1 decrease_fillrect_edge=1 depthmode=1 -fb_hires=1 -fb_smart=1 read_back_to_screen=1 swapmode=2 @@ -1670,8 +1540,6 @@ Internal Name=JET FORCE GEMINI alt_tex_size=1 decrease_fillrect_edge=1 depthmode=1 -fb_hires=1 -fb_smart=1 read_back_to_screen=1 swapmode=2 @@ -1681,11 +1549,19 @@ Internal Name=J F G DISPLAY alt_tex_size=1 decrease_fillrect_edge=1 depthmode=1 -fb_hires=1 -fb_smart=1 read_back_to_screen=1 swapmode=2 +[63112A53-A29FA88F-C:4A] +Good Name=Jikkyou J.League 1999 - Perfect Striker 2 (J) (V1.0) +Internal Name=PERFECT STRIKER2 +depthmode=1 + +[6309FC17-1D4F5EF3-C:4A] +Good Name=Jikkyou J.League 1999 - Perfect Striker 2 (J) (V1.1) +Internal Name=PERFECT STRIKER2 +depthmode=1 + [146C4366-72A6DEB3-C:4A] Good Name=Jikkyou J.League Perfect Striker (J) Internal Name=PERFECT STRIKER @@ -1703,8 +1579,6 @@ swapmode=2 Good Name=Ken Griffey Jr.'s Slugfest (U) Internal Name=KEN GRIFFEY SLUGFEST depthmode=1 -fb_hires=1 -fb_smart=1 read_back_to_screen=2 swapmode=0 @@ -1792,20 +1666,16 @@ Good Name=Knockout Kings 2000 (E) Internal Name=Knockout Kings 2000 depthmode=1 fb_clear=1 -fb_hires=1 fb_info_disable=1 fb_read_alpha=1 -fb_smart=1 [0894909C-DAD4D82D-C:45] Good Name=Knockout Kings 2000 (U) Internal Name=Knockout Kings 2000 depthmode=1 fb_clear=1 -fb_hires=1 fb_info_disable=1 fb_read_alpha=1 -fb_smart=1 //================ L ================ [F478D8B3-9716DD6D-C:50] @@ -1814,9 +1684,7 @@ Internal Name=LEGORacers buff_clear=0 depthmode=1 detect_cpu_write=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 [096A40EA-8ABE0A10-C:45] Good Name=LEGO Racers (U) (M10) @@ -1824,9 +1692,7 @@ Internal Name=LEGORacers buff_clear=0 depthmode=1 detect_cpu_write=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 [3D67C62B-31D03150-C:4A] Good Name=Let's Smash (J) @@ -1917,9 +1783,7 @@ Internal Name=MarioGolf64 buff_clear=0 depthmode=0 fb_clear=1 -fb_hires=1 fb_info_disable=1 -fb_smart=1 ignore_aux_copy=1 [664BA3D4-678A80B7-C:45] @@ -1928,9 +1792,7 @@ Internal Name=MarioGolf64 buff_clear=0 depthmode=0 fb_clear=1 -fb_hires=1 fb_info_disable=1 -fb_smart=1 ignore_aux_copy=1 [D48944D1-B0D93A0E-C:4A] @@ -1939,9 +1801,7 @@ Internal Name=MarioGolf64 buff_clear=0 depthmode=0 fb_clear=1 -fb_hires=1 fb_info_disable=1 -fb_smart=1 ignore_aux_copy=1 [734F816B-C6A6EB67-C:4A] @@ -1950,9 +1810,7 @@ Internal Name=MarioGolf64 buff_clear=0 depthmode=0 fb_clear=1 -fb_hires=1 fb_info_disable=1 -fb_smart=1 ignore_aux_copy=1 [C3B6DE9D-65D2DE76-C:50] @@ -2056,9 +1914,7 @@ fix_tex_coord=1 Good Name=Mario Story (J) Internal Name=MARIO STORY depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 filtering=1 hires_buf_clear=0 optimize_texrect=0 @@ -2069,8 +1925,6 @@ useless_is_useless=1 Good Name=Mega Man 64 (U) Internal Name=Mega Man 64 depthmode=1 -fb_hires=1 -fb_smart=1 increase_texrect_edge=1 [1001F10C-3D51D8C1-C:45] @@ -2089,8 +1943,6 @@ Internal Name=MICKEY USA alt_tex_size=1 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 [DED0DD9A-E78225A7-C:50] Good Name=Mickey's Speedway USA (E) (M5) @@ -2098,8 +1950,6 @@ Internal Name=MICKEY USA PAL alt_tex_size=1 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 [FA8C4571-BBE7F9C0-C:45] Good Name=Mickey's Speedway USA (U) @@ -2107,8 +1957,6 @@ Internal Name=MICKEY USA alt_tex_size=1 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 [2A49018D-D0034A02-C:50] Good Name=Micro Machines 64 Turbo (E) (M5) @@ -2124,7 +1972,6 @@ depthmode=0 Good Name=Midway's Greatest Arcade Hits Volume 1 (U) Internal Name=MGAH VOL1 depthmode=1 -fb_smart=1 force_microcheck=1 zmode_compare_less=1 @@ -2211,8 +2058,6 @@ Good Name=Mystical Ninja 2 Starring Goemon (E) (M3) Internal Name=MYSTICAL NINJA2 SG alt_tex_size=1 depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 @@ -2221,8 +2066,6 @@ Good Name=Mystical Ninja Starring Goemon (E) Internal Name=MYSTICAL NINJA alt_tex_size=1 depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 @@ -2353,9 +2196,7 @@ Good Name=NFL Quarterback Club 98 (E) Internal Name=quarterback_club_98 buff_clear=0 depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 filtering=1 hires_buf_clear=0 optimize_texrect=0 @@ -2366,9 +2207,7 @@ Good Name=NFL Quarterback Club 98 (U) Internal Name=quarterback_club_98 buff_clear=0 depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 filtering=1 hires_buf_clear=0 optimize_texrect=0 @@ -2449,9 +2288,7 @@ correct_viewport=1 Good Name=Paper Mario (E) (M4) Internal Name=PAPER MARIO depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 filtering=1 hires_buf_clear=0 optimize_texrect=0 @@ -2462,9 +2299,7 @@ useless_is_useless=1 Good Name=Paper Mario (U) Internal Name=PAPER MARIO depthmode=1 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 filtering=1 hires_buf_clear=0 optimize_texrect=0 @@ -2482,6 +2317,7 @@ force_microcheck=1 Good Name=PD Ultraman Battle Collection 64 (J) Internal Name=Ultraman Battle JAPA depthmode=0 +fb_smart=0 [E4B08007-A602FF33-C:50] Good Name=Perfect Dark (E) (M5) @@ -2489,8 +2325,6 @@ Internal Name=Perfect Dark decrease_fillrect_edge=1 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 useless_is_useless=1 @@ -2501,8 +2335,6 @@ Internal Name=PERFECT DARK decrease_fillrect_edge=1 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 useless_is_useless=1 @@ -2513,8 +2345,6 @@ Internal Name=Perfect Dark decrease_fillrect_edge=1 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 useless_is_useless=1 @@ -2525,8 +2355,6 @@ Internal Name=Perfect Dark decrease_fillrect_edge=1 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 optimize_texrect=0 useless_is_useless=1 @@ -2557,7 +2385,6 @@ buff_clear=0 depthmode=1 fb_hires=0 fb_read_alpha=1 -fb_smart=1 filtering=2 fix_tex_coord=1 fog=0 @@ -2571,7 +2398,6 @@ buff_clear=0 depthmode=1 fb_hires=0 fb_read_alpha=1 -fb_smart=1 filtering=2 fix_tex_coord=1 fog=0 @@ -2585,7 +2411,6 @@ buff_clear=0 depthmode=1 fb_hires=0 fb_read_alpha=1 -fb_smart=1 filtering=2 fix_tex_coord=1 fog=0 @@ -2599,7 +2424,6 @@ buff_clear=0 depthmode=1 fb_hires=0 fb_read_alpha=1 -fb_smart=1 filtering=2 fix_tex_coord=1 fog=0 @@ -2612,7 +2436,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [4FF5976F-ACF559D8-C:50] Good Name=Pokemon Snap (E) @@ -2621,7 +2444,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [BA6C293A-9FAFA338-C:46] Good Name=Pokemon Snap (F) @@ -2630,7 +2452,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [5753720D-2A8A884D-C:44] Good Name=Pokemon Snap (G) @@ -2639,7 +2460,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [C0C85046-61051B05-C:49] Good Name=Pokemon Snap (I) @@ -2648,7 +2468,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [EC0F690D-32A7438C-C:4A] Good Name=Pokemon Snap (J) (V1.0) @@ -2657,7 +2476,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [E0044E9E-CD659D0D-C:4A] Good Name=Pokemon Snap (J) (V1.1) @@ -2666,7 +2484,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [817D286A-EF417416-C:53] Good Name=Pokemon Snap (S) @@ -2675,7 +2492,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [CA12B547-71FA4EE4-C:45] Good Name=Pokemon Snap (U) @@ -2684,7 +2500,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [39119872-07722E9F-C:45] Good Name=Pokemon Snap Station (U) @@ -2693,7 +2508,6 @@ depthmode=1 fast_crc=0 fb_clear=1 fb_hires=0 -fb_smart=1 [84077275-57315B9C-C:50] Good Name=Pokemon Stadium (E) (V1.0) @@ -2704,7 +2518,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [91C9E05D-AD3AAFB9-C:50] @@ -2716,7 +2529,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [A23553A3-42BF2D39-C:46] @@ -2728,7 +2540,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [42011E1B-E3552DB5-C:44] @@ -2740,7 +2551,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [A53FA82D-DAE2C15D-C:49] @@ -2752,7 +2562,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [665E8259-D098BD1D-C:4A] @@ -2764,7 +2573,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [B6E549CE-DC8134C0-C:53] @@ -2776,7 +2584,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [90F5D9B3-9D0EDCF0-C:45] @@ -2788,7 +2595,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [1A122D43-C17DAF0F-C:45] @@ -2800,7 +2606,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [9C8FB2FA-9B84A09B-C:45] @@ -2812,7 +2617,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [2952369C-B6E4C3A8-C:50] @@ -2822,9 +2626,7 @@ buff_clear=0 depthmode=1 fast_crc=0 fb_crc_mode=2 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 swapmode=2 @@ -2835,9 +2637,7 @@ buff_clear=0 depthmode=1 fast_crc=0 fb_crc_mode=2 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 swapmode=2 @@ -2848,9 +2648,7 @@ buff_clear=0 depthmode=1 fast_crc=0 fb_crc_mode=2 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 swapmode=2 @@ -2861,9 +2659,7 @@ buff_clear=0 depthmode=1 fast_crc=0 fb_crc_mode=2 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 swapmode=2 @@ -2874,9 +2670,7 @@ buff_clear=0 depthmode=1 fast_crc=0 fb_crc_mode=2 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 swapmode=2 @@ -2887,9 +2681,7 @@ buff_clear=0 depthmode=1 fast_crc=0 fb_crc_mode=2 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 swapmode=2 @@ -2900,9 +2692,7 @@ buff_clear=0 depthmode=1 fast_crc=0 fb_crc_mode=2 -fb_hires=1 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 swapmode=2 @@ -2915,7 +2705,6 @@ fast_crc=0 fb_crc_mode=2 fb_hires=0 fb_read_alpha=1 -fb_smart=1 optimize_texrect=0 [41380792-A167E045-C:45] @@ -2953,14 +2742,10 @@ swapmode=2 [7433D9D7-2C4322D0-C:50] Good Name=Quake II (E) Internal Name=QUAKE II -fb_hires=1 -fb_smart=1 [BDA8F143-B1AF2D62-C:45] Good Name=Quake II (U) Internal Name=QUAKE II -fb_hires=1 -fb_smart=1 [C8BB4DD9-CC5F430B-C:45] Good Name=Quest 64 (U) @@ -2979,8 +2764,6 @@ Good Name=Rally '99 (J) Internal Name=Rally'99 buff_clear=0 depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [73A88E3D-3AC5C571-C:45] @@ -2988,8 +2771,6 @@ Good Name=Rally Challenge 2000 (U) Internal Name=RALLY CHALLENGE buff_clear=0 depthmode=1 -fb_hires=1 -fb_smart=1 filtering=1 [60D5E10B-8BEDED46-C:50] @@ -3040,11 +2821,10 @@ Internal Name=Resident Evil II adjust_aspect=0 depthmode=0 detect_cpu_write=1 -fb_hires=1 -fb_smart=1 fix_tex_coord=128 n64_z_scale=1 swapmode=2 +fb_render=1 [2F493DD0-2E64DFD9-C:45] Good Name=Resident Evil 2 (U) (V1.0) @@ -3052,22 +2832,20 @@ Internal Name=Resident Evil II adjust_aspect=0 depthmode=0 detect_cpu_write=1 -fb_hires=1 -fb_smart=1 fix_tex_coord=128 n64_z_scale=1 swapmode=2 +fb_render=1 [AA18B1A5-07DB6AEB-C:45] Good Name=Resident Evil 2 (U) (V1.1) adjust_aspect=0 depthmode=0 detect_cpu_write=1 -fb_hires=1 -fb_smart=1 fix_tex_coord=128 n64_z_scale=1 swapmode=2 +fb_render=1 [02D8366A-6CABEF9C-C:50] Good Name=Road Rash 64 (E) @@ -3085,8 +2863,6 @@ swapmode=2 Good Name=Robot Ponkottsu 64 - 7tsu no Umi no Caramel (J) Internal Name=Robopon64 depthmode=0 -fb_hires=1 -fb_smart=1 [9FD375F8-45F32DC8-C:50] Good Name=Rocket - Robot on Wheels (M3) @@ -3102,24 +2878,18 @@ clip_zmin=1 Good Name=Rockman Dash - Hagane no Boukenshin (J) Internal Name=RockMan Dash depthmode=1 -fb_hires=1 -fb_smart=1 increase_texrect_edge=1 [FEE97010-4E94A9A0-C:50] Good Name=RR64 - Ridge Racer 64 (E) Internal Name=RIDGE RACER 64 depthmode=0 -fb_hires=1 -fb_smart=1 force_calc_sphere=1 [2500267E-2A7EC3CE-C:45] Good Name=RR64 - Ridge Racer 64 (U) Internal Name=RIDGE RACER 64 depthmode=0 -fb_hires=1 -fb_smart=1 force_calc_sphere=1 [658F8F37-1813D28D-C:44] @@ -3275,8 +3045,6 @@ Internal Name=STAR TWINS alt_tex_size=1 decrease_fillrect_edge=1 depthmode=1 -fb_hires=1 -fb_smart=1 read_back_to_screen=1 swapmode=2 @@ -3308,16 +3076,19 @@ swapmode=2 [53ED2DC4-06258002-C:50] Good Name=Star Wars Episode I - Racer (E) (M3) Internal Name=STAR WARS EP1 RACER +fb_render=1 swapmode=2 [61F5B152-046122AB-C:4A] Good Name=Star Wars Episode I - Racer (J) Internal Name=STAR WARS EP1 RACER +fb_render=1 swapmode=2 [72F70398-6556A98B-C:45] Good Name=Star Wars Episode I - Racer (U) Internal Name=STAR WARS EP1 RACER +fb_render=1 swapmode=2 [42CF5EA3-9A1334DF-C:50] @@ -3397,8 +3168,6 @@ aspect=2 Good Name=Super Robot Taisen 64 (J) Internal Name=½°Êß°ÛÎÞ¯ÄÀ²¾Ã64 fast_crc=0 -fb_hires=1 -fb_smart=1 use_sts1_only=1 [2CBB127F-09C2BFD8-C:50] @@ -3457,8 +3226,6 @@ Internal Name=TETRISPHERE alt_tex_size=1 depthmode=1 fb_crc_mode=2 -fb_hires=1 -fb_smart=1 increase_texrect_edge=1 use_sts1_only=1 @@ -3468,8 +3235,6 @@ Internal Name=TETRISPHERE alt_tex_size=1 depthmode=1 fb_crc_mode=2 -fb_hires=1 -fb_smart=1 increase_texrect_edge=1 use_sts1_only=1 @@ -3487,8 +3252,6 @@ Internal Name=ZELDA MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -3498,8 +3261,6 @@ Internal Name=ZELDA MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -3509,8 +3270,6 @@ Internal Name=ZELDA MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -3520,8 +3279,6 @@ Internal Name=ZELDA MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -3531,8 +3288,6 @@ Internal Name=ZELDA MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -3542,8 +3297,6 @@ Internal Name=ZELDA MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -3553,8 +3306,6 @@ Internal Name=MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -3564,8 +3315,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [B044B569-373C1985-C:50] @@ -3574,8 +3323,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [B2055FBD-0BAB4E0C-C:50] @@ -3584,8 +3331,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [F3DD35BA-4152E075-C:45] @@ -3594,8 +3339,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [EC7011B7-7616D72B-C:45] @@ -3604,8 +3347,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [D43DA81F-021E1E19-C:45] @@ -3614,8 +3355,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [693BA2AE-B7F14E9F-C:45] @@ -3624,8 +3363,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [1D4136F3-AF63EEA9-C:50] @@ -3634,8 +3371,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [27A3831D-B505A533-C:45] @@ -3644,8 +3379,6 @@ Internal Name=ZELDA MASTER QUEST depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [1D4136F3-AF63EEA9-C:45] @@ -3654,8 +3387,6 @@ Internal Name=ZELDA MASTER QUEST depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [917D18F6-69BC5453-C:45] @@ -3664,8 +3395,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [F034001A-AE47ED06-C:45] @@ -3674,8 +3403,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [E61CFF0A-CE1C0D71-C:50] @@ -3801,9 +3528,7 @@ Good Name=Top Gear Hyper Bike (E) Internal Name=Top Gear Hyper Bike depthmode=0 fb_clear=1 -fb_hires=1 fb_info_disable=1 -fb_smart=1 swapmode=2 [845B0269-57DE9502-C:4A] @@ -3811,9 +3536,7 @@ Good Name=Top Gear Hyper Bike (J) Internal Name=Top Gear Hyper Bike depthmode=0 fb_clear=1 -fb_hires=1 fb_info_disable=1 -fb_smart=1 swapmode=2 [8ECC02F0-7F8BDE81-C:45] @@ -3821,9 +3544,7 @@ Good Name=Top Gear Hyper Bike (U) Internal Name=Top Gear Hyper Bike depthmode=0 fb_clear=1 -fb_hires=1 fb_info_disable=1 -fb_smart=1 swapmode=2 [D09BA538-1C1A5489-C:50] @@ -3896,8 +3617,6 @@ swapmode=2 Good Name=Triple Play 2000 (U) Internal Name=TRIPLE PLAY 2000 depthmode=0 -fb_hires=1 -fb_smart=1 wrap_big_tex=1 [B6BC0FB0-E3812198-C:4A] @@ -3905,8 +3624,6 @@ Good Name=Tsumi to Batsu - Hoshi no Keishousha (J) Internal Name=TSUMI TO BATSU depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [E688A5B8-B14B3F18-C:50] @@ -3914,16 +3631,12 @@ Good Name=Twisted Edge Extreme Snowboarding (E) Internal Name=TWISTED EDGE depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 [BBC99D32-117DAA80-C:45] Good Name=Twisted Edge Extreme Snowboarding (U) Internal Name=TWISTED EDGE depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 //================ V ================ [636E6B19-E57DDC5F-C:50] @@ -3970,32 +3683,28 @@ depthmode=1 Good Name=Waialae Country Club - True Golf Classics (E) (M4) (V1.0) Internal Name=Waialae Country Club depthmode=0 -fb_hires=1 -fb_smart=1 +fb_smart=0 wrap_big_tex=1 [0C5057AD-046E126E-C:50] Good Name=Waialae Country Club - True Golf Classics (E) (M4) (V1.1) Internal Name=Waialae Country Club depthmode=0 -fb_hires=1 -fb_smart=1 +fb_smart=0 wrap_big_tex=1 [8066D58A-C3DECAC1-C:45] Good Name=Waialae Country Club - True Golf Classics (U) (V1.0) Internal Name=Waialae Country Club depthmode=0 -fb_hires=1 -fb_smart=1 +fb_smart=0 wrap_big_tex=1 [DD318CE2-B73798BA-C:45] Good Name=Waialae Country Club - True Golf Classics (U) (V1.1) Internal Name=Waialae Country Club depthmode=0 -fb_hires=1 -fb_smart=1 +fb_smart=0 wrap_big_tex=1 [650EFA96-30DDF9A7-C:50] @@ -4031,8 +3740,6 @@ pal230=1 [D4C45A1A-F425B25E-C:45] Good Name=WCW Nitro (U) Internal Name=NITRO64 -fb_hires=1 -fb_smart=1 [0CEBC4C7-0C9CE932-C:4A] Good Name=Wild Choppers (J) @@ -4065,16 +3772,12 @@ swapmode=0 Good Name=World Cup 98 (E) (M8) Internal Name=World Cup 98 depthmode=0 -fb_hires=1 -fb_smart=1 swapmode=0 [BD636D6A-5D1F54BA-C:45] Good Name=World Cup 98 (U) (M8) Internal Name=World Cup 98 depthmode=0 -fb_hires=1 -fb_smart=1 swapmode=0 [90A59003-31089864-C:45] @@ -4129,8 +3832,6 @@ Internal Name=THE MASK OF MUJURA depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -4140,8 +3841,6 @@ Internal Name=THE MASK OF MUJURA depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -4151,8 +3850,6 @@ Internal Name=ZELDA MAJORA'S MASK depthmode=1 fb_clear=1 fb_crc_mode=0 -fb_hires=1 -fb_smart=1 filtering=1 wrap_big_tex=1 @@ -4162,8 +3859,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [D43DA81F-021E1E19-C:4A] @@ -4172,8 +3867,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [693BA2AE-B7F14E9F-C:4A] @@ -4182,8 +3875,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [F7F52DB8-2195E636-C:4A] @@ -4192,8 +3883,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [F611F4BA-C584135C-C:4A] @@ -4202,8 +3891,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 [F43B45BA-2F0E9B6F-C:4A] @@ -4212,8 +3899,6 @@ Internal Name=THE LEGEND OF ZELDA depth_bias=60 depthmode=1 fb_clear=1 -fb_hires=1 -fb_smart=1 filtering=1 //================ PD ================ @@ -4229,8 +3914,6 @@ depthmode=1 Good Name=Mini Racers (Unreleased) Internal Name=Mini Racers buff_clear=0 -fb_hires=1 -fb_smart=1 force_microcheck=1 swapmode=0 diff --git a/Config/Project64.cfg.development b/Config/Project64.cfg.development index 8b5d11456..93d84e3d9 100644 --- a/Config/Project64.cfg.development +++ b/Config/Project64.cfg.development @@ -1,4 +1,4 @@ -[default] +[default] 7zipCache=..\..\Config\Project64.zcache Auto Sleep=0 Basic Mode=0 diff --git a/Config/Project64.cht b/Config/Project64.cht index 8bdd89b96..858d49024 100644 --- a/Config/Project64.cht +++ b/Config/Project64.cht @@ -1,23 +1,16 @@ -// PJ64 1.7 Official Cheats Database (Project64.cht) Beta Version 1.7.0.11 -// All Region Cheat Codes By Gent. +// PJ64 v2.2 Official Cheats Database +// All Region Cheat Codes By Gent. +// Not for use with PJ64 v1.6 or previous // ---------------------------------------------------- -// -// This Cheat file is only to be used with Project64 version 1.7 -// -// ---------------------------------------------------- - [Meta] -Author=Gent -Version=Official Beta Version 1.7.0.11 -Date=26th March 2006 -Homepage=www.pj64.net/main/beta_files/ - - +Author=Project64 team +Version=2.2.0 +Date=2015/03/30 +Homepage=www.pj64-emu.com //--------------- (J) Region Cheat Codes --------------- - [80F41131-384645F6-C:4A] Name=AeroGauge (J) (V1.1) Cheat0="No Damage\Player 1",50000402 0000,1113D058 0000 @@ -1887,7 +1880,19 @@ Cheat8_O=$5A Canyon Rush,$59 Bikini Island,$5C China Town,$5B Neo Arena,$56 Chin //---- [E6A95A4F-BAD2EA23-C:45] -Name=Aidyn Chronicles - The First Mage (U) +Name=Aidyn Chronicles - The First Mage (U) (V1.0) +Cheat0="Infinite\Max Health",E87BDEF0 5970 +Cheat1="Infinite\99 Health Potions",E87BDC1D 59BB +Cheat1_N=Do Not put this cheat on until you have collected your 1st Health Potion from the 1st Cheat or you will not be able to get into the Sub menu and Continue the game. +Cheat2="Have\Max Gold",50000401 0000,10277335 00FF +Cheat3="Have\Max Total XP",50000401 0000,10278BAD 00FF +Cheat4="Have\Max Total XP Remaning to Start",50000401 0000,10278BB1 00FF +Cheat4_N=This will give you 16777215 Total XP Remaning to start with and after your 1st batle will allow you to buy your Max Stats + +//---- + +[112051D2-68BEF8AC-C:45] +Name=Aidyn Chronicles - The First Mage (U) (V1.1) Cheat0="Infinite\Max Health",E87BDEF0 5970 Cheat1="Infinite\99 Health Potions",E87BDC1D 59BB Cheat1_N=Do Not put this cheat on until you have collected your 1st Health Potion from the 1st Cheat or you will not be able to get into the Sub menu and Continue the game. @@ -2076,7 +2081,36 @@ Cheat4_O=$5A KM/H,$59 MPH //---- [A4BF9306-BF0CDFD1-C:45] -Name=Banjo-Kazooie +Name=Banjo-Kazooie (U) (V1.0) +Cheat0="Infinite\Eggs",E88EB2B9 594F +Cheat1="Infinite\Lives",E88EB2DD 594F +Cheat2="Infinite\Jiggies",E88EB21D 594F +Cheat3="Press L To Levitate",D0281251 0020,E98B1B14 9C3A +Cheat4="Infinite\Notes",E88EB246 594F,E88EB2B6 5959 +Cheat5="Infinite\Health",E88EB2D5 5962,E88EB2D9 5962 +Cheat6="Infinite\Air",E98EB2E2 5F6A +Cheat7="Infinite\Gold Feathers",E88EB2C5 594F +Cheat8="Infinite\Red Feathers",E88EB2C1 594F +Cheat9="Infinite\Always Have All Jinjos",E88EB2CD 594F +Cheat11="Character Select",D0281251 0008,E88B1525 595C,D0281251 0001,E88B1525 595B,D0281251 0004,E88B1525 5956,D0281251 0002,E88B1525 5955,D0281251 0010,E88B1525 5958,D0281251 0020,E88B1525 5957 +Cheat14="Access All Moves",E88B16F8 5959,E88B16F7 59CF,E88B16F6 594F,E88B16F5 594F +Cheat15="Game 100% Complete",E98B16F8 596F,50000302 0000,1137C3A2 FFFF,50000602 0000,113832C0 FFFF,E98E921E 59B6,E98E9234 59B6,50000802 0000,113832F0 FFFF,E98EB2F8 59BB,E98EB21C 59BB,E98EB248 59B6,50000602 0000,11385FF2 6464,50001002 0000,113831A8 FFFF,E98E8808 50CF,E98E8806 500A,E98E880C 8EF8,E98E880A 4BB6,E98E881A 50CF +Cheat16="Secret Items ",E97E8B58 ???? +Cheat16_O=$504F Have All Collected,$595A Have None +Cheat10="Have Zero Time all Levels",50000B04 0000,11386004 3000 +Cheat13="Take Off And Fly From Anywhere",E88B1827 595C +Cheat17="Do Shock Spring Jump From Anywhere",E88B1826 595C +Cheat4_N=Just collect one Note to Have 255 Notes in all Worlds. +Cheat3_N=Press L To Levitate & Let go to land +Cheat11_N=When Mumbo transforms you hold:C-Up for the Termite,C-Right for the Pumpkin,C-Down for the Walrus,C-Left for the Crocc,R for the Bumble Bee,L for the Washing Machine,Press nothing to turn into Banjo +Cheat13_N=Press A Button. Do not use with Do Shock Spring Jump From Anywhere +Cheat17_N=Press A Button. Do not use with Take Off And Fly From Anywhere +Cheat12="Infinite\Mumbo Tokens",E88EB21A 594F,E88EB2F6 594F + +//---- + +[CD7559AC-B26CF5AE-C:45] +Name=Banjo-Kazooie (U) (V1.1) Cheat0="Infinite\Eggs",E88EB2B9 594F Cheat1="Infinite\Lives",E88EB2DD 594F Cheat2="Infinite\Jiggies",E88EB21D 594F @@ -2622,7 +2656,7 @@ Cheat15_N=This Switch From Cheat lets you switch characters on a saved game For //---- -[4BCDFF47-AAA3AF8F-C:45] +[F35D5335-B7667CB7-C:45] Name=Castlevania (U) (V1.1) Cheat0="Infinite\Health",E98EF392 59B6 Cheat1="Infinite\Throwing Weapon",E98EF3A0 59B6 @@ -2649,6 +2683,33 @@ Cheat15_N=This Switch From Cheat lets you switch characters on a saved game For //---- +[4BCDFF47-AAA3AF8F-C:45] +Name=Castlevania (U) (V1.2) +Cheat0="Infinite\Health",E98EF392 59B6 +Cheat1="Infinite\Throwing Weapon",E98EF3A0 59B6 +Cheat2="Throwing Weapon Modifier",E98EF396 59?? +Cheat3="Press L To Levitate",D0387D7F 0020,E9895F68 9023 +Cheat4="Have\All Items",50000501 0000,10389C4A 0001,50000301 0000,10389C51 0001,E88EF3AE 5959,E88EF3AD 5959,E88EF3B3 5959,50000E01 0000,10389C60 0001 +Cheat5="Have\Invincibility",E88A7E52 5963 +Cheat6="Infinite\Red Jewels",E88EF39F 59BB +Cheat7="Status",E88EF3E0 59?? +Cheat7_O=$59 Good,$62 Vamp,$69 Poison,$7C Good but depressed,$B8 Sto,$6F V+P +Cheat8="Open All Doors and Gates,No Bosses",50002A02 0000,11389BD0 FFFF +Cheat9="Infinite\Energy",E88EF391 59B6 +Cheat10="Infinite\Funds",E88EF39B 5959,E98EF39A D7EF +Cheat11="Have\Exp Points",E88EF39F 59BB +Cheat12="Max Power Up",E88EF343 595C +Cheat13="Never Get Poisoned",E98EF3E0 595A +Cheat2_O=$5A Nothing,$59 Knives,$5C Exploding Potions,$5B Cross,$56 Axes +Cheat14="Level Select",89389C90 ????,89389C92 0000 +Cheat14_O=$595A Forest of Silence,$595C Castle Wall,$595B Villa,$5956 Inside Villa,$5958 Garden Maze,$5957 Tunnel,$5962 Underground Waterway,$5961 Castle Center,$596A Tower of Execution,$5969 - Tower of Sorcery,$596C - Tower of Science,$596B - Duel Tower,$5966 - Fight With Death/Actrise,$5965 - Castle Keep,$5968 - Intro (Glitch),$5967 - Clock Tower,$5972 - Final Dracula,$5974 - Fight With Maze Boss,$5973 - Room of Clocks,$596E - ??,$596D - ?? +Cheat14_N=You must use this code on a saved game, because the intro to the first level will mess up the game. Now select the saved game, and hold down the F9 button until the level loads. Some of the boss stages will not let you fight the boss unless you re-enter the area. Also, with the part of stage modifier, the second code modifies the part of the level that you are in, and 0000 is the level's start. +Cheat15="Switch From",E88EF393 59?? +Cheat15_O=$5A Carrie to Reindhart,$59 Reindhart to Carrie +Cheat15_N=This Switch From Cheat lets you switch characters on a saved game For example, if you are Reindhart and you want to be Carrie in the middle of your game save it and then enable this Cheat and press F1. when you start your saved game back up you'll be Carrie instead of Reindhart. + +//---- + [1CC06338-87388926-C:45] Name=Castlevania - Legacy of Darkness (U) Cheat0="Infinite\Keys\Clocktower A",E872FEC1 5964 @@ -2727,7 +2788,18 @@ Cheat53="Enable Characters All Charactors",E8850595 5956 //---- [6420535A-50028062-C:45] -Name=Chameleon Twist (U) +Name=Chameleon Twist (U) (V1.0) +Cheat0="Access All Levels",E876DC62 594F,E876DC68 594F +Cheat1="Extra Crowns",E8796AB9 5965 +Cheat2="Infinite Health",E86BA345 5964 +Cheat3="Extended Tongue",E9876AC2 504F +Cheat4="Level Select",E87D5FCD 59?? +Cheat4_O=$5A Stage 1,$59 Stage 2,$5C Stage 3,$5B Stage 4,$56 Stage 5,$55 Stage 6,$58 Stage 7 + +//---- + +[D81963C7-4271A3AA-C:45] +Name=Chameleon Twist (U) (V1.1) Cheat0="Access All Levels",E876DC62 594F,E876DC68 594F Cheat1="Extra Crowns",E8796AB9 5965 Cheat2="Infinite Health",E86BA345 5964 @@ -3332,7 +3404,7 @@ Cheat3="Infinite\Continues",E95B4FA8 594F Cheat2="Infinite\Nitros\Player 1",E85F3A53 594F Cheat4="Infinite\Time",E95E552C 9BE8 Cheat5="Play As",E85E5528 59?? -Cheat5_O=$5A ,$59 ,$5C ,$5B ,$56 ,$55 ,$58 ,$57 ,$62 ,$61 ,$64 ,$63 ,$5E ,$5D ,$60 ,$5F ,$6A ,$69 ,$6C ,$6B ,$66 ,$65 ,$68 ,$67 ,$72 ,$71 ,$74 +Cheat5_O=$5A ,$59 ,$5C ,$5B ,$56 ,$55 ,$58 ,$57 ,$62 ,$61 ,$64 ,$63 ,$5E ,$5D ,$60 ,$5F ,$6A ,$69 ,$6C ,$6B ,$66 ,$65 ,$68 ,$67 ,$72 ,$71 ,$74 //---- @@ -4459,7 +4531,27 @@ Cheat2_N=Keep you kid busy for hours!!! //---- [07861842-A12EBC9F-C:45] -Name=Excitebike 64 (U) +Name=Excitebike 64 (U) (V1.0) +Cheat0="Auto-Pilot Always On Turbo (Original Excitebike Mode)",E9648896 7204 +Cheat1="Unlock\Difficulties & All Special Tracks",E96384A8 504F +Cheat2="Unlock\Silver & Gold Cup",E96384A2 595B +Cheat3="Max Stunt Points",E964A470 59F2,E964A46E E7CF +Cheat4="Always Low Temp",E964A2F0 595A,E964A2EE 595A +Cheat5="Steering Control",E862F1A8 599A +Cheat6="Super Speed For All",E86200F8 599A,E86200F7 59CA +Cheat7="Power Turbo",E86200F4 599A,E86200F3 593A +Cheat8="No\Overheating",E86200DC 591B +Cheat9="No\Collision Drivers",E861F48C 599A +Cheat10="Fast\Movement (Player)",E861F4BB 59FF +Cheat11="Slow\Movement (Player)",E861F4BB 59BA +Cheat12="Fast\Movement (Drones)",E861F4AB 59FA +Cheat13="Slow\Movement (Drones)",E861F4AB 59BA +Cheat14="Earthquake Mode",E961C768 932A + +//---- + +[F9D411E3-7CB29BC0-C:45] +Name=Excitebike 64 (U) (V1.1) Cheat0="Auto-Pilot Always On Turbo (Original Excitebike Mode)",E9648896 7204 Cheat1="Unlock\Difficulties & All Special Tracks",E96384A8 504F Cheat2="Unlock\Silver & Gold Cup",E96384A2 595B @@ -7309,7 +7401,35 @@ Cheat10_N=This is needed to be able to Play all Levels of the Game //---- [90F5D9B3-9D0EDCF0-C:45] -Name=Pokemon Stadium (U) +Name=Pokemon Stadium (U) (V1.0) +Cheat0="Pokemon\Max HP\Player 1",E9603CDA 5C37,E9603C2E 5C37,E9603982 5C37 +Cheat1="Pokemon\Max HP\Player 2",E9603AF6 5C37,E9603A4A 5C37,E9603F9E 5C37 +Cheat2="Pokemon\Inf Spells\Player 1",E9603CD8 504F,E9603CD6 504F,E9603C2C 504F,E9603C2A 504F,E9603980 504F,E960397E 504F +Cheat3="Pokemon\Inf Spells\Player 2",E9603AF4 504F,E9603AF2 504F,E9603A48 504F,E9603A46 504F,E9603F9C 504F,E9603F9A 504F +Cheat4="Have All Pikachus Magnemites",E865D614 595A,E865D613 595A,E865D612 595A +Cheat5="Inf HP\In Battle All Pokemon\Player 1",E97EAD70 5C37 +Cheat6="Inf HP\In Battle All Pokemon\Player 2",E97EBB90 5C37 +Cheat7="Ultimate Code",E96B7294 5059,E96B7292 5059,E96B7298 5059,E96B7296 5059,E96B729C 5059 +Cheat7_N=what's so ultimate about this code is it raises your Pokemon to its full potential. Even at Level 100, most Pokemon still have a way to go to raise their stats to the max. But with this code, you can instantly boost any Pokemon to its greatest potential!!! + +//---- + +[1A122D43-C17DAF0F-C:45] +Name=Pokemon Stadium - Kiosk (U) (V1.1) +Cheat0="Pokemon\Max HP\Player 1",E9603CDA 5C37,E9603C2E 5C37,E9603982 5C37 +Cheat1="Pokemon\Max HP\Player 2",E9603AF6 5C37,E9603A4A 5C37,E9603F9E 5C37 +Cheat2="Pokemon\Inf Spells\Player 1",E9603CD8 504F,E9603CD6 504F,E9603C2C 504F,E9603C2A 504F,E9603980 504F,E960397E 504F +Cheat3="Pokemon\Inf Spells\Player 2",E9603AF4 504F,E9603AF2 504F,E9603A48 504F,E9603A46 504F,E9603F9C 504F,E9603F9A 504F +Cheat4="Have All Pikachus Magnemites",E865D614 595A,E865D613 595A,E865D612 595A +Cheat5="Inf HP\In Battle All Pokemon\Player 1",E97EAD70 5C37 +Cheat6="Inf HP\In Battle All Pokemon\Player 2",E97EBB90 5C37 +Cheat7="Ultimate Code",E96B7294 5059,E96B7292 5059,E96B7298 5059,E96B7296 5059,E96B729C 5059 +Cheat7_N=what's so ultimate about this code is it raises your Pokemon to its full potential. Even at Level 100, most Pokemon still have a way to go to raise their stats to the max. But with this code, you can instantly boost any Pokemon to its greatest potential!!! + +//---- + +[9C8FB2FA-9B84A09B-C:45] +Name=Pokemon Stadium (U) (V1.2) Cheat0="Pokemon\Max HP\Player 1",E9603CDA 5C37,E9603C2E 5C37,E9603982 5C37 Cheat1="Pokemon\Max HP\Player 2",E9603AF6 5C37,E9603A4A 5C37,E9603F9E 5C37 Cheat2="Pokemon\Inf Spells\Player 1",E9603CD8 504F,E9603CD6 504F,E9603C2C 504F,E9603C2A 504F,E9603980 504F,E960397E 504F @@ -7707,8 +7827,40 @@ Cheat11_N=Do not use this with Max RUMBLE //---- +[2F493DD0-2E64DFD9-C:45] +Name=Resident Evil 2 (U) (V1.0) +Cheat0="Max Item Modifier\Slot 01",E864E120 59??,E864E11F 594F +Cheat0_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat1="Max Item Modifier\Slot 02",E864E124 59??,E864E123 594F +Cheat1_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat2="Max Item Modifier\Slot 03",E864E128 59??,E864E127 594F +Cheat2_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat3="Max Item Modifier\Slot 04",E864E12C 59??,E864E12B 594F +Cheat3_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat4="Max Item Modifier\Slot 05",E864E130 59??,E864E12F 594F +Cheat4_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat5="Max Item Modifier\Slot 06",E864E134 59??,E864E133 594F +Cheat5_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat6="Max Item Modifier\Slot 07",E864E138 59??,E864E137 594F +Cheat6_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat7="Max Item Modifier\Slot 08",E864E13C 59??,E864E13B 594F +Cheat7_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat8="Max Item Modifier\Slot 09",E864E140 59??,E864E13F 594F +Cheat8_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat9="Max Item Modifier\Slot 10",E864E144 59??,E864E143 594F +Cheat9_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key +Cheat10="Infinite\Health",E9646676 5922 +Cheat11="Always Have Fine Condition",E964663C 595A +Cheat12="Play As",E9646890 ???? +Cheat12_O=$59DA Leon Original,$5ADA Claire Original,$5BDA Leon Original,$5CDA Claire Original,$55DA Leon Wounded,$56DA Claire without jacket,$57DA Leon Wounded,$58DA Claire without jacket,$61DA Leon as Stars,$62DA Claire as Biker,$63DA Leon as Biker,$64DA Claires body Leons outfit,$5DDA Hunk (can crash the game),$5EDA To Fu,$5FDA Ada (can crash the game),$60DA Cheryl, +Cheat13="Play Extra Mission",E9646742 59?? +Cheat13_O=$A2 The 4th Survior,$A1 To-Fu +Cheat14="Infinite\Time",E864E311 596A + +//---- + [AA18B1A5-07DB6AEB-C:45] -Name=Resident Evil 2 (U) +Name=Resident Evil 2 (U) (V1.1) Cheat0="Max Item Modifier\Slot 01",E864E120 59??,E864E11F 594F Cheat0_O=$5A Nothing,$59 Knife Hunk,$5C Handgun Hunk,$5B Handgun Different Ada,$56 Custom Handgun Hunk,$55 Magnum Hunk,$58 Custom Magnum Hunk,$57 Shotgun Hunk,$62 Custom Shotgun Hunk,$61 Grenade Launcher Claire,$64 Grenade Launcher (Flame Rounds) Claire,$63 Grenade Launcher (Acid Rounds) Claire,$5E Bowgun Claire,$5D Colt S.A.A. Claire,$60 Spark Shot Claire,$5F Sub Machine Gun Leon,$6A Flamethrower Leon,$69 Rocket Launcher Claire,$6C Gatling Gun Claire,$6B Machine Gun ???,$66 Handgun Bullets,$65 Shotgun Shells,$68 Magnum Bullets,$67 Fuel,$72 Grenade Rounds,$71 Flame Rounds,$74 Acid Rounds,$73 Machine Gun Bullets,$6E S. Shot Bullets,$6D Bow Gun Bolts,$70 Ink Ribbon,$6F Small Key,$7A Hand Gun Parts,$79 Magnum Parts,$7C Shotgun Parts,$7B First Aid Spray,$76 Chemical FR-W09,$75 Chemical AC-W24,$78 Green Herb,$77 Red Herb,$82 Blue Herb,$81 Mixed Herb (Green),$84 Mixed Herb (Red&Green),$83 Mixed Herb (Blue&Green),$7E Mixed Herb (?),$7D Mixed Herb (?),$80 Mixed Herb (?),$7F Lighter,$8A Lock Pick,$89 Picture,$8C Valve Handle,$8B Red Jewel,$86 Red Card Key,$85 Blue Card Key,$88 Serpent Stone,$87 Jaguar Stone,$92 Blue Stone,$91 Blue Stone (?),$94 Eagle Stone,$93 Bishop Plug,$8E Rook Plug,$8D Knight Plug,$90 King Plug,$8F W. Box Key,$9A Detonator,$99 Plastic Bomb,$9C Bomb&Detonator,$9B Crank,$96 Film,$95 Film (?),$98 Film (?),$97 Unicorn Medal,$A2 Eagle Medal,$A1 Wolf Medal,$A4 G. Cogwheel,$A3 Manhole Opener,$9E Main Fuse,$9D Fuse Case,$A0 Vaccine,$9F Vaccine Cart.,$AA Film,$A9 Base Vaccine,$AC G-Virus,$AB Special Key,$A6 Joint S Plug,$A5 Joint N Plug,$A8 Cord,$A7 Film,$B2 Cabin Key,$B1 Precinct Key (blue),$B4 Precinct Key (red),$B3 Precinct Key (?),$AE Precinct Key (green),$AD C. Panel Key (red),$B0 C. Panel Key (yellow),$AF P. Room Key,$BA MO Disk,$B9 Lab Card Key,$BC Master Key,$BB Platform Key,$B6 No Item,$B5 No Item,$B8 No Item,$B7 No Item,$C2 Chris's Diary,$C1 Mail to Chris,$C4 Memo to Leon,$C3 Police Memorandum,$BE Operation Report 1,$BD Mail to the Chief,$C0 Mail to the Chief (?),$BF Secretary's Diary A,$CA Secretary's Diary B,$C9 Operation Report 2,$CC User Registration,$CB Film A,$C6 Film B,$C5 Film C,$C8 Patrol Report,$C7 Watchman's Diary,$D2 Chief's Diary,$D1 Sewer Manager Diary,$D4 Sewer Manager Fax,$D3 Film D,$CE Vaccine Synthesis,$CD Lab Security Manual,$D0 P-Epsilon Report,$CF Rookie Files,$DA Rookie Files (?),$D9 No Item,$DC Spade Key,$DB Diamond Key,$D6 Desk Key,$D5 Heart Key,$D8 Club Key,$D7 Virgin Heart,$E2 Square Crank,$E1 Down Key,$E4 Up Key,$E3 Locker Key Cheat1="Max Item Modifier\Slot 02",E864E124 59??,E864E123 594F @@ -8021,7 +8173,13 @@ Cheat4_O=$5A Track 1,$59 Track 2,$5C Track 3,$5B Track 4 //---- [0C814EC4-58FE5CA8-C:45] -Name=Scooby-Doo - Classic Creep Capers (U) +Name=Scooby-Doo - Classic Creep Capers (U) (V1.0) +Cheat0="Infinite Health",E95EBE1E 5992,E85F02E9 5957 + +//---- + +[569433AD-F7E13561-C:45] +Name=Scooby-Doo - Classic Creep Capers (U) (V1.1) Cheat0="Infinite Health",E95EBE1E 5992,E85F02E9 5957 //---- @@ -8180,7 +8338,7 @@ Cheat2="All levels complete",E861661C 595E,E861661B 5964,E861661A 5964,E8616619 //---- [A7D015F8-2289AA43-C:45] -Name=Star Fox 64 (U) +Name=Star Fox 64 (U) (V1.0) Cheat0="Unlimited\Boost",E967D3F4 595A,E967D3F2 595A,E967FED4 595A,E967FED2 595A Cheat1="Have All Medals",50000802 0000,1116E6E0 7777 Cheat2="Infinite\Hyper Laser",E869D06D 595C @@ -8707,7 +8865,17 @@ Cheat7_N=This code gives you all tracks and cars. once you activate this code, Y //---- [A150743E-CF2522CD-C:45] -Name=Toy Story 2 (U) +Name=Toy Story 2 (U) (V1.0) +Cheat0="Have 99 coins",E95F0862 59BB +Cheat1="Have all 5 collectables",E872CDC6 5955 +Cheat2="Infinite Lives",E85F085E 5961 +Cheat3="Infinite Battery Power",E95F085A 5960 +Cheat4="Hold jump to fly",E95F0754 595C + +//---- + +[C151AD61-280FFF22-C:45] +Name=Toy Story 2 (U) (V1.1) Cheat0="Have 99 coins",E95F0862 59BB Cheat1="Have all 5 collectables",E872CDC6 5955 Cheat2="Infinite Lives",E85F085E 5961 @@ -8753,7 +8921,31 @@ Cheat10="Have\Cheat Menu",E965E9E8 504F,E965E9E6 504F //---- [ADB9498B-DAF28F55-C:45] -Name=Turok: Rage Wars (U) +Name=Turok - Rage Wars (U) (V1.0) +Cheat0="Player 1\Have All\Mini Game Icons",E8631E69 5976 +Cheat1="Player 1\Infinite\Proximity Mines",E887BC93 594F +Cheat2="Player 1\Infinite\Metal Claws",E887BC97 594F +Cheat3="Player 1\Infinite\Sentry Guns",E887BC91 594F +Cheat4="Player 1\Infinite\Cerebral Bores",E887BC8D 594F +Cheat5="Player 1\Infinite\Health",E987BC7A B55A,E8BD7EDA 59B6 +Cheat6="Player 1\Infinite Ammo",E887BC8B 59BB,E887BC89 59BB,E887BC8F 59BB,E8BD7EEB 59BB,E8BD7EE9 59BB,E8BD7EEF 59BB,E8BD7EED 59BB,E8BD7EF3 59BB,E8BD7EF1 59BB,E8BD7EF7 59BB +Cheat7="Player 1\Play As",E86A56B0 59?? +Cheat7_O=$5A Turok,$59 Mantid,$5C Drone,$5B Fireborn,$56 Soldier,$55 Adon,$58 Lord Of The Dead,$57 Elite Guard,$62 Blind One,$61 Juggernaut,$64 Death Guard,$63 Bastile,$5E Syra,$5D Symbiont,$60 Tail Set,$5F Pur-Lin,$6A Symbiont,$69 Raptor,$6C Mites,$6B Monkey +Cheat8="Level Select\Proving Ground-Tightrope",E86A14F1 59?? +Cheat8_O=$5A Proving Grounds,$59 Basic Training,$5C Crossroads,$5B Grim Retreat,$56 Cathedral,$55 Fall Out,$58 Boxed Set,$57 Dire Straight,$62 Prey,$61 Warehouse,$64 Water Temple,$63 Bomb Shelter,$5E Tempered,$5D Earth Temple,$60 Fire Temple,$5F Mystic,$6A Bottleneck,$69 Tightrope, +Cheat9="Level Select\The Pit-Starlight",E86A14F1 59?? +Cheat9_O=$6C The Pit,$6B Leap Of Faith,$66 Wicked Dance,$65 Bunker,$68 Ampatheater,$67 Fire Walker,$72 Crypts,$71 Breakdown,$74 Retaliation,$73 Hopeless,$6E Matrix,$6D Fathom,$70 The Pedestal,$6F Defcon 5,$7A Spirit Temple,$79 Stronghold,$7C Courtyard,$7B Starlight +Cheat10="Player 1\Infinite\Time",E96A5A4C 98FF,E96A5A4A 1509 +Cheat11="Player 1\Have All\Medals",E9631E9E 504F,E9631EA4 504F,E9631EA2 504F,E8631EA8 595B +Cheat12="Player 1\Start With Weapon",E887B908 59?? +Cheat12_O=$5A Warhammer,$59 Boomerang,$5C Tek Crossbow,$5B Mag 60,$56 Shotgun,$55 Assault Rifle,$58 Mini Gun,$57 Plasma Rifle,$62 Freeze Gun,$61 Flaregun,$64 Grenade Launcher,$63 Scorpion Launcher,$5E Napalm Gel,$5D Emaciator,$60 Inflator,$5F Chest Burster,$6A Raptor Claw,$69 Mite Bite,$6C Cerebral Bore,$6B PFM Mine,$66 Iron Claw,$65 Sentry Turret +Cheat8_N=Do Not use this with Level Select The Pit-Starlight. Only use One Level Select Option At A Time +Cheat9_N=Do Not use this with Level Select Proving Ground-Tightrope. Only use One Level Select Option At A Time + +//---- + +[2388984C-DA7B3CC5-C:45] +Name=Turok - Rage Wars (U) (V1.1) Cheat0="Player 1\Have All\Mini Game Icons",E8631E69 5976 Cheat1="Player 1\Infinite\Proximity Mines",E887BC93 594F Cheat2="Player 1\Infinite\Metal Claws",E887BC97 594F @@ -13916,7 +14108,7 @@ Name=Wayne Gretzky's 3D Hockey '98 (E) Cheat0="Max Score\Team 1",E9685578 504F Cheat1="Max Score\Team 2",E9688A88 504F Cheat2="Difficulty Mod",E8689A4F 59?? -Cheat2_O=$5A ,$59 ,$5C ,$5B ,$56 +Cheat2_O=$5A ,$59 ,$5C ,$5B ,$56 Cheat3="Anger metre always full",E861EE90 594F,E861EF7A 594F //---- diff --git a/Config/Project64.rdb b/Config/Project64.rdb index fdbd720dd..2fa113fbe 100644 --- a/Config/Project64.rdb +++ b/Config/Project64.rdb @@ -1,4 +1,4 @@ -// ============ RDB for PJ64 v2.2. GoodN64 v202b ==================================== +// ============ RDB for PJ64 v2.2. GoodN64 v321 ===================================== // PJ64 v2.2 Official RDB // Not for use with PJ64 v1.6 or previous @@ -6,8 +6,8 @@ [Meta] Author=Project64 team -Version=2.2.2 -Date=2015/02/21 +Version=2.2.4 +Date=2015/03/28 Homepage=www.pj64-emu.com [Microcode Identifiers] @@ -47,169 +47,6 @@ Homepage=www.pj64-emu.com //35A16874=0 //Quake 64 Intro (PD), On load (Gent) //A21D415B=0 //TRSI Intro by Ayatollah (POM '99) (PD), On load (Gent) -// UCODE: -// These are ucode crcs used in the uCode detector. -// If a crc is not found here, the plugin will ask you -// to add it. All these values are in hexadecimal. -// -// uCodes: -// -1 - Unknown, display error -// 0 - RSP SW 2.0X (Super Mario 64) -// 1 - F3DEX 1.XX (Star Fox 64) -// 2 - F3DEX 2.XX (The Legend of Zelda: Ocarina of Time) -// 3 - F3DEX ? (WaveRace) -// 4 - RSP SW 2.0D EXT (Star Wars: Shadows of the Empire) -// 5 - RSP SW 2.0 (Diddy Kong Racing); -// 6 - S2DEX 1.XX (Yoshi's Story - SimCity 2000) -// 7 - RSP SW PD (Perfect Dark) -// 8 - F3DEXBG 2.08 (Conker's Bad Fur Day) -[Glide64-ucode] -006bd77f=0 -03044b84=2 -030f4b84=2 -05165579=1 -05777c62=1 -057e7c62=1 -07200895=0 -0bf36d36=9 -0d7bbffb=-1 -0d7cbffb=5 -0ff79527=2 -0ff795bf=-1 -1118b3e0=1 -1517a281=1 -168e9cd5=2 -1a1e18a0=2 -1a1e1920=2 -1a62dbaf=2 -1a62dc2f=2 -1de712ff=1 -1ea9e30f=6 -1f120bbb=21 -21f91834=2 -21f91874=2 -22099872=2 -24cd885b=1 -26a7879a=1 -299d5072=6 -2b291027=2 -2b5a89c2=6 -2c7975d6=1 -2d3fe3f1=1 -2f71d1d5=2 -2f7dd1d5=2 -327b933d=1 -339872a6=1 -377359b6=2 -3a1c2b34=0 -3a1cbac3=0 -3f7247fb=0 -3ff1a4ca=1 -4165e1fd=0 -4340ac9b=1 -440cfad6=1 -47d46e86=7 -485abff2=2 -4fe6df78=1 -5182f610=0 -5257cd2a=1 -5414030c=1 -5414030d=1 -559ff7d4=1 -5b5d36e3=4 -5b5d3763=3 -5d1d6f53=0 -5d3099f1=2 -5df1408c=1 -5ef4e34a=1 -6075e9eb=1 -60c1dcc4=1 -6124a508=2 -630a61fb=2 -63be08b1=5 -63be08b3=5 -64ed27e5=1 -65201989=2 -65201a09=2 -66c0b10a=1 -679e1205=2 -6bb745c9=6 -6d8f8f8a=2 -6e4d50af=0 -6eaa1da8=1 -72a4f34e=1 -73999a23=1 -74af0a74=6 -753be4a5=2 -794c3e28=6 -7df75834=1 -7f2d0a2e=1 -82f48073=1 -832fcb99=1 -841ce10f=1 -844b55b5=-1 -863e1ca7=1 -86b1593e=-1 -8805ffea=1 -8d5735b2=1 -8d5735b3=1 -8ec3e124=-1 -93d11f7b=2 -93d11ffb=2 -93d1ff7b=2 -9551177b=2 -955117fb=2 -95cd0062=2 -97d1b58a=1 -a2d0f88e=2 -a346a5cc=1 -aa86cb1d=2 -aae4a5b9=2 -ad0a6292=2 -ad0a6312=2 -ae08d5b9=0 -b1821ed3=1 -b4577b9c=1 -b54e7f93=0 -b62f900f=2 -ba65ea1e=2 -ba86cb1d=8 -bc03e969=0 -bc45382e=2 -be78677c=1 -bed8b069=1 -c3704e41=1 -c46dbc3d=1 -c99a4c6c=1 -c901ce73=2 -c901cef3=2 -cb8c9b6c=2 -cee7920f=1 -cfa35a45=2 -d1663234=1 -d20dedbf=6 -d2a9f59c=1 -d41db5f7=1 -d5604971=0 -d57049a5=1 -d5c4dc96=-1 -d5d68b1f=0 -d67c2f8b=0 -d802ec04=1 -da13ab96=2 -de7d67d4=2 -e1290fa2=2 -e41ec47e=0 -e65cb4ad=2 -e89c2b92=1 -e9231df2=1 -ec040469=1 -ee47381b=1 -ef54ee35=1 -f9893f70=21 -fb816260=1 -ff372492=21 - [Rom Status] // Setting up ROM browser status categories & colour definitions: // @@ -318,37 +155,34 @@ Bad ROM?.AutoFullScreen=False Good Name=007 - The World is Not Enough (E) (M3) Internal Name=TWINE Status=Compatible -AiCountPerBytes=800 +AiCountPerBytes=530 +Fixed Audio=1 RDRAM Size=8 +Sync Audio=0 [033F4C13-319EE7A7-C:45] Good Name=007 - The World is Not Enough (U) Internal Name=TWINE Status=Compatible -AiCountPerBytes=800 +AiCountPerBytes=530 +Fixed Audio=1 RDRAM Size=8 +Sync Audio=0 [58FD3F25-D92EAA8D-C:50] Good Name=1080 Snowboarding (E) (M4) Internal Name=1080 SNOWBOARDING Status=Compatible Plugin Note=[video] framebuffer:screen (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 -Self Texture=0 [1FBAF161-2C1C54F1-C:41] Good Name=1080 Snowboarding (JU) (M2) Internal Name=1080 SNOWBOARDING Status=Compatible -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-Cache=0 SMM-PI DMA=0 SMM-TLB=0 @@ -396,9 +230,9 @@ Status=Compatible Good Name=A Bug's Life (E) Internal Name=A Bug's Life Status=Compatible -Clear Frame=0 Counter Factor=1 32bit=No +ViRefresh=2200 [2B38AEC0-6350B810-C:46] Good Name=A Bug's Life (F) @@ -406,6 +240,7 @@ Internal Name=A Bug's Life Status=Compatible Counter Factor=1 32bit=No +ViRefresh=2200 [DFF227D9-0D4D8169-C:44] Good Name=A Bug's Life (G) @@ -413,14 +248,15 @@ Internal Name=A Bug's Life Status=Compatible Counter Factor=1 32bit=No +ViRefresh=2200 [F63B89CE-4582D57D-C:49] Good Name=A Bug's Life (I) Internal Name=A Bug's Life Status=Compatible -Clear Frame=0 Counter Factor=1 32bit=No +ViRefresh=2200 [82DC04FD-CF2D82F4-C:45] Good Name=A Bug's Life (U) @@ -428,6 +264,7 @@ Internal Name=A Bug's Life Status=Compatible Counter Factor=1 32bit=No +ViRefresh=2200 [62F6BE95-F102D6D6-C:50] Good Name=AeroFighters Assault (E) (M3) @@ -465,91 +302,66 @@ Good Name=AI Shougi 3 (J) Internal Name=AI¼®³·Þ3 Status=Unsupported Core Note=causing texture errors -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [2DC4FFCC-C8FF5A21-C:50] Good Name=Aidyn Chronicles - The First Mage (E) Internal Name=AIDYN_CHRONICLES Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -Emulate Clear=0 Fixed Audio=1 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 +Sync Audio=0 [E6A95A4F-BAD2EA23-C:45] Good Name=Aidyn Chronicles - The First Mage (U) (V1.0) Internal Name=AIDYN_CHRONICLES Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -Emulate Clear=0 Fixed Audio=1 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 +Sync Audio=0 [112051D2-68BEF8AC-C:45] Good Name=Aidyn Chronicles - The First Mage (U) (V1.1) Internal Name=AIDYN_CHRONICLES Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -Emulate Clear=0 Fixed Audio=1 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 +Sync Audio=0 [27C425D0-8C2D99C1-C:50] Good Name=Airboarder 64 (E) Internal Name=AIR BOARDER 64 Status=Compatible -AiCountPerBytes=400 Counter Factor=1 [6C45B60C-DCE50E30-C:4A] Good Name=Airboarder 64 (J) Internal Name=´±°ÎÞ°ÀÞ°64 Status=Compatible -AiCountPerBytes=400 -Clear Frame=0 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [B6951A94-63C849AF-C:4A] Good Name=Akumajou Dracula Mokushiroku - Real Action Adventure (J) Internal Name=DRACULA MOKUSHIROKU Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 RDRAM Size=8 -Self Texture=0 [A5533106-B9F25E5B-C:4A] Good Name=Akumajou Dracula Mokushiroku Gaiden - Legend of Cornell (J) Internal Name=DRACULA MOKUSHIROKU2 Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 RDRAM Size=8 -Self Texture=0 [DFD784AD-AE426603-C:50] Good Name=All Star Tennis '99 (E) (M5) @@ -589,27 +401,20 @@ RDRAM Size=8 Good Name=All-Star Baseball 2001 (U) Internal Name=All-Star Baseball 20 Status=Compatible -Clear Frame=0 RDRAM Size=8 ViRefresh=1400 - [8F0CC36D-C738259E-C:45] Good Name=Animal Forest [T-90%] Status=Compatible Plugin Note=[video] errorsause menu -Clear Frame=0 [3CC77150-21CDB987-C:50] Good Name=Armorines - Project S.W.A.R.M. (E) Internal Name=Armorines Project S. Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [C0F6DB17-80E0D532-C:44] Good Name=Armorines - Project S.W.A.R.M. (G) @@ -621,7 +426,6 @@ RDRAM Size=8 Good Name=Armorines - Project S.W.A.R.M. (U) Internal Name=Armorines Project S. Status=Compatible -Clear Frame=0 RDRAM Size=8 [4C52BBB2-CEAB0F6B-C:45] @@ -675,9 +479,6 @@ Core Note=(see GameFAQ) Plugin Note=[video] errors:various (see GameFAQ) Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [E73C7C4F-AF93B838-C:4A] Good Name=Baku Bomberman 2 (J) @@ -689,11 +490,7 @@ Plugin Note=[video] errors:various (see GameFAQ) Good Name=Bakuretsu Muteki Bangaioh (J) Internal Name=BANGAIOH Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [88CF980A-8ED52EB5-C:4A] Good Name=Bakushou Jinsei 64 - Mezase! Resort Ou (J) @@ -705,10 +502,7 @@ Good Name=Banjo to Kazooie no Daibouken (J) Internal Name=Banjo-Kazooie Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Self Texture=1 [514B6900-B4B19881-C:4A] @@ -724,10 +518,7 @@ Good Name=Banjo-Kazooie (E) (M3) Internal Name=Banjo-Kazooie Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Self Texture=1 [A4BF9306-BF0CDFD1-C:45] @@ -735,9 +526,7 @@ Good Name=Banjo-Kazooie (U) (V1.0) Internal Name=Banjo-Kazooie Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 Self Texture=1 @@ -746,9 +535,7 @@ Good Name=Banjo-Kazooie (U) (V1.1) Internal Name=Banjo-Kazooie Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 Self Texture=1 @@ -766,10 +553,7 @@ Internal Name=BANJO TOOIE Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Save Type=16kbit Eeprom Self Texture=1 @@ -780,10 +564,7 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) AiCountPerBytes=625 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Save Type=16kbit Eeprom Self Texture=1 @@ -792,7 +573,6 @@ Good Name=Bass Hunter 64 (E) Internal Name=BASS HUNTER 64 Status=Compatible Plugin Note=[video] errors:HUD; use Glide64 -Clear Frame=0 Counter Factor=1 [D76333AC-0CB6219D-C:4A] @@ -806,12 +586,8 @@ Good Name=Bassmasters 2000 (U) Internal Name=BASSMASTERS2000 Status=Compatible Plugin Note=[video] missing:player textures in menu; use Glide64 -Clear Frame=0 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [204489C1-1286CF2B-C:45] Good Name=Batman Beyond - Return of the Joker (U) @@ -845,9 +621,10 @@ Counter Factor=3 [55D4C4CE-7753C78A-C:45] Good Name=Battlezone - Rise of the Black Dogs (U) Internal Name=BATTLEZONE -Status=Broken (core) -Core Note=broken graphics; use older PJ64 +Status=Compatible AiCountPerBytes=200 +Counter Factor=1 +RDRAM Size=8 [9C7318D2-24AE0DC1-C:4A] Good Name=Beetle Adventure Racing (J) @@ -855,12 +632,8 @@ Internal Name=BEETLE ADVENTURE JP Status=Compatible Plugin Note=[video] errors:various; use Glide64 Counter Factor=3 -ViRefresh=1400 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 +ViRefresh=1400 [A1B64A61-D014940B-C:50] Good Name=Beetle Adventure Racing! (E) (M3) @@ -876,12 +649,8 @@ Internal Name=Beetle Adventure Rac Status=Compatible Plugin Note=[video] errors:various; use Glide64 Counter Factor=3 -ViRefresh=1400 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 +ViRefresh=1400 [08FFA4B7-01F453B6-C:45] Good Name=Big Mountain 2000 (U) @@ -894,34 +663,29 @@ Good Name=Bio F.R.E.A.K.S. (E) Internal Name=BIOFREAKS Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 +RDRAM Size=8 [08123595-0510F1DE-C:45] Good Name=Bio F.R.E.A.K.S. (U) Internal Name=BIOFREAKS Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 +RDRAM Size=8 [7EAE2488-9D40A35A-C:4A] Good Name=Biohazard 2 (J) Internal Name=BioHazard II Status=Compatible Core Note=(see GameFAQ) -Plugin Note=[video] depth problem (use Glide64) +Plugin Note=[video] depth problem (use Glide64 RDRAM Size=8 in main RDB, otherwise Glide64 will not render all the background in some scenes) 32bit=No -AiCountPerBytes=800 -Audio Signal=Yes +AiCountPerBytes=530 Counter Factor=1 -RDRAM Size=8 +Fixed Audio=1 +Linking=Off +Sync Audio=0 [7C64E6DB-55B924DB-C:50] Good Name=Blast Corps (E) @@ -971,9 +735,6 @@ Clear Frame=2 Counter Factor=1 Culling=1 Delay SI=Yes -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [5326696F-FE9A99C3-C:45] Good Name=Body Harvest (U) @@ -985,9 +746,6 @@ Clear Frame=2 Counter Factor=1 Culling=1 Delay SI=Yes -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [B3D451C6-E1CB58E2-C:4A] Good Name=Bokujou Monogatari 2 (J) (V1.0) @@ -998,7 +756,6 @@ Status=Compatible Good Name=Bokujou Monogatari 2 (J) (V1.1) Internal Name=ÎÞ¸¼Þ®³ÓɶÞÀØ2 Status=Compatible -Clear Frame=0 [736657F6-3C88A702-C:4A] Good Name=Bokujou Monogatari 2 (J) (V1.2) @@ -1016,11 +773,7 @@ Clear Frame=1 Good Name=Bomberman 64 (J) Internal Name=BOMBERMAN64 Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [F568D51E-7E49BA1E-C:45] Good Name=Bomberman 64 (U) @@ -1029,9 +782,6 @@ Status=Issues (plugin) Plugin Note=[video] errors:various (see GameFAQ) Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [237E73B4-D63B6B37-C:45] Good Name=Bomberman 64 - The Second Attack! (U) @@ -1048,17 +798,12 @@ SMM-TLB=0 [D85C4E29-88E276AF-C:50] Good Name=Bomberman Hero (E) Internal Name=BOMBERMAN HERO -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [4446FDD6-E3788208-C:45] Good Name=Bomberman Hero (U) Internal Name=BOMBERMAN HERO Status=Compatible -Clear Frame=0 [67FF12CC-76BF0212-C:4A] Good Name=Bomberman Hero - Mirian Oujo wo Sukue! (J) @@ -1070,23 +815,15 @@ Good Name=Bottom of the 9th (U) Internal Name=Bottom of the 9th Status=Compatible Plugin Note=[video] missing:intro screens; use Glide64 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [1E22CF2E-42AAC813-C:45] Good Name=Brunswick Circuit Pro Bowling (U) Internal Name=BRUNSWICKBOWLING Status=Compatible Plugin Note=[video] errors:resolution; use Glide64 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [D5B2339C-CABCCAED-C:50] Good Name=Buck Bumble (E) (M5) @@ -1111,7 +848,6 @@ AiCountPerBytes=200 Good Name=Bust-A-Move '99 (U) Internal Name=Bust A Move '99 Status=Compatible -Clear Frame=0 [CEDCDE1E-513A0502-C:50] Good Name=Bust-A-Move 2 - Arcade Edition (E) @@ -1145,14 +881,12 @@ Counter Factor=1 Good Name=Carmageddon 64 (E) (M4) (Eng-Spa-Fre-Ger) Internal Name=CARMAGEDDON64 Status=Compatible -Clear Frame=0 Counter Factor=1 [E48E01F5-E6E51F9B-C:59] Good Name=Carmageddon 64 (E) (M4) (Eng-Spa-Fre-Ita) Internal Name=CARMAGEDDON64 Status=Compatible -Clear Frame=0 Counter Factor=1 [F00F2D4E-340FAAF4-C:45] @@ -1165,26 +899,18 @@ Counter Factor=1 Good Name=Castlevania (E) (M3) Internal Name=CASTLEVANIA Status=Compatible -Clear Frame=0 -CustomSMM=1 -FuncFind=1 RDRAM Size=8 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-Protect=1 -SMM-TLB=1 [F35D5F95-8AFE3D69-C:45] Good Name=Castlevania (U) (V1.0) Internal Name=CASTLEVANIA Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -CustomSMM=1 -Emulate Clear=0 -FuncFind=1 Primary Frame Buffer=1 RDRAM Size=8 SMM-Cache=0 @@ -1192,18 +918,13 @@ SMM-FUNC=0 SMM-PI DMA=0 SMM-Protect=1 SMM-TLB=0 -Self Texture=0 [F35D5335-B7667CB7-C:45] Good Name=Castlevania (U) (V1.1) Internal Name=CASTLEVANIA Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -CustomSMM=1 -Emulate Clear=0 -FuncFind=1 Primary Frame Buffer=1 RDRAM Size=8 SMM-Cache=0 @@ -1211,18 +932,13 @@ SMM-FUNC=0 SMM-PI DMA=0 SMM-Protect=1 SMM-TLB=0 -Self Texture=0 [4BCDFF47-AAA3AF8F-C:45] Good Name=Castlevania (U) (V1.2) Internal Name=CASTLEVANIA Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -CustomSMM=1 -Emulate Clear=0 -FuncFind=1 Primary Frame Buffer=1 RDRAM Size=8 SMM-Cache=0 @@ -1230,44 +946,31 @@ SMM-FUNC=0 SMM-PI DMA=0 SMM-Protect=1 SMM-TLB=0 -Self Texture=0 [A2C54BE7-6719CBB2-C:50] Good Name=Castlevania - Legacy of Darkness (E) (M3) Internal Name=CASTLEVANIA2 Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -CustomSMM=1 -Emulate Clear=0 -FuncFind=1 Primary Frame Buffer=1 RDRAM Size=8 SMM-Cache=0 SMM-PI DMA=0 SMM-Protect=1 -SMM-TLB=1 -Self Texture=0 [1CC06338-87388926-C:45] Good Name=Castlevania - Legacy of Darkness (U) Internal Name=CASTLEVANIA2 Status=Compatible AiCountPerBytes=200 -Clear Frame=0 Culling=1 -CustomSMM=1 -Emulate Clear=0 -FuncFind=1 Primary Frame Buffer=1 RDRAM Size=8 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-Protect=1 -SMM-TLB=1 -Self Texture=0 [DCCF2134-9DD63578-C:50] Good Name=Centre Court Tennis (E) @@ -1275,9 +978,6 @@ Internal Name=CENTRE COURT TENNIS Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [B9AF8CC6-DEC9F19F-C:50] Good Name=Chameleon Twist (E) @@ -1285,7 +985,6 @@ Internal Name=Chameleon Twist Status=Compatible Plugin Note=[input] disable Memory Pak AiCountPerBytes=200 -Clear Frame=0 [A4F2F521-F0EB168E-C:4A] Good Name=Chameleon Twist (J) @@ -1314,9 +1013,6 @@ Internal Name=Chameleon Twist2 Status=Compatible Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [0549765A-93B9D042-C:4A] Good Name=Chameleon Twist 2 (J) @@ -1349,7 +1045,6 @@ Internal Name=CHOPPER_ATTACK Status=Compatible Plugin Note=[video] (see GameFAQ) AiCountPerBytes=200 -Clear Frame=0 [214CAD94-BE1A3B24-C:45] Good Name=Chopper Attack (U) @@ -1392,7 +1087,6 @@ Internal Name=CITY TOUR GP Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:map,speedo -Clear Frame=0 Counter Factor=1 Delay SI=Yes RDRAM Size=8 @@ -1402,7 +1096,6 @@ Good Name=Clay Fighter - Sculptor's Cut (U) Internal Name=Clayfighter SC Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 [8E9692B3-4264BB2A-C:50] Good Name=Clay Fighter 63 1-3 (E) @@ -1430,29 +1123,21 @@ Good Name=Command & Conquer (E) (M2) Internal Name=Command&Conquer Status=Compatible Plugin Note=[video] errors:textures in briefings -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 +RDRAM Size=8 [B5025BAD-D32675FD-C:44] Good Name=Command & Conquer (G) Internal Name=Command&Conquer Status=Compatible Plugin Note=[video] errors:textures in briefings -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [95286EB4-B76AD58F-C:45] Good Name=Command & Conquer (U) Internal Name=Command&Conquer Status=Compatible Plugin Note=[video] errors:textures in briefings -Clear Frame=0 Culling=1 RDRAM Size=8 @@ -1462,30 +1147,55 @@ Internal Name=CONKER BFD Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:various (see GameFAQ) +32bit=No +AiCountPerBytes=500 Clear Frame=2 Culling=1 -CustomSMM=1 Emulate Clear=1 FuncFind=2 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-TLB=0 Save Type=16kbit Eeprom -Self Texture=0 +ViRefresh=2200 -[A08D0F77-6F82E38C-C:45] -Good Name=Conker's Bad Fur Day (ECTS) -Internal Name=CBFD ECTS +[8BC3A47A-74221294-C:45] +Good Name=Conker's Bad Fur Day (U) (Debug Version) +Internal Name=CONKER BFD DEBUG Status=Compatible +Plugin Note=[video] errors:various 32bit=No +AiCountPerBytes=500 +Clear Frame=2 +Culling=1 +Emulate Clear=1 FuncFind=2 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-TLB=0 Save Type=16kbit Eeprom +ViRefresh=2200 + +[A08D0F77-6F82E38C-C:45] +Good Name=Conker's Bad Fur Day (U) (ECTS Demo) +Internal Name=CBFD ECTS +Status=Compatible +Plugin Note=[video] errors:various +32bit=No +AiCountPerBytes=500 +Clear Frame=2 +Culling=1 +Emulate Clear=1 +FuncFind=2 +RDRAM Size=8 +SMM-Cache=0 +SMM-FUNC=0 +SMM-PI DMA=0 +SMM-TLB=0 +Save Type=16kbit Eeprom +ViRefresh=2200 [30C7AC50-7704072D-C:45] Good Name=Conker's Bad Fur Day (U) @@ -1494,24 +1204,22 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:various (see GameFAQ) 32bit=No +AiCountPerBytes=500 Clear Frame=2 Culling=1 -CustomSMM=1 Emulate Clear=1 FuncFind=2 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-TLB=0 Save Type=16kbit Eeprom -Self Texture=0 +ViRefresh=2200 [46A3F7AF-0F7591D0-C:45] Good Name=Cruis'n Exotica (U) Internal Name=CruisnExotica Status=Compatible -Clear Frame=0 Culling=1 [503EA760-E1300E96-C:50] @@ -1528,12 +1236,8 @@ Internal Name=Cruis'n USA Status=Compatible Core Note=high system requirement Plugin Note=[video] missing:dissolve effect (see GameFAQ) -Clear Frame=0 Culling=1 Delay SI=Yes -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [5306CF45-CBC49250-C:45] Good Name=Cruis'n USA (U) (V1.1) @@ -1567,7 +1271,6 @@ Save Type=16kbit Eeprom Good Name=Custom Robo (J) Internal Name=custom robo Status=Compatible -Clear Frame=0 [079501B9-AB0232AB-C:4A] Good Name=Custom Robo V2 (J) @@ -1586,7 +1289,6 @@ Good Name=CyberTiger (U) Internal Name=CyberTiger Status=Issues (core) Core Note=hangs (see GameFAQ) -Clear Frame=0 //================ D ================ [7188F445-84410A68-C:4A] @@ -1608,11 +1310,7 @@ Internal Name=DARK RIFT Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] slow in cutscenes -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [F5363349-DBF9D21B-C:45] Good Name=Deadly Arts (U) @@ -1627,17 +1325,14 @@ Status=Compatible [17C54A61-4A83F2E7-C:4A] Good Name=Densha de GO! 64 (J) Internal Name=ÃÞü¬ÃÞGO!64 -Status=Unsupported -Core Note=hangs -Plugin Note=[input] (see GameFAQ) +Status=Compatible [A5F667E1-DA1FBD1F-C:4A] Good Name=Derby Stallion 64 (J) Internal Name=DERBYSTALLION 64 -Status=Uncertain -Core Note=can't save? +Status=Compatible AiCountPerBytes=200 -Sync Audio=No +Sync Audio=0 [96BA4EFB-C9988E4E-C:0] Good Name=Derby Stallion 64 (J) (Beta) @@ -1680,7 +1375,6 @@ Good Name=Diddy Kong Racing (E) (M3) (V1.1) Internal Name=Diddy Kong Racing Status=Compatible 32bit=No -Clear Frame=0 [7435C9BB-39763CF4-C:4A] Good Name=Diddy Kong Racing (J) @@ -1711,7 +1405,6 @@ Status=Compatible Good Name=Disney's Donald Duck - Goin' Quackers (U) (M4) Internal Name=Donald Duck Goin' Qu Status=Compatible -Clear Frame=0 Counter Factor=3 RDRAM Size=8 @@ -1720,38 +1413,49 @@ Good Name=Disney's Tarzan (E) Internal Name=TARZAN Status=Compatible Plugin Note=[video] missing:items; use 1.5.2 plugin -ViRefresh=1400 +AiCountPerBytes=530 +Audio Signal=Yes Counter Factor=1 +Fixed Audio=1 +Sync Audio=0 [001A3BD0-AFB3DE1A-C:46] Good Name=Disney's Tarzan (F) Internal Name=TARZAN Status=Compatible Plugin Note=[video] missing:items; use 1.5.2 plugin -ViRefresh=1400 +AiCountPerBytes=530 +Audio Signal=Yes Counter Factor=1 +Fixed Audio=1 +Sync Audio=0 [4C261323-4F295E1A-C:44] Good Name=Disney's Tarzan (G) Internal Name=TARZAN Status=Compatible Plugin Note=[video] missing:items; use 1.5.2 plugin -ViRefresh=1400 +AiCountPerBytes=530 +Audio Signal=Yes Counter Factor=1 +Fixed Audio=1 +Sync Audio=0 [CBFE69C7-F2C0AB2A-C:45] Good Name=Disney's Tarzan (U) Internal Name=TARZAN Status=Compatible Plugin Note=[video] missing:items; use 1.5.2 plugin -ViRefresh=1400 +AiCountPerBytes=530 +Audio Signal=Yes Counter Factor=1 +Fixed Audio=1 +Sync Audio=0 [3DF17480-193DED5A-C:50] Good Name=Donald Duck - Quack Attack (E) (M5) Internal Name=Donald Duck Quack At Status=Compatible -Clear Frame=0 Counter Factor=3 RDRAM Size=8 @@ -1762,14 +1466,11 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) 32bit=No -Clear Frame=0 +AiCountPerBytes=625 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 [053C89A7-A5064302-C:4A] Good Name=Donkey Kong 64 (J) @@ -1778,6 +1479,9 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) 32bit=No +AiCountPerBytes=625 +Counter Factor=1 +Dsound-SyncAudio=1 RDRAM Size=8 Save Type=16kbit Eeprom @@ -1789,13 +1493,13 @@ Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) 32bit=No AiCountPerBytes=625 -Clear Frame=0 +Counter Factor=1 Culling=1 +Dsound-SyncAudio=1 Emulate Clear=1 Primary Frame Buffer=1 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 [0DD4ABAB-B5A2A91E-C:45] Good Name=Donkey Kong 64 (U) (Kiosk Demo) @@ -1805,6 +1509,7 @@ Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) 32bit=No Counter Factor=1 +Dsound-SyncAudio=1 RDRAM Size=8 Save Type=16kbit Eeprom @@ -1814,7 +1519,6 @@ Internal Name=Doom64 Status=Compatible Plugin Note=[video] (see GameFAQ) 32bit=No -Clear Frame=0 [7AA65B36-FDCEE5AD-C:4A] Good Name=Doom 64 (J) @@ -1829,22 +1533,14 @@ Internal Name=Doom64 Status=Compatible Plugin Note=[video] (see GameFAQ) 32bit=No -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [423E96F4-CE88F05B-C:45] Good Name=Doom 64 (U) (V1.1) Internal Name=Doom64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [BFF7B1C2-AEBF148E-C:4A] Good Name=Doraemon - Nobita to 3tsu no Seireiseki (J) @@ -1856,18 +1552,13 @@ Plugin Note=[video] missing:text,character colour Good Name=Doraemon 2 - Nobita to Hikari no Shinden (J) Internal Name=ÄÞ×´ÓÃ2 ˶ØɼÃÃÞà Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Save Type=16kbit Eeprom -Self Texture=0 [A8275140-B9B056E8-C:4A] Good Name=Doraemon 3 - Nobita no Machi SOS! (J) Internal Name=ÄÞ×´ÓÃ3 ÉËÞÀÉÃÃSOS! -Status=Only intro/part OK -Core Note=hangs after intro +Status=Compatible Save Type=16kbit Eeprom [BD8E206D-98C35E1C-C:4A] @@ -1875,30 +1566,25 @@ Good Name=Doubutsu no Mori (J) Internal Name=DOUBUTSUNOMORI Status=Compatible Plugin Note=[video] errors:pause menu -Clear Frame=0 [769D4D13-DA233FFE-C:45] Good Name=Dr. Mario 64 (U) Internal Name=DR.MARIO 64 Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 RDRAM Size=8 -Self Texture=0 [40DFEDA0-3AA09CB2-C:50] Good Name=Dragon Sword (E) (Unreleased Alpha) Internal Name=DragonStorm -Status=Issues (plugin) -Plugin Note=[video] text missing +Status=Compatible +Plugin Note=[video] text missing; use Glide64 [B6524461-ED6D04B1-C:50] Good Name=Dual Heroes (E) Internal Name=Dual heroes PAL Status=Compatible -Clear Frame=0 RDRAM Size=8 [056EAB63-C215FCD5-C:4A] @@ -1917,7 +1603,6 @@ RDRAM Size=8 Good Name=Duck Dodgers Starring Daffy Duck (U) (M3) Internal Name=LT DUCK DODGERS Status=Compatible -Clear Frame=0 Counter Factor=1 [DC36626A-3F3770CB-C:50] @@ -1935,7 +1620,6 @@ Internal Name=DUKE NUKEM ZERO HOUR Status=Compatible Cheat0=50000F04 0000,811D79F8 0000 //Neko's 1st level freeze fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Counter Factor=1 RDRAM Size=8 @@ -1953,25 +1637,19 @@ Good Name=Duke Nukem 64 (E) Internal Name=DUKE NUKEM Status=Compatible Plugin Note=[video] depth problem; use Glide64 -Clear Frame=0 [1E12883D-D3B92718-C:46] Good Name=Duke Nukem 64 (F) Internal Name=DUKE NUKEM Status=Compatible Plugin Note=[video] depth problem; use Glide64 -Clear Frame=0 [A273AB56-DA33DB9A-C:45] Good Name=Duke Nukem 64 (U) Internal Name=DUKE NUKEM Status=Compatible Plugin Note=[video] depth problem; use Glide64 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 //================ E ================ [492B9DE8-C6CCC81C-C:50] @@ -1979,18 +1657,13 @@ Good Name=Earthworm Jim 3D (E) (M6) Internal Name=EARTHWORM JIM 3D Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 [DF574191-9EB5123D-C:45] Good Name=Earthworm Jim 3D (U) Internal Name=EARTHWORM JIM 3D Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [8C38E5DB-B37C27D7-C:50] Good Name=ECW Hardcore Revolution (E) @@ -2009,7 +1682,6 @@ Good Name=Eikou no Saint Andrews (J) Internal Name=´²º³É¾ÃıÃÄÞØ­°½ Status=Issues (plugin) Plugin Note=[video] errors:sky,various (see GameFAQ) -Clear Frame=0 [F2A653CB-60633B3B-C:45] Good Name=Elmo's Letter Adventure (U) @@ -2053,7 +1725,6 @@ Internal Name=EXCITEBIKE64 Status=Compatible Core Note=high system requirement Plugin Note=[video] errors:various; use Glide64 -Clear Frame=0 Counter Factor=1 RDRAM Size=8 Save Type=16kbit Eeprom @@ -2063,7 +1734,6 @@ Good Name=Excitebike 64 (U) (V1.1) Internal Name=EXCITEBIKE64 Status=Compatible Core Note=high system requirement -Clear Frame=0 Counter Factor=1 RDRAM Size=8 Save Type=16kbit Eeprom @@ -2094,13 +1764,11 @@ Good Name=Extreme-G (U) Internal Name=extremeg Status=Compatible Plugin Note=[video] errors:HUD (minor) -Clear Frame=0 [1185EC85-4B5A7731-C:50] Good Name=Extreme-G XG2 (E) (M5) Internal Name=Extreme G 2 Status=Compatible -Clear Frame=0 Culling=1 [399B9B81-D533AD11-C:4A] @@ -2119,22 +1787,19 @@ Good Name=F-1 Pole Position 64 (E) (M3) Internal Name=F1 POLE POSITION 64 Status=Compatible Plugin Note=[video] errors:menus; use Glide64 -Clear Frame=1 32bit=No AiCountPerBytes=300 +Clear Frame=1 [AE82687A-9A3F388D-C:45] Good Name=F-1 Pole Position 64 (U) (M3) Internal Name=F1 POLE POSITION 64 Status=Compatible Plugin Note=[video] errors:menus; use Glide64 -Clear Frame=1 32bit=No AiCountPerBytes=300 +Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [C006E3C0-A67B4BBB-C:50] Good Name=F-1 World Grand Prix (E) @@ -2190,11 +1855,7 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) 32bit=No -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [B30ED978-3003C9F9-C:45] Good Name=F-ZERO X (U) @@ -2205,33 +1866,22 @@ Plugin Note=[video] (see GameFAQ) 32bit=No Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [3CECBCB8-6126BF07-C:50] Good Name=F1 Racing Championship (E) (M5) Internal Name=F1RacingChampionship Status=Compatible Plugin Note=[video] errors:resolution issues -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [53CCAD28-AEA6EDA2-C:45] Good Name=F1 Racing Championship (U) Internal Name=F1RacingChampionship Status=Issues (plugin) Plugin Note=[video] errors:resolution issues -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [6DFF4C37-B1B763FD-C:4A] Good Name=Famista 64 (J) @@ -2255,7 +1905,6 @@ Status=Compatible Core Note=high system requirement Plugin Note=[video] errors:pitch; use Glide64 32bit=No -Clear Frame=0 [F5733C67-17A3973A-C:4A] Good Name=FIFA - Road to World Cup 98 - World Cup heno Michi (J) @@ -2342,7 +1991,6 @@ Good Name=Flying Dragon (E) Internal Name=FLYING DRAGON Status=Compatible Plugin Note=[video] errors:various (minor) -Clear Frame=0 Counter Factor=1 [A92D52E5-1D26B655-C:45] @@ -2350,12 +1998,8 @@ Good Name=Flying Dragon (U) Internal Name=FLYING DRAGON Status=Compatible Plugin Note=[video] errors:various (minor) -Clear Frame=0 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [142A17AA-13028D96-C:50] Good Name=Forsaken 64 (E) (M4) @@ -2379,11 +2023,7 @@ Core Note=timing (see GameFAQ) Good Name=Fox Sports College Hoops '99 (U) Internal Name=Fox Sports Hoops 99 Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [F774EAEE-F0D8B13E-C:4A] Good Name=Fushigi no Dungeon - Fuurai no Shiren 2 - Oni Shuurai! Shiren Jou! (J) @@ -2391,11 +2031,10 @@ Internal Name=F3 ̳ײɼÚÃ2 Status=Uncertain Core Note=? Plugin Note=[video] (see GameFAQ) +32bit=No Clear Frame=2 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Self Texture=1 //================ G ================ @@ -2403,12 +2042,8 @@ Self Texture=1 Good Name=G.A.S.P!! Fighters' NEXTream (E) Internal Name=G.A.S.P!!Fighters'NE Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [AF8679B6-5E1011BF-C:4A] Good Name=G.A.S.P!! Fighters' NEXTream (J) @@ -2420,19 +2055,14 @@ RDRAM Size=8 Good Name=Ganbare Goemon - Derodero Douchuu Obake Tenkomori (J) Internal Name=GOEMON2 DERODERO Status=Compatible -Clear Frame=0 [832C168B-56A2CDAE-C:4A] Good Name=Ganbare Goemon - Neo Momoyama Bakufu no Odori (J) Internal Name=GANBAKE GOEMON Status=Compatible Plugin Note=[video] slow in places; use 1.6 plugin -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [21FFFD0A-FA0D1D98-C:4A] Good Name=Ganbare! Nippon! Olympics 2000 (J) @@ -2450,8 +2080,10 @@ Internal Name=GAUNTLET LEGENDS Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] missing:various (see GameFAQ) +AiCountPerBytes=530 +Fixed Audio=1 RDRAM Size=8 -ViRefresh=1400 +Sync Audio=0 [70B0260E-6716D04C-C:4A] Good Name=Gauntlet Legends (J) @@ -2459,8 +2091,10 @@ Internal Name=GAUNTLET LEGENDS Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] missing:various (see GameFAQ) +AiCountPerBytes=530 +Fixed Audio=1 RDRAM Size=8 -ViRefresh=1400 +Sync Audio=0 [729B5E32-B728D980-C:45] Good Name=Gauntlet Legends (U) @@ -2468,13 +2102,11 @@ Internal Name=GAUNTLET LEGENDS Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] missing:various (see GameFAQ) -Clear Frame=0 +AiCountPerBytes=530 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 +Fixed Audio=1 RDRAM Size=8 -Self Texture=0 -ViRefresh=1400 +Sync Audio=0 [489C84E6-4C6E49F9-C:4A] Good Name=Getter Love!! - Cho Ren-ai Party Game (J) @@ -2511,37 +2143,24 @@ Good Name=Gex 64 - Enter the Gecko (U) Internal Name=GEX: ENTER THE GECKO Status=Compatible Plugin Note=[video] errors:water,misc. -Clear Frame=0 [F5237301-99E3EE93-C:50] Good Name=Glover (E) (M3) Internal Name=Glover Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [25414DCA-FD553293-C:0] Good Name=Glover (U) (Beta) Internal Name=whack 'n' roll Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [8E6E01FF-CCB4F948-C:45] Good Name=Glover (U) Internal Name=Glover Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [B7F40BCF-553556A5-C:45] Good Name=Glover 2 (U) (Beta) @@ -2559,6 +2178,7 @@ Plugin Note=[video] errors:textures Good Name=Goemon - Mononoke Sugoroku (J) Internal Name=ºÞ´ÓÃÓÉɹ½ºÞÛ¸ Status=Compatible +32bit=No [4252A5AD-AE6FBF4E-C:45] Good Name=Goemon's Great Adventure (U) @@ -2571,6 +2191,7 @@ AiCountPerBytes=50 Good Name=Golden Nugget 64 (U) Internal Name=GOLDEN NUGGET 64 Status=Compatible +Linking=Off [0414CA61-2E57B8AA-C:50] Good Name=GoldenEye 007 (E) @@ -2579,9 +2200,7 @@ Status=Compatible Core Note=high system requirement Plugin Note=[video] (see GameFAQ) 32bit=No -AiCountPerBytes=400 Clear Frame=2 -CustomSMM=1 FuncFind=2 SMM-Cache=0 SMM-FUNC=0 @@ -2595,9 +2214,7 @@ Status=Compatible Core Note=high system requirement Plugin Note=[video] (see GameFAQ) 32bit=No -AiCountPerBytes=400 Clear Frame=2 -CustomSMM=1 FuncFind=2 SMM-Cache=0 SMM-FUNC=0 @@ -2611,19 +2228,14 @@ Status=Compatible Core Note=high system requirement Plugin Note=[video] (see GameFAQ) 32bit=No -AiCountPerBytes=400 Clear Frame=2 Culling=1 -CustomSMM=1 -Emulate Clear=0 FuncFind=2 -Primary Frame Buffer=0 Rom In Memory=1 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-TLB=0 -Self Texture=0 TLB: PAddr Start=268651312 TLB: Vaddr Len=16777216 TLB: Vaddr Start=2130706432 @@ -2634,7 +2246,6 @@ Status=Compatible 32bit=No Clear Frame=2 Culling=1 -CustomSMM=1 FuncFind=2 RDRAM Size=8 SMM-Cache=0 @@ -2649,7 +2260,6 @@ Status=Compatible 32bit=No Clear Frame=2 Culling=1 -CustomSMM=1 FuncFind=2 RDRAM Size=8 SMM-Cache=0 @@ -2676,7 +2286,6 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:map,speedo AiCountPerBytes=200 -Clear Frame=0 Counter Factor=1 Delay SI=Yes RDRAM Size=8 @@ -2687,12 +2296,8 @@ Good Name=Hamster Monogatari 64 (J) Internal Name=ÊѽÀ°ÓɶÞÀØ64 Status=Compatible Plugin Note=[video] slow in places -Clear Frame=0 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [09AE57B1-182A5637-C:4A] Good Name=Harukanaru Augusta - Masters '98 (J) @@ -2725,19 +2330,14 @@ Good Name=Hercules - The Legendary Journeys (U) Internal Name=HERCULES Status=Compatible Core Note=high system requirement -Clear Frame=0 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [95B2B30B-2B6415C1-C:50] Good Name=Hexen (E) Internal Name=HEXEN Status=Compatible Plugin Note=[video] map flicker; use Glide64 -Clear Frame=0 Counter Factor=1 [5C1B5FBD-7E961634-C:46] @@ -2745,7 +2345,6 @@ Good Name=Hexen (F) Internal Name=HEXEN Status=Compatible Plugin Note=[video] map flicker; use Glide64 -Clear Frame=0 Counter Factor=1 [9AB3B50A-BC666105-C:44] @@ -2767,7 +2366,6 @@ Good Name=Hexen (U) Internal Name=HEXEN Status=Compatible Plugin Note=[video] map flicker; use Glide64 -Clear Frame=0 Counter Factor=1 [D3F10E5D-052EA579-C:45] @@ -2781,7 +2379,6 @@ Good Name=Hiryuu no Ken Twin (J) Internal Name=ËØ­³É¹à ²à Status=Region issue (plugin) Plugin Note=[video] tris;use (U/E) ROM "Flying Dragon" -Clear Frame=0 Counter Factor=1 [277B129D-DD3879FF-C:50] @@ -2805,44 +2402,28 @@ Plugin Note=[video] (see GameFAQ) [C1D702BD-6D416547-C:4A] Good Name=Hoshi no Kirby 64 (J) (V1.0) Internal Name=Kirby64 -Status=Issues (core) -Core Note=(see GameFAQ) -Plugin Note=[video] (see GameFAQ) +Status=Compatible +Plugin Note=[video] missing graphics; use Glide64 [CA1BB86F-41CCA5C5-C:4A] Good Name=Hoshi no Kirby 64 (J) (V1.1) -Status=Issues (core) -Core Note=(see GameFAQ) -Plugin Note=[video] (see GameFAQ) -Clear Frame=0 +Status=Compatible +Plugin Note=[video] missing graphics; use Glide64 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [0C581C7A-3D6E20E4-C:4A] Good Name=Hoshi no Kirby 64 (J) (V1.2) Internal Name=Kirby64 -Status=Issues (core) -Core Note=(see GameFAQ) -Plugin Note=[video] (see GameFAQ) -Clear Frame=0 +Status=Compatible +Plugin Note=[video] missing graphics; use Glide64 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [BCB1F89F-060752A2-C:4A] Good Name=Hoshi no Kirby 64 (J) (V1.3) Internal Name=Kirby64 -Status=Issues (core) -Core Note=(see GameFAQ) -Plugin Note=[video] (see GameFAQ) -Clear Frame=0 +Status=Compatible +Plugin Note=[video] missing graphics; use Glide64 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [E7D20193-C1158E93-C:50] Good Name=Hot Wheels Turbo Racing (E) (M3) @@ -2853,11 +2434,7 @@ Status=Compatible Good Name=Hot Wheels Turbo Racing (U) Internal Name=HOT WHEELS TURBO Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [72611D7D-9919BDD2-C:58] Good Name=HSV Adventure Racing (A) @@ -2872,13 +2449,10 @@ Good Name=Human Grand Prix - New Generation (J) Internal Name=HUMAN GRAND PRIX Status=Compatible Plugin Note=[video] errors:menus; use Glide64 -Clear Frame=1 32bit=No AiCountPerBytes=300 +Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [641D3A7F-86820466-C:50] Good Name=Hybrid Heaven (E) (M3) @@ -2909,23 +2483,33 @@ Good Name=Hydro Thunder (E) Internal Name=Hydro Thunder Status=Compatible Plugin Note=[video] (see GameFAQ) -Audio Signal=Yes +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 +RDRAM Size=8 +Sync Audio=0 [29A045CE-ABA9060E-C:46] Good Name=Hydro Thunder (F) Internal Name=Hydro Thunder Status=Compatible Plugin Note=[video] (see GameFAQ) -Audio Signal=Yes +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 +RDRAM Size=8 +Sync Audio=0 [C8DC65EB-3D8C8904-C:45] Good Name=Hydro Thunder (U) Internal Name=HYDRO THUNDER Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=800 -Audio Signal=Yes +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 RDRAM Size=8 +Sync Audio=0 [2FC5C34C-7A05CC9D-C:4A] Good Name=Hyper Olympics in Nagano 64 (J) @@ -2967,52 +2551,54 @@ Status=Compatible Plugin Note=[video] errors:HUD; use Glide64 Counter Factor=1 - [3A6F8C6B-2897BAEB-C:50] Good Name=Indiana Jones and the Infernal Machine (E) (Unreleased) Internal Name=Indiana Jones -Status=Only intro/part OK -Core Note=unstable (see GameFAQ) -Plugin Note=[rsp] interpreter only [video] errors:various (see GameFAQ) +Status=Issues (mixed) +Core Note=Recompiler Trading Post freeze. +Plugin Note=[rsp] interpreter only 32bit=No -RDRAM Size=8 -FuncFind=2 +AiCountPerBytes=650 +Counter Factor=1 +Fast SP=No +Fixed Audio=1 HLE GFX=No -ViRefresh=1400 +Linking=Off +RDRAM Size=8 RSP-JumpTableSize=3584 -SMM-Cache=1 SMM-FUNC=0 SMM-PI DMA=0 -SMM-Protect=1 SMM-TLB=0 Sync Audio=0 -Fixed Audio=1 -CPU Type=Interpreter +ViRefresh=1800 [AF9DCC15-1A723D88-C:45] Good Name=Indiana Jones and the Infernal Machine (U) Internal Name=Indiana Jones -Status=Only intro/part OK -Core Note=unstable (see GameFAQ) -Plugin Note=[rsp] interpreter only [video] errors:various (see GameFAQ) +Status=Issues (mixed) +Core Note=Recompiler Trading Post freeze. +Plugin Note=[rsp] interpreter only [audio] wrong speed;use(E)ROM 32bit=No -FuncFind=2 +AiCountPerBytes=740 +Counter Factor=1 +Fast SP=No +Fixed Audio=1 HLE GFX=No -ViRefresh=1400 +Linking=Off +RDRAM Size=8 RSP-JumpTableSize=3584 -SMM-Cache=1 SMM-FUNC=0 SMM-PI DMA=0 -SMM-Protect=1 SMM-TLB=0 Sync Audio=0 -Fixed Audio=1 -CPU Type=Interpreter +ViRefresh=2050 [E436467A-82DE8F9B-C:45] Good Name=Indy Racing 2000 (U) Internal Name=INDY RACING 2000 Status=Compatible +Core Note=high system requirement +Fixed Audio=1 RDRAM Size=8 [F41B6343-C10661E6-C:50] @@ -3026,25 +2612,26 @@ Good Name=International Superstar Soccer '98 (U) Internal Name=I.S.S.98 Status=Compatible AiCountPerBytes=200 -Clear Frame=0 [336364A0-06C8D5BF-C:58] Good Name=International Superstar Soccer 2000 (E) (M2) (Eng-Ger) Internal Name=I.S.S.2000 Status=Compatible -Clear Frame=0 +32bit=No RDRAM Size=8 [BAE8E871-35FF944E-C:59] Good Name=International Superstar Soccer 2000 (E) (M2) (Fre-Ita) Internal Name=I.S.S.2000 Status=Compatible +32bit=No RDRAM Size=8 [8E835437-CD5748B4-C:45] Good Name=International Superstar Soccer 2000 (U) (M2) Internal Name=I.S.S.2000 Status=Compatible +32bit=No RDRAM Size=8 [E2D37CF0-F57E4EAE-C:50] @@ -3061,12 +2648,8 @@ Internal Name=I S S 64 Status=Compatible Plugin Note=[video] errors:shadows; use Glide64 AiCountPerBytes=200 -Clear Frame=0 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [20073BC7-5E3B0111-C:45] Good Name=International Track & Field 2000 (U) @@ -3137,15 +2720,13 @@ Status=Compatible [21F7ABFB-6A8AA7E8-C:50] Good Name=Jeremy McGrath Supercross 2000 (E) Internal Name=Jeremy McGrath Super -Status=Issues (plugin) -Plugin Note=[video] missing:menu selector (see GameFAQ) +Status=Compatible RDRAM Size=8 [BB30B1A5-FCF712CE-C:45] Good Name=Jeremy McGrath Supercross 2000 (U) Internal Name=Jeremy McGrath Super -Status=Issues (plugin) -Plugin Note=[video] missing:menu selector (see GameFAQ) +Status=Compatible RDRAM Size=8 [68D7A1DE-0079834A-C:50] @@ -3154,16 +2735,13 @@ Internal Name=JET FORCE GEMINI Status=Compatible Plugin Note=[video] (see GameFAQ) 32bit=No -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-Protect=1 SMM-TLB=0 -Self Texture=0 [8A6009B6-94ACE150-C:45] Good Name=Jet Force Gemini (U) @@ -3171,16 +2749,13 @@ Internal Name=JET FORCE GEMINI Status=Compatible Plugin Note=[video] (see GameFAQ) 32bit=No -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-Protect=1 SMM-TLB=0 -Self Texture=0 [DFD8AB47-3CDBEB89-C:45] Good Name=Jet Force Gemini (U) (Kiosk Demo) @@ -3208,18 +2783,21 @@ Counter Factor=1 Good Name=Jikkyou J.League 1999 - Perfect Striker 2 (J) (V1.0) Internal Name=PERFECT STRIKER2 Status=Compatible +32bit=No +RDRAM Size=8 [6309FC17-1D4F5EF3-C:4A] Good Name=Jikkyou J.League 1999 - Perfect Striker 2 (J) (V1.1) Internal Name=PERFECT STRIKER2 Status=Compatible +32bit=No +RDRAM Size=8 [146C4366-72A6DEB3-C:4A] Good Name=Jikkyou J.League Perfect Striker (J) Internal Name=PERFECT STRIKER Status=Issues (plugin) Plugin Note=[video] errors:field, shadows, various -Clear Frame=0 [0AC244D1-1F0EC605-C:4A] Good Name=Jikkyou Powerful Pro Yakyuu 2000 (J) (V1.0) @@ -3305,7 +2883,6 @@ Good Name=Jikkyou World Soccer 3 (J) Internal Name=J WORLD SOCCER3 Status=Issues (plugin) Plugin Note=[video] errors:shadows,menus -Clear Frame=0 Counter Factor=1 [916AE6B8-8817AB22-C:4A] @@ -3327,6 +2904,7 @@ Internal Name=DAIKATANA Status=Compatible Clear Frame=2 Linking=Off +RDRAM Size=8 [9D7E3C4B-E60F4A6C-C:4A] Good Name=John Romero's Daikatana (J) @@ -3341,10 +2919,8 @@ Internal Name=DAIKATANA Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 Linking=Off +RDRAM Size=8 //================ K ================ [4F29474F-30CB707A-C:4A] @@ -3357,38 +2933,39 @@ Plugin Note=[video] errors:menus; use 1.5.2 plugin Good Name=Ken Griffey Jr.'s Slugfest (U) Internal Name=KEN GRIFFEY SLUGFEST Status=Compatible +RDRAM Size=8 [979B263E-F8470004-C:50] Good Name=Killer Instinct Gold (E) Internal Name=Killer Instinct Gold Status=Compatible Plugin Note=[video] errors:sky; use Glide64 -Clear Frame=2 32bit=No +Clear Frame=2 [9E8FE2BA-8B270770-C:45] Good Name=Killer Instinct Gold (U) (V1.0) Internal Name=KILLER INSTINCT GOLD Status=Compatible Plugin Note=[video] errors:sky; use Glide64 -Clear Frame=2 32bit=No +Clear Frame=2 [9E8FCDFA-49F5652B-C:45] Good Name=Killer Instinct Gold (U) (V1.1) Internal Name=KILLER INSTINCT GOLD Status=Compatible Plugin Note=[video] errors:sky; use Glide64 -Clear Frame=2 32bit=No +Clear Frame=2 [F908CA4C-36464327-C:45] Good Name=Killer Instinct Gold (U) (V1.2) Internal Name=Killer Instinct Gold Status=Compatible Plugin Note=[video] errors:sky; use Glide64 -Clear Frame=2 32bit=No +Clear Frame=2 [519EA4E1-EB7584E8-C:4A] Good Name=King Hill 64 - Extreme Snowboarding (J) @@ -3406,24 +2983,17 @@ Status=Compatible [0D93BA11-683868A6-C:50] Good Name=Kirby 64 - The Crystal Shards (E) Internal Name=Kirby64 -Status=Issues (core) -Core Note=(see GameFAQ) -Plugin Note=[video] (see GameFAQ) -Clear Frame=0 +Status=Compatible +Plugin Note=[video] missing graphics; use Glide64 [46039FB4-0337822C-C:45] Good Name=Kirby 64 - The Crystal Shards (U) Internal Name=Kirby64 -Status=Issues (core) -Core Note=(see GameFAQ) -Plugin Note=[video] (see GameFAQ) +Status=Compatible +Plugin Note=[video] missing graphics; use Glide64 AiCountPerBytes=200 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 -Sync Audio=No +Sync Audio=0 [4A997C74-E2087F99-C:50] Good Name=Knife Edge - Nose Gunner (E) @@ -3439,25 +3009,19 @@ Status=Compatible Good Name=Knife Edge - Nose Gunner (U) Internal Name=KNIFE EDGE Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [E3D6A795-2A1C5D3C-C:50] Good Name=Knockout Kings 2000 (E) Internal Name=Knockout Kings 2000 Status=Compatible Core Note=unstable? (see GameFAQ) -Clear Frame=0 [0894909C-DAD4D82D-C:45] Good Name=Knockout Kings 2000 (U) Internal Name=Knockout Kings 2000 Status=Compatible Core Note=unstable? (see GameFAQ) -Clear Frame=0 Culling=1 [1739EFBA-D0B43A68-C:50] @@ -3471,13 +3035,9 @@ Save Type=16kbit Eeprom Good Name=Kobe Bryant's NBA Courtside (U) Internal Name=NBA COURTSIDE Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 //================ L ================ [7F304099-52CF5276-C:4A] @@ -3486,8 +3046,8 @@ Internal Name=LASTLEGION UX Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] HLE not supported; flicker -RDRAM Size=8 HLE GFX=No +RDRAM Size=8 [F478D8B3-9716DD6D-C:50] Good Name=LEGO Racers (E) (M10) @@ -3499,14 +3059,12 @@ Counter Factor=3 Good Name=LEGO Racers (U) (M10) Internal Name=LEGORacers Status=Compatible -Clear Frame=0 Counter Factor=3 [2B696CB4-7B93DCD8-C:46] Good Name=Les Razmoket - La Chasse Aux Tresors (F) Internal Name=RUGRATSTREASUREHUNT Status=Compatible -Clear Frame=0 [3D67C62B-31D03150-C:4A] Good Name=Let's Smash (J) @@ -3519,7 +3077,6 @@ Internal Name=Lode Runner 3D Status=Compatible Plugin Note=[video] missing:menu highlight; use Glide64 ViRefresh=1450 -Clear Frame=0 [964ADD0B-B29213DB-C:4A] Good Name=Lode Runner 3-D (J) @@ -3527,7 +3084,6 @@ Internal Name=Lode Runner 3D Status=Compatible Plugin Note=[video] missing:menu highlight; use Glide64 ViRefresh=1400 -Clear Frame=0 [255018DF-57D6AE3A-C:45] Good Name=Lode Runner 3-D (U) @@ -3535,7 +3091,6 @@ Internal Name=Lode Runner 3D Status=Compatible Plugin Note=[video] missing:menu highlight; use Glide64 ViRefresh=1400 -Clear Frame=0 [0AA0055B-7637DF65-C:50] Good Name=Looney Tunes - Duck Dodgers (E) (M6) @@ -3547,7 +3102,6 @@ RDRAM Size=8 Good Name=Lylat Wars (A) (M3) Internal Name=STARFOX64 Status=Compatible -Clear Frame=0 Culling=1 [F4CBE92C-B392ED12-C:50] @@ -3582,18 +3136,21 @@ Internal Name=Madden NFL 2000 Status=Compatible Plugin Note=[video] errors:field; use Glide64 Counter Factor=1 +RDRAM Size=8 [EB38F792-190EA246-C:45] Good Name=Madden NFL 2001 (U) Internal Name=Madden NFL 2001 Status=Compatible Counter Factor=1 +RDRAM Size=8 [D7134F8D-C11A00B5-C:45] Good Name=Madden NFL 2002 (U) Internal Name=Madden NFL 2002 Status=Compatible Counter Factor=1 +RDRAM Size=8 Save Type=16kbit Eeprom [3925D625-8C83C75E-C:50] @@ -3667,10 +3224,7 @@ Good Name=Mario Golf (E) Internal Name=MarioGolf64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Self Texture=1 [664BA3D4-678A80B7-C:45] @@ -3678,10 +3232,7 @@ Good Name=Mario Golf (U) Internal Name=MarioGolf64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Self Texture=1 [D48944D1-B0D93A0E-C:4A] @@ -3689,10 +3240,7 @@ Good Name=Mario Golf 64 (J) (V1.0) Internal Name=MarioGolf64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Self Texture=1 [734F816B-C6A6EB67-C:4A] @@ -3700,10 +3248,7 @@ Good Name=Mario Golf 64 (J) (V1.1) Internal Name=MarioGolf64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Self Texture=1 [C3B6DE9D-65D2DE76-C:50] @@ -3711,69 +3256,53 @@ Good Name=Mario Kart 64 (E) (V1.0) Internal Name=MARIOKART64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [2577C7D4-D18FAAAE-C:50] Good Name=Mario Kart 64 (E) (V1.1) Internal Name=MARIOKART64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [6BFF4758-E5FF5D5E-C:4A] Good Name=Mario Kart 64 (J) (V1.0) Internal Name=MARIOKART64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [C9C3A987-5810344C-C:4A] Good Name=Mario Kart 64 (J) (V1.1) Internal Name=MARIOKART64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [3E5055B6-2E92DA52-C:45] Good Name=Mario Kart 64 (U) Internal Name=MARIOKART64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [9A9890AC-F0C313DF-C:4A] Good Name=Mario no Photopi (J) Internal Name=ÃصÉÌ«ÄËß° -Status=Needs RSP plugin -Core Note=(see GameFAQ) -Plugin Note=[rsp] no video +Status=Needs video plugin +Plugin Note=[video] HLE not supported; major errors +HLE GFX=No [9C663069-80F24A80-C:50] Good Name=Mario Party (E) (M3) Internal Name=MarioParty Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 [ADA815BE-6028622F-C:4A] @@ -3781,7 +3310,6 @@ Good Name=Mario Party (J) Internal Name=MarioParty Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 [2829657E-A0621877-C:45] @@ -3789,7 +3317,6 @@ Good Name=Mario Party (U) Internal Name=MarioParty Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 [82380387-DFC744D9-C:50] @@ -3797,7 +3324,6 @@ Good Name=Mario Party 2 (E) (M5) Internal Name=MarioParty2 Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 [ED567D0F-38B08915-C:4A] @@ -3805,7 +3331,6 @@ Good Name=Mario Party 2 (J) Internal Name=MarioParty2 Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 [9EA95858-AF72B618-C:45] @@ -3813,7 +3338,6 @@ Good Name=Mario Party 2 (U) Internal Name=MarioParty2 Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 [C5674160-0F5F453C-C:50] @@ -3821,7 +3345,6 @@ Good Name=Mario Party 3 (E) (M4) Internal Name=MarioParty3 Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 Save Type=16kbit Eeprom @@ -3830,7 +3353,6 @@ Good Name=Mario Party 3 (J) Internal Name=MarioParty3 Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 Save Type=16kbit Eeprom @@ -3839,7 +3361,6 @@ Good Name=Mario Party 3 (U) Internal Name=MarioParty3 Status=Compatible Plugin Note=[video] (see GameFAQ) -AiCountPerBytes=400 Counter Factor=1 Save Type=16kbit Eeprom @@ -3852,9 +3373,6 @@ Plugin Note=[video] errors:menus (see GameFAQ) Clear Frame=1 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [839F3AD5-406D15FA-C:50] Good Name=Mario Tennis (E) @@ -3862,13 +3380,9 @@ Internal Name=MarioTennis Status=Issues (plugin) Plugin Note=[video] errors:various (see GameFAQ) 32bit=No -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 [5001CF4F-F30CB3BD-C:45] Good Name=Mario Tennis (U) @@ -3876,13 +3390,9 @@ Internal Name=MarioTennis Status=Issues (plugin) Plugin Note=[video] errors:various (see GameFAQ) 32bit=No -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 [3A6C42B5-1ACADA1B-C:4A] Good Name=Mario Tennis 64 (J) @@ -3903,16 +3413,16 @@ Good Name=Mia Hamm Soccer 64 (U) (M2) Internal Name=Mia Hamm Soccer 64 Status=Compatible Plugin Note=[video] unsupported; use Glide64 -RDRAM Size=8 AiCountPerBytes=250 +RDRAM Size=8 [E36166C2-8613A2E5-C:58] Good Name=Michael Owens WLS 2000 (E) Internal Name=MO WORLD LEAGUE SOCC Status=Compatible Plugin Note=[video] unsupported; use Glide64 -RDRAM Size=8 AiCountPerBytes=250 +RDRAM Size=8 [736AE6AF-4117E9C7-C:4A] Good Name=Mickey no Racing Challenge USA (J) @@ -3947,12 +3457,8 @@ Good Name=Micro Machines 64 Turbo (U) Internal Name=MICROMACHINES64TURBO Status=Compatible Plugin Note=[video] errors:menus; use 1.5.2 plugin -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [E4B35E4C-1AC45CC9-C:45] Good Name=Midway's Greatest Arcade Hits Volume 1 (U) @@ -3966,11 +3472,7 @@ Good Name=Mike Piazza's Strike Zone (U) Internal Name=PIAZZA STRIKEZONE Status=Compatible Plugin Note=[video] errors:various -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [9A490D9D-8F013ADC-C:50] Good Name=Milo's Astro Lanes (E) @@ -3989,7 +3491,6 @@ Good Name=Mischief Makers (E) Internal Name=MISCHIEF MAKERS Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 [0B93051B-603D81F9-C:45] Good Name=Mischief Makers (U) (V1.0) @@ -4013,13 +3514,11 @@ Good Name=Mission Impossible (F) Internal Name=MISSION IMPOSSIBLE Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 [93EB3F7E-81675E44-C:44] Good Name=Mission Impossible (G) Internal Name=MISSION IMPOSSIBLE Status=Compatible -Clear Frame=0 [EBA949DC-39BAECBD-C:49] Good Name=Mission Impossible (I) @@ -4041,12 +3540,8 @@ Good Name=Monaco Grand Prix (U) Internal Name=Monaco Grand Prix Status=Compatible Plugin Note=[video] errors:resolution issues -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [28705FA5-B509690E-C:50] Good Name=Monaco Grand Prix - Racing Simulation 2 (E) (M4) @@ -4055,16 +3550,12 @@ Status=Compatible Plugin Note=[video] errors:resolution issues Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [5AC383E1-D712E387-C:45] Good Name=Monopoly (U) (M2) Internal Name=monopoly Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Counter Factor=1 [D3D806FC-B43AA2A8-C:50] @@ -4075,9 +3566,6 @@ Plugin Note=[video] errors:menus; use 1.5.2 plugin Clear Frame=2 Counter Factor=3 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [B19AD999-7E585118-C:45] Good Name=Monster Truck Madness 64 (U) @@ -4087,9 +3575,6 @@ Plugin Note=[video] errors:menus; use 1.5.2 plugin Clear Frame=2 Counter Factor=3 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [E8E8DD70-415DD198-C:4A] Good Name=Morita Shougi 64 (J) @@ -4100,11 +3585,7 @@ Status=Compatible Good Name=Mortal Kombat 4 (E) Internal Name=MORTAL KOMBAT 4 Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [417DD4F4-1B482FE2-C:45] Good Name=Mortal Kombat 4 (U) @@ -4165,7 +3646,7 @@ Internal Name=MS. PAC-MAN MM Status=Compatible Core Note=crash in credits? Plugin Note=[video] (see GameFAQ) -Sync Audio=No +Sync Audio=0 [7F9345D3-841ECADE-C:50] Good Name=Mystical Ninja 2 Starring Goemon (E) (M3) @@ -4213,11 +3694,7 @@ CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 Good Name=Namco Museum 64 (U) Internal Name=NAMCOMUSEUM64 Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [DF331A18-5FD4E044-C:45] Good Name=NASCAR 2000 (U) @@ -4226,9 +3703,6 @@ Status=Issues (plugin) Plugin Note=[video] splitscreen problem; use software rendering Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [AE4992C9-9253B253-C:50] Good Name=NASCAR 99 (E) (M3) @@ -4249,7 +3723,6 @@ Good Name=NBA Courtside 2 - Featuring Kobe Bryant (U) Internal Name=NBA Courtside 2 Status=Compatible Plugin Note=[video] errors:title resolution -Clear Frame=0 Culling=1 Save Type=FlashRam @@ -4330,7 +3803,6 @@ Status=Compatible Good Name=NBA Live 2000 (U) (M4) Internal Name=NBA LIVE 2000 Status=Compatible -Clear Frame=0 Culling=1 [CF84F45F-00E4F6EB-C:50] @@ -4357,9 +3829,13 @@ Status=Compatible Good Name=NBA Showtime - NBA on NBC (U) Internal Name=NBA SHOWTIME Status=Compatible +AiCountPerBytes=180 Audio Signal=Yes Counter Factor=1 +Fixed Audio=1 Save Type=FlashRam +Sync Audio=0 +ViRefresh=500 [147E0EDB-36C5B12C-C:4A] Good Name=Neon Genesis Evangelion (J) @@ -4367,10 +3843,7 @@ Internal Name=EVANGELION Status=Compatible Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 Save Type=16kbit Eeprom -Self Texture=0 [D094B170-D7C4B5CC-C:45] Good Name=NFL Blitz (U) @@ -4435,7 +3908,6 @@ RDRAM Size=8 Good Name=NFL Quarterback Club 99 (U) Internal Name=NFL QBC '99 Status=Compatible -Clear Frame=0 RDRAM Size=8 [287D601E-ABF4F8AE-C:50] @@ -4459,22 +3931,14 @@ Good Name=NHL Breakaway 98 (E) Internal Name=NHL_BREAKAWAY_98 Status=Compatible Plugin Note=[video] res detection; use 1.5.2 plugin -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [6DFDCDC3-4DE701C8-C:45] Good Name=NHL Breakaway 98 (U) Internal Name=NHL_BREAKAWAY_98 Status=Compatible Plugin Note=[video] res detection; use 1.5.2 plugin -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [874621CB-0031C127-C:50] Good Name=NHL Breakaway 99 (E) @@ -4499,9 +3963,8 @@ Internal Name=NIGHTMARE CREATURES Status=Compatible Core Note=(see GameFAQ) AiCountPerBytes=200 -Clear Frame=0 -Counter Factor=1 Delay SI=Yes +ViRefresh=2200 [CD3C3CDF-317793FA-C:4A] Good Name=Nintama Rantarou 64 Game Gallery (J) @@ -4514,11 +3977,8 @@ Counter Factor=1 Good Name=Nintendo All-Star! Dairantou Smash Brothers (J) Internal Name=SMASH BROTHERS Status=Compatible -CustomSMM=1 SMM-Cache=0 SMM-FUNC=0 -SMM-PI DMA=1 -SMM-Protect=0 SMM-TLB=0 ViRefresh=2200 @@ -4551,9 +4011,6 @@ Plugin Note=[video] errors:character select, in house Clear Frame=1 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [C5F1DE79-5D4BEB6E-C:4A] Good Name=Nushi Duri 64 (J) (V1.1) @@ -4563,16 +4020,11 @@ Plugin Note=[video] errors:character select, in house Clear Frame=1 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [5B9B1618-1B43C649-C:4A] Good Name=Nushi Duri 64 - Shiokaze ni Notte (J) Internal Name=ǼÂÞØ64¼µ¶¾ÞÆɯà -Status=Needs video plugin -Plugin Note=[video] unsupported/missing graphics -Counter Factor=1 +Status=Unsupported //================ O ================ [812289D0-C2E53296-C:50] @@ -4586,7 +4038,6 @@ Good Name=Off Road Challenge (U) Internal Name=OFFROAD Status=Issues (plugin) Plugin Note=[video] multiplayer flicker; use software rendering -Clear Frame=0 [0375CF67-56A93FAA-C:4A] Good Name=Ogre Battle 64 - Person of Lordly Caliber (J) (V1.1) @@ -4651,9 +4102,6 @@ Plugin Note=[video] errors:menus (see GameFAQ) Clear Frame=1 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [65EEE53A-ED7D733C-C:45] Good Name=Paper Mario (U) @@ -4664,9 +4112,6 @@ Plugin Note=[video] errors:menus (see GameFAQ) Clear Frame=1 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [AC976B38-C3A9C97A-C:50] Good Name=Paperboy (E) @@ -4683,7 +4128,6 @@ Good Name=Parlor! Pro 64 - Pachinko Jikki Simulation Game (J) Internal Name=Parlor PRO 64 Status=Needs video plugin Plugin Note=[video] errors:textures -Clear Frame=0 Save Type=16kbit Eeprom [F468118C-E32EE44E-C:4A] @@ -4696,11 +4140,7 @@ Save Type=16kbit Eeprom Good Name=Penny Racers (E) Internal Name=PENNY RACERS Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [73ABB1FB-9CCA6093-C:45] Good Name=Penny Racers (U) @@ -4715,8 +4155,6 @@ Core Note=high system requirement; timing (see GameFAQ) Plugin Note=[video] errors:various (see GameFAQ) 32bit=No Clear Frame=2 -CustomSMM=1 -FuncFind=1 RDRAM Size=8 SMM-Cache=0 SMM-FUNC=0 @@ -4733,8 +4171,6 @@ Core Note=high system requirement; timing (see GameFAQ) Plugin Note=[video] errors:various (see GameFAQ) 32bit=No Clear Frame=2 -CustomSMM=1 -FuncFind=1 RDRAM Size=8 SMM-Cache=0 SMM-FUNC=0 @@ -4752,17 +4188,13 @@ Plugin Note=[video] errors:various (see GameFAQ) 32bit=No Clear Frame=2 Culling=1 -CustomSMM=1 -Emulate Clear=0 FuncFind=2 -Primary Frame Buffer=0 RDRAM Size=8 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 SMM-TLB=0 Save Type=16kbit Eeprom -Self Texture=0 [41F2B98F-B458B466-C:45] Good Name=Perfect Dark (U) (V1.1) @@ -4773,7 +4205,6 @@ Plugin Note=[video] errors:various (see GameFAQ) 32bit=No Clear Frame=2 Culling=1 -CustomSMM=1 FuncFind=2 RDRAM Size=8 SMM-Cache=0 @@ -4807,7 +4238,6 @@ Status=Compatible Plugin Note=[video] (see GameFAQ) Cheat0=D0264361 0012,80264361 00FF,D0264BE1 0012,80264BE1 00FF,D0264DA1 0012,80264DA1 00FF,D02647E1 0012,802647E1 00FF,D02646A1 0012,802646A1 00FF,D0264661 0012,80264661 00FF,D02649A1 0012,802649A1 00FF,D0264BA1 0012,80264BA1 00FF,D0264AA1 0012,80264AA1 00FF,D02641E1 0020,802641E1 00FF,D02648E1 0020,802648E1 00FF,D0264D61 0020,80264D61 00FF,D0264A21 0020,80264A21 00FF,D02645A1 0020,802645A1 00FF,D02647A1 0020,802647A1 00FF,D02642A1 0029,802642A1 00FF,D0264921 0029,80264921 00FF,D0264621 0029,80264621 00FF,D0264A21 0029,80264A21 00FF,D0264C61 0029,80264C61 00FF,D02647A1 0029,802647A1 00FF,D0264FE1 0029,80264FE1 00FF,D0265161 0029,80265161 00FF,D0264AA1 0029,80264AA1 00FF,D02641E1 003D,802641E1 00FF,D02649E1 003D,802649E1 00FF,D0264561 003D,80264561 00FF,D02646E1 003D,802646E1 00FF,D0264721 003D,80264721 00FF //Land Shadow Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Counter Factor=3 [09CC4801-E42EE491-C:4A] @@ -4826,18 +4256,13 @@ Status=Compatible Plugin Note=[video] (see GameFAQ) Cheat0=D0263B41 0012,80263B41 00FF,D02643C1 0012,802643C1 00FF,D0264581 0012,80264581 00FF,D0263FC1 0012,80263FC1 00FF,D0263E81 0012,80263E81 00FF,D0263E41 0012,80263E41 00FF,D0264181 0012,80264181 00FF,D0264381 0012,80264381 00FF,D0264281 0012,80264281 00FF,D02639C1 0020,802639C1 00FF,D02640C1 0020,802640C1 00FF,D0264541 0020,80264541 00FF,D0264201 0020,80264201 00FF,D0263D81 0020,80263D81 00FF,D0263F81 0020,80263F81 00FF,D0263A81 0029,80263A81 00FF,D0264101 0029,80264101 00FF,D0263E01 0029,80263E01 00FF,D0264201 0029,80264201 00FF,D0264441 0029,80264441 00FF,D0263F81 0029,80263F81 00FF,D02647C1 0029,802647C1 00FF,D0264941 0029,80264941 00FF,D0264281 0029,80264281 00FF,D02639C1 003D,802639C1 00FF,D02641C1 003D,802641C1 00FF,D0263D41 003D,80263D41 00FF,D0263EC1 003D,80263EC1 00FF,D0263F01 003D,80263F01 00FF //Land Shadow Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Counter Factor=3 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [4A1CD153-D830AEF8-C:50] Good Name=Pokemon Puzzle League (E) Internal Name=PUZZLE LEAGUE N64 Status=Compatible -Clear Frame=0 [3EB2E6F3-062F9EFE-C:46] Good Name=Pokemon Puzzle League (F) @@ -4871,7 +4296,6 @@ Cheat0=D1381BFC 802C,80381BEF 0000 //Pass 1st Level and Controller Fix Cheat1=D11E3824 2881,811E3824 2001,D11E3826 0098,811E3826 0001 //Make Picture selectable CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 [BA6C293A-9FAFA338-C:46] Good Name=Pokemon Snap (F) @@ -4950,72 +4374,54 @@ Good Name=Pokemon Stadium (E) (V1.0) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [91C9E05D-AD3AAFB9-C:50] Good Name=Pokemon Stadium (E) (V1.1) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [A23553A3-42BF2D39-C:46] Good Name=Pokemon Stadium (F) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [42011E1B-E3552DB5-C:44] Good Name=Pokemon Stadium (G) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [A53FA82D-DAE2C15D-C:49] Good Name=Pokemon Stadium (I) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [665E8259-D098BD1D-C:4A] Good Name=Pokemon Stadium (J) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 Save Type=Sram [B6E549CE-DC8134C0-C:53] @@ -5023,144 +4429,108 @@ Good Name=Pokemon Stadium (S) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [90F5D9B3-9D0EDCF0-C:45] Good Name=Pokemon Stadium (U) (V1.0) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [1A122D43-C17DAF0F-C:45] Good Name=Pokemon Stadium - Kiosk (U) (V1.1) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [9C8FB2FA-9B84A09B-C:45] Good Name=Pokemon Stadium (U) (V1.2) Internal Name=POKEMON STADIUM Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [2952369C-B6E4C3A8-C:50] Good Name=Pokemon Stadium 2 (E) Internal Name=POKEMON STADIUM 2 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [AC5AA5C7-A9B0CDC3-C:46] Good Name=Pokemon Stadium 2 (F) Internal Name=POKEMON STADIUM 2 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [439B7E7E-C1A1495D-C:44] Good Name=Pokemon Stadium 2 (G) Internal Name=POKEMON STADIUM 2 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [EFCEAF00-22094848-C:49] Good Name=Pokemon Stadium 2 (I) Internal Name=POKEMON STADIUM 2 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [63775886-5FB80E7B-C:4A] Good Name=Pokemon Stadium 2 (J) Internal Name=POKEMON STADIUM 2 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [D0A1FC5B-2FB8074B-C:53] Good Name=Pokemon Stadium 2 (S) Internal Name=POKEMON STADIUM 2 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [03571182-892FD06D-C:45] Good Name=Pokemon Stadium 2 (U) Internal Name=POKEMON STADIUM 2 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [EE4FD7C2-9CF1D938-C:4A] Good Name=Pokemon Stadium Kin Gin (J) Internal Name=POKEMON STADIUM G&S Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 Linking=Off -Primary Frame Buffer=0 -Self Texture=0 [41380792-A167E045-C:45] Good Name=Polaris SnoCross (U) @@ -5172,7 +4542,6 @@ Plugin Note=[video] errors:various Good Name=Power League 64 (J) Internal Name=PowerLeague64 Status=Compatible -Clear Frame=0 [39F60C11-AB2EBA7D-C:50] Good Name=Power Rangers - Lightspeed Rescue (E) @@ -5239,18 +4608,13 @@ Good Name=Quake 64 (E) Internal Name=Quake Status=Compatible Plugin Note=[video] depth problem, flicker; use Glide64 (see GameFAQ) -Clear Frame=0 [9F5BF79C-D2FE08A0-C:45] Good Name=Quake 64 (U) Internal Name=Quake Status=Compatible Plugin Note=[video] depth problem, flicker; use Glide64 (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [F4D89C08-3F34930D-C:0] Good Name=Quake 64 Intro (PD) @@ -5261,8 +4625,7 @@ Status=Compatible Good Name=Quake II (E) Internal Name=QUAKE II Status=Compatible -Plugin Note=[video] depth problem, flicker; use Glide64 (see GameFAQ) -Clear Frame=0 +Plugin Note=[video] Glide64 Underwater Depth issues. Counter Factor=1 RDRAM Size=8 @@ -5270,21 +4633,16 @@ RDRAM Size=8 Good Name=Quake II (U) Internal Name=QUAKE II Status=Compatible -Plugin Note=[video] depth problem, flicker; use Glide64 (see GameFAQ) -Clear Frame=0 +Plugin Note=[video] Glide64 Underwater Depth issues. Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [C8BB4DD9-CC5F430B-C:45] Good Name=Quest 64 (U) Internal Name=Quest 64 Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 //================ R ================ [2877AC2D-C3DC139A-C:44] @@ -5292,11 +4650,7 @@ Good Name=Racing Simulation 2 (G) Internal Name=Racing Simulation 2 Status=Compatible Plugin Note=[video] errors:resolution issues -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [67D21868-C5424061-C:50] Good Name=Rakuga Kids (E) @@ -5323,19 +4677,12 @@ Status=Compatible Plugin Note=[video] errors:various (see GameFAQ) Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [84D44448-67CA19B0-C:50] Good Name=Rampage - World Tour (E) Internal Name=RAMPAGE Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [C29FF9E4-264BFE7D-C:45] Good Name=Rampage - World Tour (U) @@ -5380,7 +4727,6 @@ Good Name=Rayman 2 - The Great Escape (U) (M5) Internal Name=Rayman 2 Status=Compatible Plugin Note=[video] errors:lum colour (see GameFAQ) -Clear Frame=0 Culling=1 RDRAM Size=8 @@ -5397,7 +4743,11 @@ Internal Name=Re-Volt Status=Compatible Plugin Note=[video] slow in options menu RDRAM Size=8 -ViRefresh=1400 +ViRefresh=1500 +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 +Sync Audio=0 [0F1FA987-BFC1AFA6-C:45] Good Name=Re-Volt (U) @@ -5405,7 +4755,11 @@ Internal Name=Re-Volt Status=Compatible Plugin Note=[video] slow in options menu RDRAM Size=8 -ViRefresh=1400 +ViRefresh=1500 +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 +Sync Audio=0 [8BD4A334-1E138B05-C:50] Good Name=Ready 2 Rumble Boxing (E) (M3) @@ -5429,50 +4783,41 @@ Good Name=Resident Evil 2 (E) (M2) Internal Name=Resident Evil II Status=Compatible Core Note=(see GameFAQ) -Plugin Note=[video] depth problem (use Glide64) +Plugin Note=[video] depth problem (use Glide64 and RDRAM Size=4 in main RDB, otherwise Glide64 will not render all the background in some scenes) 32bit=No -AiCountPerBytes=800 -Audio Signal=Yes -Clear Frame=0 +AiCountPerBytes=530 Counter Factor=1 -RDRAM Size=8 +Fixed Audio=1 +Linking=Off +Sync Audio=0 [2F493DD0-2E64DFD9-C:45] Good Name=Resident Evil 2 (U) (V1.0) Internal Name=Resident Evil II Status=Compatible Core Note=(see GameFAQ) -Plugin Note=[video] depth problem (use Glide64) +Plugin Note=[video] depth problem (use Glide64 and RDRAM Size=4 in main RDB, otherwise Glide64 will not render all the background in some scenes) 32bit=No -AiCountPerBytes=800 -Audio Signal=Yes -Clear Frame=0 +AiCountPerBytes=530 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -RDRAM Size=8 -Resolution Height=239 -Resolution Width=319 -Self Texture=0 -RDRAM Size=8 +Fixed Audio=1 +Linking=Off +Sync Audio=0 [AA18B1A5-07DB6AEB-C:45] Good Name=Resident Evil 2 (U) (V1.1) Internal Name=Resident Evil II Status=Compatible Core Note=(see GameFAQ) -Plugin Note=[video] depth problem (use Glide64) +Plugin Note=[video] depth problem (use Glide64 and RDRAM Size=4 in main RDB, otherwise Glide64 will not render all the background in some scenes) 32bit=No -AiCountPerBytes=800 -Audio Signal=Yes -Clear Frame=0 +AiCountPerBytes=530 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 -RDRAM Size=8 +Fixed Audio=1 +Linking=Off +Sync Audio=0 [02D8366A-6CABEF9C-C:50] Good Name=Road Rash 64 (E) @@ -5495,11 +4840,7 @@ Internal Name=ROADSTERS TROPHY Status=Compatible Core Note=high system requirement Plugin Note=[video] missing:mirror; use Glide64 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [0B6B4DDB-9671E682-C:45] Good Name=Roadsters Trophy (U) (M3) @@ -5507,8 +4848,8 @@ Internal Name=ROADSTERS TROPHY Status=Compatible Core Note=high system requirement Plugin Note=[video] missing:mirror; use Glide64 -Clear Frame=0 Counter Factor=1 +RDRAM Size=8 [272B690F-AD0A7A77-C:4A] Good Name=Robot Ponkottsu 64 - 7tsu no Umi no Caramel (J) @@ -5534,9 +4875,6 @@ Internal Name=ROCKETROBOTONWHEELS Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [0C5EE085-A167DD3E-C:45] Good Name=Rocket - Robot on Wheels (U) @@ -5544,9 +4882,6 @@ Internal Name=ROCKETROBOTONWHEELS Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [D666593B-D7A25C07-C:4A] Good Name=Rockman Dash - Hagane no Boukenshin (J) @@ -5570,14 +4905,13 @@ Good Name=RTL World League Soccer 2000 (G) Internal Name=RTL WLS2000 Status=Compatible Plugin Note=[video] unsupported; use Glide64 -RDRAM Size=8 AiCountPerBytes=250 +RDRAM Size=8 [451ACA0F-7863BC8A-C:44] Good Name=Rugrats - Die grosse Schatzsuche (G) Internal Name=RUGRATSTREASUREHUNT Status=Compatible -Clear Frame=0 [0C02B3C5-9E2511B8-C:45] Good Name=Rugrats - Scavenger Hunt (U) @@ -5588,19 +4922,24 @@ Status=Compatible Good Name=Rugrats - Treasure Hunt (E) Internal Name=RUGRATSTREASUREHUNT Status=Compatible -Clear Frame=0 [0AC61D39-ABFA03A6-C:50] Good Name=Rugrats in Paris - The Movie (E) Internal Name=RUGRATS IN PARIS Status=Compatible -AiCountPerBytes=400 +Audio Signal=Yes +Fixed Audio=1 +Sync Audio=0 +ViRefresh=2200 [1FC21532-0B6466D4-C:45] Good Name=Rugrats in Paris - The Movie (U) Internal Name=RUGRATS IN PARIS Status=Compatible -AiCountPerBytes=400 +Audio Signal=Yes +Fixed Audio=1 +Sync Audio=0 +ViRefresh=2200 [B7CF2136-FA0AA715-C:50] Good Name=Rush 2 - Extreme Racing USA (E) (M6) @@ -5633,65 +4972,63 @@ Internal Name=»²·®³ÊÌÞ¼®³·Þ Status=Compatible Core Note=high system requirement Plugin Note=[video] HLE not supported -RDRAM Size=8 -HLE GFX=No AiCountPerBytes=200 +HLE GFX=No +RDRAM Size=8 [61D116B0-FA24D60C-C:50] Good Name=San Francisco Rush - Extreme Racing (E) (M3) Internal Name=S.F.RUSH Status=Compatible Plugin Note=[video] missing:car selection (see GameFAQ) -Clear Frame=0 [2A6B1820-6ABCF466-C:45] Good Name=San Francisco Rush - Extreme Racing (U) (V1.0) Internal Name=S.F. RUSH Status=Compatible Plugin Note=[video] missing:car selection (see GameFAQ) -Clear Frame=0 [AC9F7DA7-A8C029D8-C:45] Good Name=San Francisco Rush - Extreme Racing (U) (V1.1) Internal Name=S.F. RUSH Status=Compatible Plugin Note=[video] missing:car selection (see GameFAQ) -Clear Frame=0 [51D29418-D5B46AE3-C:50] Good Name=San Francisco Rush 2049 (E) (M6) Internal Name=RUSH 2049 Status=Compatible -ViRefresh=1450 +AiCountPerBytes=530 Counter Factor=1 +Fixed Audio=1 RDRAM Size=8 +Sync Audio=0 [B9A9ECA2-17AAE48E-C:45] Good Name=San Francisco Rush 2049 (U) Internal Name=Rush 2049 Status=Compatible -ViRefresh=1400 -Clear Frame=0 +AiCountPerBytes=530 Counter Factor=1 +Counter Factor=1 +Fixed Audio=1 RDRAM Size=8 +Sync Audio=0 [E3BD221D-3C0834D3-C:50] Good Name=Scooby-Doo - Classic Creep Capers (E) Internal Name=SCOOBY-DOO Status=Compatible -Clear Frame=0 [0C814EC4-58FE5CA8-C:45] Good Name=Scooby-Doo - Classic Creep Capers (U) (V1.0) Internal Name=SCOOBY-DOO Status=Compatible -Clear Frame=0 [569433AD-F7E13561-C:45] Good Name=Scooby-Doo - Classic Creep Capers (U) (V1.1) Internal Name=SCOOBY-DOO Status=Compatible -Clear Frame=0 [EBF5F6B7-C956D739-C:4A] Good Name=SD Hiryuu no Ken Densetsu (J) @@ -5758,7 +5095,6 @@ Status=Compatible Good Name=Shadowgate 64 - Trials Of The Four Towers (U) (M2) Internal Name=SHADOWGATE64 Status=Compatible -Clear Frame=0 [EF703CA4-4D4A9AC9-C:4A] Good Name=Shin Nihon Pro Wrestling Toukon Road - Brave Spirits (J) @@ -5766,8 +5102,8 @@ Internal Name=TOUKON ROAD Status=Uncertain Core Note=input problem? Plugin Note=[video] HLE not supported -RDRAM Size=8 HLE GFX=No +RDRAM Size=8 [551C7F43-9149831C-C:4A] Good Name=Shin Nihon Pro Wrestling Toukon Road 2 - The Next Generation (J) @@ -5775,8 +5111,8 @@ Internal Name=TOUKON ROAD2 Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] HLE not supported; flicker -RDRAM Size=8 HLE GFX=No +RDRAM Size=8 [B1D5280C-4BA7BC2A-C:4A] Good Name=Sim City 2000 (J) @@ -5792,9 +5128,7 @@ Plugin Note=[video] errors:static in cutscenes Clear Frame=2 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [84FC04FF-B1253CE9-C:4A] Good Name=Snobow Kids (J) @@ -5802,9 +5136,6 @@ Internal Name=½ÉÎÞ·¯½Þ Status=Compatible Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [2EF4D519-C64A0C5E-C:4A] Good Name=Snow Speeder (J) @@ -5818,9 +5149,6 @@ Internal Name=SNOWBOARD KIDS Status=Compatible Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [DBF4EA9D-333E82C0-C:45] Good Name=Snowboard Kids (U) @@ -5828,9 +5156,6 @@ Internal Name=SNOWBOARD KIDS Status=Compatible Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [C2751D1A-F8C19BFF-C:50] Good Name=Snowboard Kids 2 (E) @@ -5856,6 +5181,7 @@ Status=Compatible Good Name=South Park (E) (M3) Internal Name=South Park Status=Compatible +RDRAM Size=8 [91B66D42-16AC4E46-C:44] Good Name=South Park (G) @@ -5866,6 +5192,7 @@ Status=Compatible Good Name=South Park (U) Internal Name=South Park Status=Compatible +RDRAM Size=8 [C00CA948-8E60D34B-C:50] Good Name=South Park - Chef's Luv Shack (E) @@ -5885,18 +5212,12 @@ RDRAM Size=8 Good Name=South Park Rally (E) Internal Name=South Park Rally Status=Compatible -AiCountPerBytes=400 [07F3B276-EC8F3D39-C:45] Good Name=South Park Rally (U) Internal Name=South Park Rally Status=Compatible -AiCountPerBytes=400 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [37463412-EAC5388D-C:4A] Good Name=Space Dynamites (J) @@ -5916,34 +5237,26 @@ Good Name=Space Station Silicon Valley (E) (M7) Internal Name=Silicon Valley Status=Compatible Plugin Note=[video] errors:cutscenes -Clear Frame=0 -Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -RDRAM Size=8 AiCountPerBytes=200 -Self Texture=0 +Culling=1 +RDRAM Size=8 [BFE23884-EF48EAAF-C:4A] Good Name=Space Station Silicon Valley (J) Internal Name=Silicon Valley Status=Compatible Plugin Note=[video] errors:cutscenes -RDRAM Size=8 AiCountPerBytes=200 +RDRAM Size=8 [BFE23884-EF48EAAF-C:45] Good Name=Space Station Silicon Valley (U) Internal Name=Silicon Valley Status=Compatible Plugin Note=[video] errors:cutscenes -Clear Frame=0 -Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -RDRAM Size=8 AiCountPerBytes=200 -Self Texture=0 +Culling=1 +RDRAM Size=8 [A60ED171-3D85D06E-C:45] Good Name=Spider-Man (U) @@ -5952,10 +5265,7 @@ Status=Compatible Plugin Note=[video] (see GameFAQ) Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [FFCAA7C1-68858537-C:4A] Good Name=Star Fox 64 (J) (V1.0) @@ -5992,11 +5302,8 @@ Good Name=Star Twins (J) Internal Name=STAR TWINS Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 -Self Texture=0 [7EE0E8BB-49E411AA-C:50] Good Name=Star Wars - Rogue Squadron (E) (M3) (V1.0) @@ -6004,9 +5311,14 @@ Internal Name=Rogue Squadron Status=Broken (plugin) Core Note=high system requirement Plugin Note=[rsp] interpreter only, flicker [video] (see GameFAQ) -RDRAM Size=8 32bit=No +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 HLE GFX=No +RDRAM Size=8 +RSP-JumpTableSize=3584 +Sync Audio=0 [219191C1-33183C61-C:50] Good Name=Star Wars - Rogue Squadron (E) (M3) (V1.1) @@ -6014,9 +5326,14 @@ Internal Name=Rogue Squadron Status=Broken (plugin) Core Note=high system requirement Plugin Note=[rsp] interpreter only, flicker [video] (see GameFAQ) -RDRAM Size=8 32bit=No +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 HLE GFX=No +RDRAM Size=8 +RSP-JumpTableSize=3584 +Sync Audio=0 [66A24BEC-2EADD94F-C:45] Good Name=Star Wars - Rogue Squadron (U) (V1.0) @@ -6024,11 +5341,14 @@ Internal Name=Rogue Squadron Status=Broken (plugin) Core Note=high system requirement Plugin Note=[rsp] interpreter only, flicker [video] (see GameFAQ) -RDRAM Size=8 32bit=No +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 HLE GFX=No -ViRefresh=1400 +RDRAM Size=8 RSP-JumpTableSize=3584 +Sync Audio=0 [C7F30CFA-ECB0FA36-C:45] Good Name=Star Wars - Rogue Squadron (U) (V1.1) @@ -6036,18 +5356,20 @@ Internal Name=Rogue Squadron Status=Broken (plugin) Core Note=high system requirement Plugin Note=[rsp] interpreter only, flicker [video] (see GameFAQ) -RDRAM Size=8 32bit=No +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 HLE GFX=No -ViRefresh=1400 +RDRAM Size=8 RSP-JumpTableSize=3584 +Sync Audio=0 [4D486681-AB7D9245-C:50] Good Name=Star Wars - Shadows of the Empire (E) Internal Name=Shadow of the Empire Status=Compatible Plugin Note=[video] flicker; use Glide64 -Clear Frame=0 RDRAM Size=8 [264D7E5C-18874622-C:45] @@ -6057,10 +5379,7 @@ Status=Compatible Plugin Note=[video] flicker; use Glide64 Clear Frame=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [4147B091-63251060-C:45] Good Name=Star Wars - Shadows of the Empire (U) (V1.1) @@ -6084,9 +5403,9 @@ Internal Name=rogue squadron Status=Broken (plugin) Core Note=high system requirement Plugin Note=[rsp] interpreter only, flicker [video] (see GameFAQ) -RDRAM Size=8 32bit=No HLE GFX=No +RDRAM Size=8 ViRefresh=1400 [FE24AC63-1B41AA17-C:4A] @@ -6104,9 +5423,13 @@ Status=Only intro/part OK Core Note=(see GameFAQ) Plugin Note=[rsp] interpreter only [video] errors:various (see GameFAQ) 32bit=No +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 HLE GFX=No -ViRefresh=1400 RDRAM Size=8 +SMM-FUNC=0 +Sync Audio=0 [3D02989B-D4A381E2-C:45] Good Name=Star Wars Episode I - Battle for Naboo (U) @@ -6115,45 +5438,43 @@ Status=Only intro/part OK Core Note=(see GameFAQ) Plugin Note=[rsp] interpreter only [video] errors:various (see GameFAQ) 32bit=No +AiCountPerBytes=530 +Counter Factor=1 +Fixed Audio=1 HLE GFX=No -ViRefresh=1400 RDRAM Size=8 +SMM-FUNC=0 +Sync Audio=0 [53ED2DC4-06258002-C:50] Good Name=Star Wars Episode I - Racer (E) (M3) Internal Name=STAR WARS EP1 RACER Status=Compatible -Clear Frame=0 +Counter Factor=1 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 [61F5B152-046122AB-C:4A] Good Name=Star Wars Episode I - Racer (J) Internal Name=STAR WARS EP1 RACER Status=Compatible -Clear Frame=0 +Counter Factor=1 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 [72F70398-6556A98B-C:45] Good Name=Star Wars Episode I - Racer (U) Internal Name=STAR WARS EP1 RACER Status=Compatible -Clear Frame=0 +Counter Factor=1 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Save Type=16kbit Eeprom -Self Texture=0 [42CF5EA3-9A1334DF-C:50] Good Name=StarCraft 64 (E) @@ -6161,10 +5482,7 @@ Internal Name=STARCRAFT 64 Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [FD6907F0-83CBC160-C:44] Good Name=StarCraft 64 (G) (Beta) @@ -6172,10 +5490,7 @@ Internal Name=STARCRAFT 64 Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [BC9B2CC3-4ED04DA5-C:37] Good Name=StarCraft 64 (U) (Beta) @@ -6183,10 +5498,7 @@ Internal Name=Ã2ÙÂE8y)±tUÂ…y7àÕ]¹9 Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [0684FBFB-5D3EA8A5-C:45] Good Name=StarCraft 64 (U) @@ -6194,10 +5506,7 @@ Internal Name=STARCRAFT 64 Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [D89E0E55-B17AA99A-C:50] Good Name=Starshot - Space Circus Fever (E) (M3) @@ -6214,7 +5523,7 @@ Good Name=Stunt Racer 64 (U) Internal Name=Stunt Racer 64 Status=Issues (plugin) Core Note=high system requirement -Plugin Note=[video] errors:various [rsp] slow (see GameFAQ) +Plugin Note=[video] errors:various [audio] bad 32bit=No HLE GFX=No RDRAM Size=8 @@ -6242,7 +5551,6 @@ Good Name=Super Mario 64 (E) (M3) Internal Name=SUPER MARIO 64 Status=Compatible Plugin Note=[video] missing:dissolve effect; use Glide64 (see GameFAQ) -Clear Frame=0 [4EAA3D0E-74757C24-C:4A] Good Name=Super Mario 64 (J) @@ -6255,11 +5563,7 @@ Good Name=Super Mario 64 (U) Internal Name=SUPER MARIO 64 Status=Compatible Plugin Note=[video] missing:dissolve effect; use Glide64 (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [D6FBA4A8-6326AA2C-C:4A] Good Name=Super Mario 64 - Shindou Edition (J) @@ -6272,11 +5576,7 @@ Good Name=Super Robot Spirits (J) Internal Name=SUPERROBOTSPIRITS Status=Issues (plugin) Plugin Note=[video] missing:menus -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [1649D810-F73AD6D2-C:4A] Good Name=Super Robot Taisen 64 (J) @@ -6288,11 +5588,8 @@ Plugin Note=[video] too slow to play Good Name=Super Smash Bros. (A) Internal Name=SMASH BROTHERS Status=Compatible -CustomSMM=1 SMM-Cache=0 SMM-FUNC=0 -SMM-PI DMA=1 -SMM-Protect=0 SMM-TLB=0 ViRefresh=2200 @@ -6300,11 +5597,8 @@ ViRefresh=2200 Good Name=Super Smash Bros. (E) (M3) Internal Name=SMASH BROTHERS Status=Compatible -CustomSMM=1 SMM-Cache=0 SMM-FUNC=0 -SMM-PI DMA=1 -SMM-Protect=0 SMM-TLB=0 ViRefresh=2200 @@ -6312,17 +5606,10 @@ ViRefresh=2200 Good Name=Super Smash Bros. (U) Internal Name=SMASH BROTHERS Status=Compatible -Clear Frame=0 Culling=1 -CustomSMM=1 -Emulate Clear=0 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 -SMM-PI DMA=1 -SMM-Protect=0 SMM-TLB=0 -Self Texture=0 ViRefresh=2200 [9CE02E22-206EF1B0-C:4A] @@ -6335,16 +5622,16 @@ Good Name=Supercross 2000 (E) (M3) Internal Name=Supercross Status=Compatible Plugin Note=[video] errors:track; use Glide64 -RDRAM Size=8 32bit=No +RDRAM Size=8 [C1452553-5D7B24D9-C:45] Good Name=Supercross 2000 (U) Internal Name=Supercross Status=Compatible Plugin Note=[video] errors:track; use Glide64 -RDRAM Size=8 32bit=No +RDRAM Size=8 [B44CAB74-07029A29-C:50] Good Name=Superman (E) (M6) @@ -6359,7 +5646,7 @@ Status=Compatible Plugin Note=[video] missing:Titus logo [944FAFC4-B288266A-C:0] -Good Name=Superman 64 (prototype) +Good Name=Superman (Prototype) Status=Compatible [35E811F3-99792724-C:4A] @@ -6385,9 +5672,9 @@ Resolution Height=239 //================ T ================ [37955E65-C6F2B7B3-C:0] Good Name=Tamiya Racing 64 (Unreleased) -Internal Name= -Status=Issues (plugin) -Plugin Note=[video] errors:textures +Status=Compatible +Plugin Note=[video] ucode error; can use HLE GFX after loading ROM +HLE GFX=No [AEBCDD54-15FF834A-C:50] Good Name=Taz Express (E) (M6) @@ -6410,8 +5697,8 @@ Good Name=Telefoot Soccer 2000 (F) Internal Name=TELEFOOT SOCCER 2000 Status=Compatible Plugin Note=[video] unsupported; use Glide64 -RDRAM Size=8 AiCountPerBytes=250 +RDRAM Size=8 [963ADBA6-F7D5C89B-C:4A] Good Name=Tetris 64 (J) @@ -6427,7 +5714,6 @@ Status=Compatible Core Note=high system requirement Plugin Note=[video] slow in menus AiCountPerBytes=200 -Clear Frame=0 [3C1FDABE-02A4E0BA-C:45] Good Name=Tetrisphere (U) @@ -6436,7 +5722,6 @@ Status=Compatible Core Note=high system requirement Plugin Note=[video] slow in menus AiCountPerBytes=200 -Clear Frame=0 [F82DD377-8C3FB347-C:58] Good Name=TG Rally 2 (E) @@ -6445,7 +5730,6 @@ Status=Compatible Core Note=timing (see GameFAQ) Plugin Note=[video] errors:resolution; use 1.6 plugin Clear Frame=2 -Emulate Clear=0 [9FC385E5-3ECC05C7-C:50] Good Name=The Legend of Zelda - Majora's Mask (E) (M4) (Debug Version) @@ -6460,10 +5744,8 @@ Internal Name=ZELDA MAJORA'S MASK Status=Compatible Cote Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -6473,10 +5755,8 @@ Internal Name=ZELDA MAJORA'S MASK Status=Compatible Cote Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -6486,10 +5766,8 @@ Internal Name=ZELDA MAJORA'S MASK Status=Compatible Cote Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -6499,10 +5777,8 @@ Internal Name=ZELDA MAJORA'S MASK Status=Compatible Cote Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -6512,10 +5788,8 @@ Internal Name=ZELDA MAJORA'S MASK Status=Compatible Cote Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -6525,10 +5799,8 @@ Internal Name=MAJORA'S MASK Status=Compatible Cote Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -6542,12 +5814,8 @@ Cheat0=801D8F8B 0002 //Subscreen Delay Fix Cheat1=D109A8E4 0320,8109A8E4 0000,D109A8E6 F809,8109A8E6 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -6561,12 +5829,8 @@ Plugin Note=[video] (see GameFAQ) AiCountPerBytes=100 Cheat0=801D860B 0002 //Subscreen Delay Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -6580,12 +5844,8 @@ Plugin Note=[video] (see GameFAQ) AiCountPerBytes=100 Cheat0=801D864B 0002 //Subscreen Delay Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -6600,12 +5860,8 @@ Cheat0=801DB78B 0002 //Subscreen Delay Fix Cheat1=D109A814 0320,8109A814 0000,D109A816 F809,8109A816 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -6621,13 +5877,8 @@ AiCountPerBytes=100 Aspect Correction=1 Cheat0=801DA5CB 0002 //Subscreen Delay Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 -ClearvFrame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 @@ -6645,12 +5896,8 @@ Plugin Note=[video] (see GameFAQ) AiCountPerBytes=100 Cheat0=801DA78B 0002 //Subscreen Delay Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 @@ -6668,12 +5915,8 @@ Plugin Note=[video] (see GameFAQ) AiCountPerBytes=100 Cheat0=801DAE8B 0002 CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-Cache=0 SMM-FUNC=0 SMM-PI DMA=0 @@ -6691,10 +5934,8 @@ Cheat0=801D8F4B 0002 //Subscreen Delay Fix Cheat1=D109A8C4 0320,8109A8C4 0000,D109A8C6 F809,8109A8C6 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 Self Texture=1 [27A3831D-B505A533-C:45] @@ -6707,12 +5948,8 @@ Cheat0=801D8F4B 0002 //Subscreen Delay Fix Cheat1=D109A8C4 0320,8109A8C4 0000,D109A8C6 F809,8109A8C6 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -6727,12 +5964,8 @@ Cheat0=801D8F4B 0002 //Subscreen Delay Fix Cheat1=D109A8C4 0320,8109A8C4 0000,D109A8C6 F809,8109A8C6 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -6743,9 +5976,6 @@ Internal Name=THE LEGEND OF ZELDA Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:sun; -Clear Frame=0 -CustomSMM=1 -FuncFind=1 RDRAM Size=8 SMM-PI DMA=0 SMM-TLB=0 @@ -6760,12 +5990,8 @@ Cheat0=801DB74B 0002 //Subscreen Delay Fix Cheat1=D109A7F4 0320,8109A7F4 0000,D109A7F6 F809,8109A7F6 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -6781,7 +6007,6 @@ Good Name=The New Tetris (U) Internal Name=NEWTETRIS Status=Compatible AiCountPerBytes=200 -Clear Frame=0 [FC74D475-9A0278AB-C:45] Good Name=The Powerpuff Girls - Chemical X-traction (U) @@ -6845,7 +6070,6 @@ Good Name=Tonic Trouble (E) (M5) Internal Name=Tonic Trouble Status=Compatible Plugin Note=[video] errors:background -Clear Frame=0 [EF9E9714-C03B2C7D-C:45] Good Name=Tonic Trouble (U) (V1.1) @@ -6864,10 +6088,7 @@ Internal Name=TONY HAWK SKATEBOARD Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [204EC022-B119D185-C:45] Good Name=Tony Hawk's Pro Skater (U) (V1.0) @@ -6887,9 +6108,7 @@ Internal Name=THPS2 Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 +RDRAM Size=8 [99150E18-1266E6A5-C:45] Good Name=Tony Hawk's Pro Skater 2 (U) @@ -6897,10 +6116,7 @@ Internal Name=THPS2 Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [1A7F70B5-00B7B9FD-C:45] Good Name=Tony Hawk's Pro Skater 3 (U) @@ -6908,10 +6124,7 @@ Internal Name=THPS3 Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [9A746EBF-2802EA99-C:0] Good Name=Toon Panic (J) (Beta) @@ -6925,6 +6138,7 @@ Internal Name=Top Gear Hyper Bike Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] errors:textures (see GameFAQ) +RDRAM Size=8 [845B0269-57DE9502-C:4A] Good Name=Top Gear Hyper Bike (J) @@ -6939,7 +6153,13 @@ Internal Name=Top Gear Hyper Bike Status=Issues (plugin) Core Note=high system requirement Plugin Note=[video] errors:textures (see GameFAQ) -Clear Frame=0 +RDRAM Size=8 + +[75FBDE20-A3189B31-C:0] +Good Name=Top Gear Hyper Bike (Beta) +Status=Issues (plugin) +Core Note=high system requirement +Plugin Note=[video] errors:textures (see GameFAQ) [D09BA538-1C1A5489-C:50] Good Name=Top Gear Overdrive (E) @@ -6947,8 +6167,8 @@ Internal Name=Top Gear Overdrive Status=Compatible Plugin Note=[video] (see GameFAQ) Counter Factor=1 -RDRAM Size=8 Direct3D8-Direct3DPipe=1 +RDRAM Size=8 [0578F24F-9175BF17-C:4A] Good Name=Top Gear Overdrive (J) @@ -6956,8 +6176,8 @@ Internal Name=Top Gear Overdrive Status=Compatible Plugin Note=[video] (see GameFAQ) Counter Factor=1 -RDRAM Size=8 Direct3D8-Direct3DPipe=1 +RDRAM Size=8 [D741CD80-ACA9B912-C:45] Good Name=Top Gear Overdrive (U) @@ -6965,8 +6185,8 @@ Internal Name=Top Gear Overdrive Status=Compatible Plugin Note=[video] (see GameFAQ) Counter Factor=1 -RDRAM Size=8 Direct3D8-Direct3DPipe=1 +RDRAM Size=8 [7F43E701-536328D1-C:50] Good Name=Top Gear Rally (E) @@ -6975,7 +6195,8 @@ Status=Issues (mixed) Core Note=sound (see GameFAQ) Plugin Note=[video] errors:various; use Glide64 32bit=No -Sync Audio=No +Fixed Audio=1 +Sync Audio=0 [0E596247-753D4B8B-C:4A] Good Name=Top Gear Rally (J) @@ -6984,7 +6205,8 @@ Status=Issues (mixed) Core Note=sound (see GameFAQ) Plugin Note=[video] errors:various; use Glide64 32bit=No -Sync Audio=No +Fixed Audio=1 +Sync Audio=0 [62269B3D-FE11B1E8-C:45] Good Name=Top Gear Rally (U) @@ -6993,8 +6215,8 @@ Status=Issues (mixed) Core Note=sound (see GameFAQ) Plugin Note=[video] errors:various; use Glide64 32bit=No -Sync Audio=No -Clear Frame=0 +Fixed Audio=1 +Sync Audio=0 [BEBAB677-51B0B5E4-C:50] Good Name=Top Gear Rally 2 (E) @@ -7003,7 +6225,6 @@ Status=Compatible Core Note=timing (see GameFAQ) Plugin Note=[video] errors:resolution; use 1.6 plugin Clear Frame=2 -Emulate Clear=0 [CFEF2CD6-C9E973E6-C:4A] Good Name=Top Gear Rally 2 (J) @@ -7018,13 +6239,18 @@ Internal Name=TOP GEAR RALLY 2 Status=Compatible Core Note=timing (see GameFAQ) Plugin Note=[video] errors:resolution; use 1.6 plugin -Clear Frame=0 +RDRAM Size=8 + +[EFDF9140-A4168D6B-C:0] +Good Name=Top Gear Rally 2 (Beta) +Status=Compatible +Core Note=timing (see GameFAQ) +Plugin Note=[video] errors:resolution; use 1.6 plugin [CCEB3858-26952D97-C:50] Good Name=Toy Story 2 (E) Internal Name=Toy Story 2 Status=Compatible -Clear Frame=0 Counter Factor=1 [CB93DB97-7F5C63D5-C:46] @@ -7039,12 +6265,24 @@ Internal Name=Toy Story 2 Status=Compatible Counter Factor=1 +[BC4F2AB8-AA99E32E-C:44] +Good Name=Toy Story 2 (G) (V1.1) +Internal Name=Toy Story 2 +Status=Compatible +Counter Factor=1 + [A150743E-CF2522CD-C:45] Good Name=Toy Story 2 (U) Internal Name=Toy Story 2 Status=Compatible Counter Factor=1 +[C151AD61-280FFF22-C:45] +Good Name=Toy Story 2 (U) (V1.1) +Internal Name=Toy Story 2 +Status=Compatible +Counter Factor=1 + [91691C3D-F4AC5B4D-C:4A] Good Name=Transformers - Beast Wars Metals 64 (J) Internal Name=BEASTWARSMETALS64 @@ -7063,7 +6301,6 @@ Plugin Note=[video] slow; use Glide64 Good Name=Triple Play 2000 (U) Internal Name=TRIPLE PLAY 2000 Status=Compatible -Clear Frame=0 Counter Factor=1 [B6BC0FB0-E3812198-C:4A] @@ -7074,9 +6311,7 @@ Plugin Note=[video] errors:static in cutscenes Clear Frame=2 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [2F7009DD-FC3BAC53-C:50] Good Name=Turok - Dinosaur Hunter (E) (V1.0) @@ -7085,16 +6320,14 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) AiCountPerBytes=800 -Clear Frame=0 [2F700DCD-176CC5C9-C:50] -Good Name=Turok - Dinosaur Hunter (E) (V1.1)/(V1.2) +Good Name=Turok - Dinosaur Hunter (E) (V1.1) (V1.2) Internal Name=TUROK_DINOSAUR_HUNTE Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) AiCountPerBytes=800 -Clear Frame=0 [665FD963-B5CC6612-C:44] Good Name=Turok - Dinosaur Hunter (G) (V1.0) @@ -7103,16 +6336,14 @@ Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) AiCountPerBytes=800 -Clear Frame=0 [665FC793-6934A73B-C:44] -Good Name=Turok - Dinosaur Hunter (G) (V1.1)/(V1.2) +Good Name=Turok - Dinosaur Hunter (G) (V1.1) (V1.2) Internal Name=TUROK_DINOSAUR_HUNTE Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) AiCountPerBytes=800 -Clear Frame=0 [2F70F10D-5C4187FF-C:45] Good Name=Turok - Dinosaur Hunter (U) (V1.0) @@ -7123,7 +6354,7 @@ Plugin Note=[video] (see GameFAQ) AiCountPerBytes=800 [2F700DCD-176CC5C9-C:45] -Good Name=Turok - Dinosaur Hunter (U) (V1.1)/(V1.2) +Good Name=Turok - Dinosaur Hunter (U) (V1.1) (V1.2) Internal Name=TUROK_DINOSAUR_HUNTE Status=Compatible Core Note=(see GameFAQ) @@ -7135,7 +6366,6 @@ Good Name=Turok - Legenden des Verlorenen Landes (G) Internal Name=Turok: Rage Wars Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [1EA26214-E790900F-C:50] @@ -7143,7 +6373,6 @@ Good Name=Turok - Rage Wars (E) Internal Name=Turok: Rage Wars Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [B6BE20A5-FACAF66D-C:58] @@ -7151,7 +6380,6 @@ Good Name=Turok - Rage Wars (FI) Internal Name=Turok: Rage Wars Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [ADB9498B-DAF28F55-C:45] @@ -7159,7 +6387,6 @@ Good Name=Turok - Rage Wars (U) (V1.0) Internal Name=Turok: Rage Wars Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [2388984C-DA7B3CC5-C:45] @@ -7167,7 +6394,6 @@ Good Name=Turok - Rage Wars (U) (V1.1) Internal Name=Turok: Rage Wars Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [E8C95AFC-35D121DA-C:50] @@ -7175,7 +6401,6 @@ Good Name=Turok 2 - Seeds of Evil (E) (Kiosk Demo) Internal Name=Turok 2: Kiosk Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [E0B92B94-80E87CBD-C:50] @@ -7183,7 +6408,6 @@ Good Name=Turok 2 - Seeds of Evil (E) (M4) Internal Name=Turok 2: Seeds of Ev Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [2E0E7749-B8B49D59-C:58] @@ -7191,7 +6415,6 @@ Good Name=Turok 2 - Seeds of Evil (FIS) (M3) Internal Name=Turok 2: Seeds of Ev Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [FE05840B-9393320C-C:44] @@ -7199,7 +6422,6 @@ Good Name=Turok 2 - Seeds of Evil (G) Internal Name=Turok 2: Seeds of Ev Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [E8C95AFC-35D121DA-C:45] @@ -7214,7 +6436,6 @@ Good Name=Turok 2 - Seeds of Evil (U) (V1.0) Internal Name=Turok 2: Seeds of Ev Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [E0B92B94-B9A7E025-C:45] @@ -7222,7 +6443,6 @@ Good Name=Turok 2 - Seeds of Evil (U) (V1.1) Internal Name=Turok 2: Seeds of Ev Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [6A162FF2-2093704C-C:50] @@ -7230,7 +6450,6 @@ Good Name=Turok 3 - Shadow of Oblivion (E) Internal Name=Turok 3: Shadow of O Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [89A579F1-667E97EF-C:45] @@ -7238,7 +6457,6 @@ Good Name=Turok 3 - Shadow of Oblivion (U) Internal Name=Turok 3: Shadow of O Status=Compatible Core Note=(see GameFAQ) -Clear Frame=0 RDRAM Size=8 [D25C1211-13EEBF67-C:44] @@ -7262,12 +6480,8 @@ Internal Name=TWISTED EDGE Status=Issues (core) Core Note=no sound Plugin Note=[video] errors:menu snowflakes; -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 //================ U ================ [28D5562D-E4D5AE50-C:4A] @@ -7275,13 +6489,9 @@ Good Name=Ucchan Nanchan no Hono no Challenger - Denryuu Ira Ira Bou (J) Internal Name=ÃÞÃØ­³²×²×ÎÞ³ Status=Compatible Core Note=unstable? -Clear Frame=0 Counter Factor=1 Culling=1 Delay SI=Yes -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 //================ V ================ [636E6B19-E57DDC5F-C:50] @@ -7301,11 +6511,7 @@ Good Name=V-Rally Edition 99 (U) Internal Name=V-RALLY Status=Compatible Plugin Note=[video] errors:various; use Glide64 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [151F79F4-8EEDC8E5-C:50] Good Name=Vigilante 8 (E) @@ -7313,8 +6519,8 @@ Internal Name=VIGILANTE 8 Status=Issues (plugin) Plugin Note=[video] errors:various (see GameFAQ) Counter Factor=1 -RDRAM Size=8 Linking=Off +RDRAM Size=8 [E2BC82A2-591CD694-C:46] Good Name=Vigilante 8 (F) @@ -7322,32 +6528,27 @@ Internal Name=VIGILANTE 8 Status=Issues (plugin) Plugin Note=[video] errors:various (see GameFAQ) Counter Factor=1 -RDRAM Size=8 Linking=Off +RDRAM Size=8 [6EDA5178-D396FEC1-C:44] Good Name=Vigilante 8 (G) Internal Name=VIGILANTE 8 Status=Issues (plugin) Plugin Note=[video] errors:various (see GameFAQ) -Clear Frame=0 Counter Factor=1 -RDRAM Size=8 Linking=Off +RDRAM Size=8 [EA71056A-E4214847-C:45] Good Name=Vigilante 8 (U) Internal Name=VIGILANTE 8 Status=Issues (plugin) Plugin Note=[video] errors:various (see GameFAQ) -Clear Frame=0 Counter Factor=1 -RDRAM Size=8 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 Linking=Off +RDRAM Size=8 [DD10BC7E-F900B351-C:50] Good Name=Vigilante 8 - 2nd Offence (E) @@ -7355,8 +6556,8 @@ Internal Name=V8: SECOND OFFENSE Status=Issues (plugin) Plugin Note=[video] errors:menus, transparency Counter Factor=1 -RDRAM Size=8 Linking=Off +RDRAM Size=8 [F5C5866D-052713D9-C:45] Good Name=Vigilante 8 - 2nd Offense (U) @@ -7364,14 +6565,13 @@ Internal Name=V8: SECOND OFFENSE Status=Issues (plugin) Plugin Note=[video] errors:menus, transparency Counter Factor=1 -RDRAM Size=8 Linking=Off +RDRAM Size=8 [60006C98-2605A381-C:4A] Good Name=Violence Killer - Turok New Generation (J) Internal Name=VIOLENCEKILLER Status=Compatible -Clear Frame=0 RDRAM Size=8 [2FDAA221-A588A7CE-C:50] @@ -7414,44 +6614,32 @@ Good Name=Waialae Country Club - True Golf Classics (E) (M4) (V1.0) Internal Name=Waialae Country Club Status=Compatible Plugin Note=[video] framebuffer:shot (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [0C5057AD-046E126E-C:50] Good Name=Waialae Country Club - True Golf Classics (E) (M4) (V1.1) Internal Name=Waialae Country Club Status=Compatible Plugin Note=[video] framebuffer:shot (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [8066D58A-C3DECAC1-C:45] Good Name=Waialae Country Club - True Golf Classics (U) (V1.0) Internal Name=Waialae Country Club Status=Compatible Plugin Note=[video] framebuffer:shot (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [DD318CE2-B73798BA-C:45] Good Name=Waialae Country Club - True Golf Classics (U) (V1.1) Internal Name=Waialae Country Club Status=Compatible Plugin Note=[video] framebuffer:shot (see GameFAQ) -Clear Frame=0 Culling=1 -Emulate Clear=0 Primary Frame Buffer=1 -Self Texture=0 [D715CC70-271CF5D6-C:50] Good Name=War Gods (E) @@ -7473,7 +6661,6 @@ Counter Factor=1 Good Name=Wave Race 64 (E) (M2) Internal Name=WAVE RACE 64 Status=Compatible -Clear Frame=0 Culling=1 [5C9191D6-B30AC306-C:4A] @@ -7556,12 +6743,8 @@ RDRAM Size=8 Good Name=WCW Nitro (U) Internal Name=NITRO64 Status=Compatible -Clear Frame=0 Counter Factor=3 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [8BDBAF68-345B4B36-C:50] Good Name=WCW vs. nWo - World Tour (E) @@ -7605,7 +6788,6 @@ Counter Factor=1 Good Name=Wetrix (E) (M6) Internal Name=Wetrix Status=Compatible -Clear Frame=0 Counter Factor=3 RDRAM Size=8 @@ -7636,8 +6818,7 @@ Plugin Note=[video] (see GameFAQ) [A04237B9-68F62C72-C:0] Good Name=Wildwaters (Unreleased) -Internal Name= -Status=Uncertain +Status=Compatible RDRAM Size=8 [1FA056E0-A4B9946A-C:4A] @@ -7664,24 +6845,19 @@ Internal Name=Wipeout 64 Status=Region issue (core) Core Note=use (U) ROM (see GameFAQ) Plugin Note=[video] access violation; use Glide64 -Clear Frame=0 Counter Factor=1 -RDRAM Size=8 Direct3D8-Direct3DPipe=1 +RDRAM Size=8 [132D2732-C70E9118-C:45] Good Name=Wipeout 64 (U) Internal Name=Wipeout 64 Status=Compatible Plugin Note=[video] access violation; use Glide64 -Clear Frame=0 Counter Factor=1 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -RDRAM Size=8 -Self Texture=0 Direct3D8-Direct3DPipe=1 +RDRAM Size=8 [E43C9765-05B1C1BE-C:4A] Good Name=Wonder Project J2 - Corlo no Mori no Josette (J) @@ -7699,27 +6875,25 @@ Plugin Note=[video] errors:texture alignment [F9FC3090-FF014EC2-C:50] Good Name=World Cup 98 (E) (M8) Internal Name=World Cup 98 -Status=Broken (core) -Core Note=broken graphics on recomp; use older PJ64 +Status=Compatible Plugin Note=[video] errors:various; use Glide64 -CPU Type=Interpreter 32bit=No +Reg Cache=No [BD636D6A-5D1F54BA-C:45] Good Name=World Cup 98 (U) (M8) Internal Name=World Cup 98 -Status=Broken (core) -Core Note=broken graphics on recomp; use older PJ64 +Status=Compatible Plugin Note=[video] errors:various; use Glide64 -CPU Type=Interpreter 32bit=No +Reg Cache=No [AC062778-DFADFCB8-C:50] Good Name=World Driver Championship (E) (M5) Internal Name=WORLD DRIVER CHAMP Status=Issues (plugin) Core Note=high system requirement -Plugin Note=[video] errors:various [rsp] slow (see GameFAQ) +Plugin Note=[video] errors:various [audio] bad 32bit=No HLE GFX=No @@ -7728,7 +6902,7 @@ Good Name=World Driver Championship (U) Internal Name=WORLD DRIVER CHAMP Status=Issues (plugin) Core Note=high system requirement -Plugin Note=[video] errors:various [rsp] slow (see GameFAQ) +Plugin Note=[video] errors:various [audio] bad 32bit=No HLE GFX=No @@ -7776,7 +6950,6 @@ RDRAM Size=8 Good Name=WWF No Mercy (E) (V1.0) Internal Name=WWF No Mercy Status=Compatible -Clear Frame=0 [8CDB94C2-CB46C6F0-C:50] Good Name=WWF No Mercy (E) (V1.1) @@ -7787,21 +6960,13 @@ Status=Compatible Good Name=WWF No Mercy (U) (V1.0) Internal Name=WWF No Mercy Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [6C80F13B-427EDEAA-C:45] Good Name=WWF No Mercy (U) (V1.1) Internal Name=WWF No Mercy Status=Compatible -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 [C71353BE-AA09A6EE-C:50] Good Name=WWF WrestleMania 2000 (E) @@ -7823,7 +6988,6 @@ Status=Compatible Good Name=Xena Warrior Princess - Talisman of Fate (E) Internal Name=XENAWARRIORPRINCESS Status=Compatible -Clear Frame=0 Culling=1 [0553AE9D-EAD8E0C1-C:45] @@ -7832,9 +6996,7 @@ Internal Name=XENAWARRIORPRINCESS Status=Compatible Clear Frame=2 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 -Self Texture=0 +RDRAM Size=8 //================ Y ================ [9F8B96C3-A01194DC-C:4A] @@ -7843,19 +7005,14 @@ Internal Name=YAKOUTYUU2 Status=Compatible Plugin Note=[video] access violation; use Glide64 (see GameFAQ) Counter Factor=1 -Clear Frame=0 Culling=1 -Emulate Clear=0 -Primary Frame Buffer=0 RDRAM Size=8 -Self Texture=0 [2DCFCA60-8354B147-C:4A] Good Name=Yoshi Story (J) Internal Name=YOSHI STORY Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Save Type=16kbit Eeprom [D3F97D49-6924135B-C:50] @@ -7863,7 +7020,6 @@ Good Name=Yoshi's Story (E) (M3) Internal Name=YOSHI STORY Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Save Type=16kbit Eeprom [2337D8E8-6B8E7CEC-C:45] @@ -7871,7 +7027,6 @@ Good Name=Yoshi's Story (U) (M2) Internal Name=YOSHI STORY Status=Compatible Plugin Note=[video] (see GameFAQ) -Clear Frame=0 Save Type=16kbit Eeprom [9FE6162D-E97E4037-C:4A] @@ -7886,10 +7041,8 @@ Internal Name=THE MASK OF MUJURA Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -7899,10 +7052,8 @@ Internal Name=THE MASK OF MUJURA Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -7912,10 +7063,8 @@ Internal Name=ZELDA MAJORA'S MASK Status=Compatible Core Note=(see GameFAQ) Plugin Note=[video] errors:day transistion (see GameFAQ) -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 RDRAM Size=8 Self Texture=1 @@ -7927,12 +7076,8 @@ Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) Cheat0=801DA5CB 0002 //Subscreen Delay Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -7945,12 +7090,8 @@ Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) Cheat0=801DA78B 0002 //Subscreen Delay Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -7963,12 +7104,8 @@ Core Note=(see GameFAQ) Plugin Note=[video] (see GameFAQ) Cheat0=801DAE8B 0002 //Subscreen Delay Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -7983,12 +7120,8 @@ Cheat0=801DB78B 0002 //Subscreen Delay Fix Cheat1=D109A814 0320,8109A814 0000,D109A816 F809,8109A816 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -8003,12 +7136,8 @@ Cheat0=801DB78B 0002 //Subscreen Delay Fix Cheat1=D109A834 0320,8109A834 0000,D109A836 F809,8109A836 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -8023,13 +7152,8 @@ Cheat0=801DB78B 0002 //Subscreen Delay Fix Cheat1=D109A814 0320,8109A814 0000,D109A816 F809,8109A816 0000 //End Credits Fix CheatPlugin0=Jabo's Direct3D8,Glide64 For PJ64 CheatPlugin1=Jabo's Direct3D8,Glide64 For PJ64 -Clear Frame=0 Culling=1 -CustomSMM=1 -DRAM Size=4 Emulate Clear=1 -FuncFind=1 -Primary Frame Buffer=0 SMM-PI DMA=0 SMM-TLB=0 Self Texture=1 @@ -8062,7 +7186,6 @@ Status=Compatible Good Name=77a by Count0 (POM '98) (PD) Internal Name=77a By Count0 Status=Compatible -Clear Frame=0 [975B7845-A2505C18-C:0] Good Name=77a Special Edition by Count0 (PD) @@ -8130,7 +7253,6 @@ Good Name=Birthday Demo for Steve by Nep (PD) Internal Name=happy b-day Steve Status=Issues (mixed) Core Note=unknown country error -Clear Frame=0 [2D15DC8C-D3BBDB52-C:0] Good Name=Boot Emu by Jovis (PD) @@ -8140,8 +7262,9 @@ Status=Unsupported [95081A8B-49DFE4FA-C:45] Good Name=CD64 Memory Test (PD) Internal Name=CD64 SIMMtest -Status=Issues (core) -Core Note=unknown country error +Status=Compatible +CPU Type=Interpreter +Use TLB=No [EDA1A0C7-58EE0464-C:0] Good Name=Chaos 89 Demo (PD) @@ -8182,7 +7305,7 @@ Core Note=unknown country error [0E3ED77B-8E1C26FD-C:0] Good Name=Cube Demo (PD) Internal Name=h¼ -Status=Unsupported +Status=Compatible [5B9D65DF-A18AB4AE-C:0] Good Name=CZN Module Player (PD) @@ -8262,7 +7385,6 @@ Good Name=Fire_Demo_by_Lac_(PD) Internal Name=Fire Demo by Lac (PD) Status=Issues (plugin) Plugin Note=[video] fullscreen res issues; use 1.5.2 plugin -Clear Frame=0 [ECAEC238-EE351DDA-C:0] Good Name=Fireworks Demo by CrowTRobo (PD) @@ -8359,7 +7481,6 @@ Good Name=HardCoded by Iceage Internal Name=HardCoded by Iceage Status=Issues (plugin) Plugin Note=[video] fullscreen res issues; use 1.5.2 plugin -Clear Frame=0 Counter Factor=1 [5D391A40-84D7A637-C:0] @@ -8379,7 +7500,6 @@ Good Name=HSD Quick Intro (PD) Internal Name=HSD Quick Intro Status=Issues (plugin) Plugin Note=[video] fullscreen res issues; use 1.5.2 plugin -Clear Frame=0 [847BA4C2-1D3128F8-C:4A] Good Name=IPL4ROM (J) @@ -8804,7 +7924,6 @@ Status=Unsupported Good Name=R.I.P. Jay Demo by Ste (PD) Internal Name=R.I.P JAY Status=Unsupported -Clear Frame=0 [C9011D05-EF078B8C-C:0] Good Name=RADWAR 2K Party Inv. Intro by Ayatolloh (PD) @@ -8868,11 +7987,8 @@ Good Name=SLiDeS (PD) Internal Name=LaMeRS PiC PRoGGie Status=Issues (plugin) Plugin Note=[video] missing:graphics; use 3rd party plugin -Clear Frame=0 Culling=1 Emulate Clear=1 -Primary Frame Buffer=0 -Self Texture=0 [CA69ECE5-13A88244-C:21] Good Name=SNES 9X Alpha (PD) @@ -8884,7 +8000,6 @@ Good Name=Soncrap Golden Eye Intro (PD) aka Rad's Bird Internal Name=Test Program Status=Issues (plugin) Plugin Note=[video] fullscreen res issues; use 1.5.2 plugin -Clear Frame=0 [AAA66229-98CA5CAA-C:0] Good Name=Soncrap Intro by RedboX (PD) aka Rad's Bird @@ -8964,7 +8079,6 @@ Internal Name= Split Summer64 Good Name=Super Bomberman 2 by Rider (POM '99) (PD) Internal Name=h¼ Status=Compatible -Clear Frame=0 [1AD61BB9-F1E2BE1A-C:45] Good Name=Super Fighter Demo (PD) @@ -9007,7 +8121,6 @@ Core Note=slow Good Name=Tom Demo (PD) Internal Name=Tom Demo (PD) Status=Compatible -Clear Frame=0 [E8BF8416-F2D9DA43-C:0] Good Name=TopGun Demo (PD) @@ -9149,23 +8262,19 @@ Plugin Note=? Good Name=Wet Dreams Can Beta Demo by Immo (POM '99) (PD) Internal Name=POM99 - CAN-BETA Status=Compatible -Clear Frame=0 [993B7D7A-2E54F04D-C:50] Good Name=Wet Dreams Madeiragames Demo by Immo (POM '99) (PD) Internal Name=POM99 - MADEIRAGAMES -Clear Frame=0 [A3A95A57-9FE6C27D-C:50] Good Name=Wet Dreams Main Demo by Immo (POM '99) (PD) Internal Name=POM99 - WET DREAMS -Clear Frame=0 [9C044945-D31E0B0C-C:50] Good Name=Wet Dreams Readme by Immo (POM '99) (PD) Internal Name=POM99 - README Status=Compatible -Clear Frame=0 [1EDA4DE0-22BF698D-C:0] Good Name=XtraLife Dextrose Demo by RedboX (PD) @@ -9183,4 +8292,3 @@ Core Note=slow Good Name=Yoshi's Story BootEmu (PD) Internal Name=YOSHI BOOT EMU Status=Unsupported - diff --git a/Config/Project64.rdx b/Config/Project64.rdx index a8d77835e..3d0b2f779 100644 --- a/Config/Project64.rdx +++ b/Config/Project64.rdx @@ -1,15 +1,12 @@ -// PJ64 1.7 Official RDX (Rom Database eXtension) By Gent Beta Version 1.7.0.02 -// ---------------------------------------------------- -// -// This file is only to be used with Project64 version 1.7 -// +// PJ64 v2.2 Official RDX (Rom Database eXtension) +// Not for use with PJ64 v1.6 or previous // ---------------------------------------------------- [Meta] -Author=Gent -Version=Official Beta Version 1.7.0.02 -Date=12th July 2006 -Homepage=http://www.pj64.net/main/component/option,com_/Itemid,111/option,beta_files/ +Author=Project64 team +Version=2.2.0 +Date=2015/03/30 +Homepage=www.pj64-emu.com //------------------------- 0-9 -------------------------- @@ -22,7 +19,7 @@ Players=4 ForceFeedback=Yes [033F4C13-319EE7A7-C:45] -Good Name=007 - The World is Not Enough (U) +Good Name=007 - The World is Not Enough (U) Developer=Eurocom ReleaseDate=2000/10/17 Genre=Shooter FP @@ -458,7 +455,7 @@ ForceFeedback=Yes [B088FBB4-441E4B1D-C:50] Good Name=Bass Hunter 64 (E) [!] -Developer=Gear Head Entertainment +Developer=Gear Head Entertainment ReleaseDate=1999/07/28 Genre=Sport-Fishing Players=1 @@ -780,7 +777,7 @@ ForceFeedback=Yes Good Name=Buck Bumble (J) [!] Developer=Argonaut Games ReleaseDate=1998/11/20 -Genre=Action +Genre=Action Players=2 ForceFeedback=Yes @@ -1172,7 +1169,7 @@ ForceFeedback=No [079501B9-AB0232AB-C:4A] Good Name=Custom Robo V2 (J) [!] -Developer=Noise (Marigul) / Marigul Management, Inc. +Developer=Noise (Marigul) / Marigul Management, Inc. ReleaseDate=2000/11/10 Genre=Action Players=4 @@ -1541,7 +1538,7 @@ Players=4 ForceFeedback=Yes [1E12883D-D3B92718-C:46] -Good Name=Duke Nukem 64 (F) +Good Name=Duke Nukem 64 (F) Developer=Eurocom ReleaseDate=1997/11/14 Genre=Shooter FP @@ -2011,7 +2008,7 @@ Players=2 ForceFeedback=Yes [8F89ABA0-C34C2610-C:70] -Good Name=GameShark V3.3 (Unl) +Good Name=GameShark V3.3 (Unl) Developer=?? ReleaseDate=??/??/?? Genre=?? @@ -2261,7 +2258,7 @@ Players=4 ForceFeedback=No [5C1B5FBD-7E961634-C:46] -Good Name=Hexen (F) +Good Name=Hexen (F) Developer=Software Creations ReleaseDate=1997/06/24 Genre=Action @@ -2429,7 +2426,7 @@ Players=4 ForceFeedback=Yes [29A045CE-ABA9060E-C:46] -Good Name=Hydro Thunder (F) +Good Name=Hydro Thunder (F) Developer=Eurocom / Midway ReleaseDate=2000/02/28 Genre=Racing-Boat @@ -2488,7 +2485,7 @@ ForceFeedback=Yes [8C138BE0-95700E46-C:45] Good Name=In-Fisherman Bass Hunter 64 (U) [!] -Developer=Gear Head Entertainment +Developer=Gear Head Entertainment ReleaseDate=1999/07/28 Genre=Sport-Fishing Players=1 @@ -3014,7 +3011,7 @@ Players=1 ForceFeedback=Yes [F3DD35BA-4152E075-C:45] //New entry in RDB 1.6x BETA13 -Good Name=Legend of Zelda, The - Ocarina of Time (U) (GC Version) +Good Name=Legend of Zelda, The - Ocarina of Time (U) (GC Version) Developer=Nintendo ReleaseDate=????/??/?? Genre=Action-Adventure @@ -3062,7 +3059,7 @@ Players=1 ForceFeedback=Yes [917D18F6-69BC5453-C:45] -Good Name=Legend of Zelda, The - Ocarina of Time - Master Quest (U) (Debug Rom) +Good Name=Legend of Zelda, The - Ocarina of Time - Master Quest (U) (Debug Rom) Developer=Nintendo ReleaseDate=Never Genre=Action-Adventure @@ -3689,7 +3686,7 @@ ForceFeedback=Yes [E8E8DD70-415DD198-C:4A] Good Name=Morita Shogi 64 (J) [!] -Developer=Seta +Developer=Seta ReleaseDate=1998/04/03 Genre=Board Game Players=2 @@ -4285,7 +4282,7 @@ ForceFeedback=No [E86415A6-98395B53-C:50] Good Name=O.D.T (Or Die Trying) (E) (M5) (Unreleased Final) -Developer=Infogrames +Developer=Infogrames ReleaseDate=Never Genre=Action Players=1 @@ -4293,7 +4290,7 @@ ForceFeedback=Yes [2655BB70-667D9925-C:45] Good Name=O.D.T (Or Die Trying) (U) (M3) (Unreleased Final) -Developer=Infogrames +Developer=Infogrames ReleaseDate=Never Genre=Action Players=1 @@ -4734,7 +4731,7 @@ Players=4 ForceFeedback=No [EFCEAF00-22094848-C:49] -Good Name=Pokemon Stadium 2 (I) +Good Name=Pokemon Stadium 2 (I) Developer=Nintendo / HAL Laboratory ReleaseDate=2001/03/26 Genre=Battle @@ -4822,7 +4819,7 @@ Players=1 ForceFeedback=No [1BDCB30F-A132D876-C:4A] -Good Name=Pro Mahjong Tsuwamono 64 (J) +Good Name=Pro Mahjong Tsuwamono 64 (J) Developer=Culture Brain ReleaseDate=1999/11/05 Genre=Board Game @@ -5373,7 +5370,7 @@ Players=1 ForceFeedback=No [02B46F55-61778D0B-C:59] -Good Name=Shadowgate 64 - Trials of the Four Towers (IS) +Good Name=Shadowgate 64 - Trials of the Four Towers (IS) Developer=Infinite Ventures ReleaseDate=1999/06/09 Genre=Adventure @@ -6024,7 +6021,7 @@ Players=2 ForceFeedback=Yes [486BF335-034DCC81-C:46] -Good Name=Tom Clancy's Rainbow Six (F) +Good Name=Tom Clancy's Rainbow Six (F) Developer=Saffire ReleaseDate=1999/11/17 Genre=Action @@ -6344,7 +6341,7 @@ Players=4 ForceFeedback=Yes [2E0E7749-B8B49D59-C:58] -Good Name=Turok 2 - Seeds of Evil (FIS) +Good Name=Turok 2 - Seeds of Evil (FIS) Developer=Acclaim Studios Austin ReleaseDate=1999/11/23 Genre=Action @@ -6392,7 +6389,7 @@ Players=4 ForceFeedback=Yes [2E0E7749-B8B49D59-C:58] -Good Name=Turok 2 - Seeds of Evil (FIS) +Good Name=Turok 2 - Seeds of Evil (FIS) Developer=Iguana Entertainment ReleaseDate=1998/12/10 Genre=Action @@ -7114,7 +7111,7 @@ Players=1 ForceFeedback=Yes [F7F52DB8-2195E636-C:4A] -Good Name=Zelda no Densetsu - Toki no Ocarina - Zelda Collection Version (J) (GC Version) +Good Name=Zelda no Densetsu - Toki no Ocarina - Zelda Collection Version (J) (GC Version) Developer=Nintendo ReleaseDate=????/??/?? Genre=Action-Adventure @@ -7130,7 +7127,7 @@ Players=1 ForceFeedback=Yes [F611F4BA-C584135C-C:4A] -Good Name=Zelda no Densetsu - Toki no Ocarina GC (J) (GC Version) +Good Name=Zelda no Densetsu - Toki no Ocarina GC (J) (GC Version) Developer=Nintendo ReleaseDate=????/??/?? Genre=Action-Adventure diff --git a/Config/RDB Info.txt b/Config/RDB Info.txt new file mode 100644 index 000000000..17673ad1d --- /dev/null +++ b/Config/RDB Info.txt @@ -0,0 +1,343 @@ +######################## +# Project64 RDB values # +######################## + +**** Settings **** + +RDRAM Size +---------- +- 4 (default) +- 8 + +An emulated RDRAM size of 4MB is the standard amount of memory an N64 console has. + +An emulated RDRAM size of 8MB represents an N64 console with the 4MB memory expansion accessory installed, plus the original 4MB. This results in larger state saves and can lower performance. Most games do not benefit at all from the Expansion Pak. Some games require the Expansion Pak (e.g. Zelda2), some games give you more with it (e.g. Perfect Dark), some games just use it to raise resolution (in which case we recommend you don't use the Expansion Pak since graphics are HLE anyway, see below). + +Notes: +- if a game supports the Expansion Pak as an option it will usually tell you in its introduction screens (usually two lines, like "Expansion Pak supported, Expansion Pak detected"). If a game doesn't support the Pak, or absolutely requires it, it probably won't say anything. +- you gain nothing by using the Expansion Pak on a game that doesn't support it - you just waste resources. +- further, if a game has optional Expansion Pak support where the Pak is used only to raise screen resolution, it is generally recommended you set this to No, because there's no point wasting resources on higher native resolutions when the graphics are high level emulated (hence largely resolution independent) anyway, also it can often cause severe aspect ratio problems in the video plugin. +- in rare cases, for reasons unkown to me, the Project64 video plugin requires the Expansion Pak to avoid an Access Violation (even in games that don't use the Expansion Pak). The RDB is already set up for this for all known cases. +- the above two points explain why the setting may sometimes appear to be logically incorrect - it has been set that way for a good reason! +- this setting should already be correctly configured for every game by the RDB, don't change it unless you know what you're doing! + +Save Type +--------- +- First Save Type (default) +- 4kbit Eeprom +- 16kbit Eeprom +- Sram +- FlashRam + +You can set any of the four possible native cartridge save types here, but the only one that should be needed is 16kbit EEPROM, because it is not possible for the emulator to detect the difference between a game asking for 16kbit and a game asking for 4kbit - Project64 assumes 4kbit, the more common size. If a game actually needs 16kbit it will either fail to save or not boot unless set to 16kbit EEPROM. The other settings are included for the rare possibility that the autodetect goes wrong - generally, don't set them. Note that MemPak is treated separately and will work in addition to whatever is selected here. + +Counter Factor +-------------- +- 1 +- 2 (default) +- 3 +- 4 +- 5 +- 6 + +Counter Factor effects the timing in the core, it's a difficult option to explain, what you need to know is that 2 is the default and best speed you can get in most games without causing problems like missing video frames, 1 is required by some games to prevent flicker or optionally to increase smoothness, and 3 is a possibility for some games to improve performance. Values higher than 3 are likely to cause severe frame loss, leading to instability. But in the hands of experienced users this setting can be used as a crude form of frame-skip. Experienced users only! + +ViRefresh +--------- +- 1500 (default) +- more than 0 + +AiCountPerBytes +--------------- +- 400 (default) +- more than 0 + +32bit +----- +- true (default) +- false + +Use TLB +------- +- true (default) +- false + +This is another highly technical core feature, it's part of the N64 CPU, used extensively by some games (Goldeneye, Mario etc) and not at all by others (Zelda, Banjo etc). If a game uses the TLB (end user can't tell this without knowing or by trial and error) then this must be enabled or the game will fail with various error messages, usually soon after boot. TLB is an option mainly because you can gain some performance by turning it off where not needed. + +Fixed Audio +----------- +- true +- false (default) + +Sync Audio +---------- +- true (true) +- false + +Delay DP +-------- +- true (default) +- false + +Delay SI +-------- +- true +- false (default) + +This option was added in v1.5 to help a small number of games that were broken in v1.4. It's simply either needed (for example Cruis'N USA) or it isn't. Usually it isn't. + +Audio Signal +------------ +- true +- false (default) + +This option has allowed for some once unsupported Musyx games like: Hydro Thunder, NBA Showtime, Disney's Tarzan to be playable with either loading with sound available or now accessing speech although not perfect in games such as The World is Not Enough and Resident Evil 2. + +AudioResetOnLoad +---------------- +- true +- false (default) + +This fixes the losing audio after loading a save state issue with certain plugins in certain games. + +**** Recompiler **** + +CPU Type +-------- +- Interpreter +- Recompiler (default) +- SyncCores (debug builds only) + +R4300i core + +The Recompiler and Interpreter are two separate cores in the emulator (although the Recompiler implementation is based on the Interpreter). Generally, any game that works on the Recompiler will also work on the Interpreter, but not always vice-versa. Explaining the difference between a Recompiler and an Interpreter in a general sense is beyond the scope of this document, sufficient to say that the Recompiler is (usually much) faster but (a little) less compatible, the Interpreter (usually much) slower but (a little) more compatible. If you have a fast enough PC that performance is not an issue for you, you can probably use the Interpreter all the time, but i wouldn't recommend it since it generally shouldn't offer much advantage. + +Note that if you are using the Interpreter, the following settings are ignored (they are only relevant to the recompiler): + +- Self. mod code method +- Advanced Block Linking +- Larger Compile Buffer +- Register Caching + +Notes: Project64 was only tested extensively on the Recompiler, with the Interpreter used as a backup if the Recompiler failed, if you set this to Interpreter, there is a "small but real" chance that some games with not work, be prepared to put games back to using the Recompiler. +This is almost always set by the RDB, therefore this control is not normally used. + +FuncFind +-------- +- 1 (default) +- 2 +- 3 + +1 = Physical Lookup +2 = Virtual Lookup +3 = Change Memory + +Reg Cache +--------- +- true (default) +- false + +Probably the recompiler's most significant optimisation technique, register caching usually dramatically improves the efficiency of the recompiler, and usually without side effects. The reason this is included as an option is that sometimes register caching will produce an error in a game. Register caching can cause many kinds of obscure errors, such as events in a game not triggering, or a game becoming stuck in a loop, or graphics being messed up, as well as obvious errors such as a crash. If you find you are having stability problems with the recompiler and not the interpreter, try disabling register caching to see if you can get past the point/game with at least some of the performance of the recompiler. + +Linking +------- +- true (default) +- false + +Advanced Block Linking is one of Project64's speed optimisation techniques, it usually provides a speed vs. smoothness trade-off that you'd want to set globally (for all games) under the General tab, according to whether you have a fast or slow PC. On is usually (often significantly) faster than Off but may be less smooth. This depends on the game. A few games run particularly badly with this On, or may require this to be On or Off, which is why the RDB sometimes does set this control. +this control is a performance option for the recompiler, where setting On gives more speed (higher maximum and overall average speed) and setting Off gives better "smoothness" (higher consistency of speed, less variation from one part of a game to another, fewer jerks and slowdowns, but a lower overall speed). +The effect of having ABL on vs. off is probably most noticeable in fast moving racing games such as Didddy Kong Racing and Mario Kart. + +Notes: +- Project64 game compatibility was only thoroughly tested with ABL enabled, due to time constraints. If you turn ABL off, there is a possibility that some ROMs may need their settings adjusted - occasionally a higher self-mod code method is needed. There is also a chance that some games will not work at all with ABL turned off, so be prepared to turn it back on +- Some background info: ABL is not new to Project64 1.4+. The emulator was always using ABL, what is new in 1.4+ is the ability for you to turn it off! During the early stages of Project64 development performance was a major concern, but we expect Project64 to perform better on future PCs without ABL. +This is NOT normally set by the RDB, therefore this control IS normally used! (unlike all the other controls on Advanced tab). + +Fast SP +------- +- true (default) +- false + +This option was added in v1.5 simply as a performance feature - enabling it gives typically 5% more speed from the core, however a large number of games will not be stable with it enabled, therefore it's not set often. Try it if you are desperate for speed, but for most people most of the time it's recommended you leave it off. + +**** Self Mod Methods **** + +SMM-Cache +--------- +- true (default) +- false + +SMM-PI DMA +---------- +- true (default) +- false + +SMM-TLB +------- +- true (default) +- false + +SMM-StoreInstr +-------------- +- true +- false (default) + +SMM-Protect +----------- +- true +- false (default) + +SMM-FUNC +-------- +- true (default) +- false + +TLB: Vaddr Start +---------------- +- 0 (default) +- more than 0 + +**** Plugins **** + +HLE GFX +------- +- true (default) +- false + +HLE Audio +--------- +- true +- false (default) + +**** Other **** + +TLB: Vaddr Len +-------------- +- 0 (default) +- more than 0 + +TLB: PAddr Start +---------------- +- 0 (default) +- more than 0 + +Rom In Memory +------------- +- true +- false (default) + +ScreenHertz +----------- +- 0 (default) +- more than 0 + +############################### +# Jabo's Direct3D8 RDB values # +############################### + +**** Settings - Game Preferences **** + +Direct3D8-Brightness +-------------------- +- 0 (default) +- up to 30 + +Direct3D8-DesiredAspect +----------------------- +- 0 (default) +- 1 +- 2 +- 3 + +0 = Automatic +1 = Stretch +2 = Force 4:3 +3 = Force 16:9 + +Direct3D8-2xSai +--------------- +- 0 (default) +- 1 + +Direct3D8-ForceFilter +--------------------- +- 0 (default) +- 1 + +**** Rom Settings - Database Settings *** + +Resolution Height +----------------- + +This refers to the native horizontal resolution of the game. This is normally autodetected correctly by the plugin, however in some cases this can go wrong, hence this control is available to allow you to force any resolution. Values must be integers (whole numbers). A sensible place to start is 320, the horizontal resolution of most N64 games. + +Note that this control cannot be used effectively when a game has dynamic or mixed resolution! + +Resolution Width +---------------- + +Exactly as per "Emulated Width", except for vertical resolution, tends to be used more often to correct PAL resolution problems, and has a typical value of 240. + +Note that this control cannot be used effectively when a game has dynamic or mixed resolution! + +Clear Frame +----------- +- 0 (default) +- 1 +- 2 + +1 = Only per frame +2 = Always + +The default setting ("default") means none and was always used in previous versions of the plugin. +"Only per frame" is a possible solution for games suffering from the "black layer" problem, where the whole screen is hidden behind a black layer. This was added in v1.5 for Chameleon Twist 2 and is also used for several other games. +"Always" is a possible solution for games suffering from screen clearing problems within a particular part of the screen. It was added in v1.5 for the sky in Perfect Dark, and is also used for several other games. +Non-default settings can cause problems with some games and should only be enabled if needed. + +Self Texture +------------ +- 0 (default) +- 1 + +This is a framebuffer control. Some games use a temporary buffer (not part of the rendering queue) into which they render a scene to later use in the game, a classic example is the picture of link on the ZeldaOoT subscreen. This can be achieved with very little performance hit hence it is enabled where we know it is used. Do not enable it unless needed, it's a waste of resources and could cause problems with some games. + +Primary Frame Buffer +-------------------- +- 0 (default) +- 1 + +This is a framebuffer control. Some games use the screen itself as a texture within the game. A classic example is the board ("jumbotron?") above the bridge in the first level of Mario Kart 64. This has a very serious performance impact, due to PC architecture (data must be copied from video card back into system memory every frame) hence it's checked here when a game uses it however the user must enabled primary buffer emulation via the advanced tab (which also offers possible performance enhancement options). + +Emulate Clear +------------- +- 0 (default) +- 1 + +This is a framebuffer control. Some games use low level framebuffer clears for special effects. A classic example is the lens flare from the sun in Zelda. Some uses of emulate are quite subtle, it's possible that there were missed in the RDB. Emulate clear can cause problems with compatibility so should only be enabled when needed, however the performance hit is very minor. + +Direct3D8-Direct3DPipe +---------------------- +- 0 (default) +- 1 + +**** Other **** + +Culling +------- +- 0 (default) +- 1 + +Note: culling has been improved in v1.5 to the point where we do not know of a single game that does not benefit from it, however this control is kept in case there is something discovered. +If unchecked, if the plugin determines that something doesn't need to be rendered it will skip the entire rendering sequence of that display list, which could take a great deal of CPU time to work through, hence you may see performance increases, but you might also see things disappear. The effectiveness of this depends on the game and the "intelligence" of the plugin. +If checked, the plugin will draw everything in the scene regardless of whether or not it will be shown, which guarantees that nothing is culled that shouldn't be, but will take some extra CPU time, usually not a great deal more, and not an issue on fast systems, so you can turn it off. + +################################# +# Jabo's DirectSound RDB values # +################################# + +**** Rom Settings **** + +Dsound-SyncAudio +---------------- +- 0 (default) +- 1 \ No newline at end of file diff --git a/Lang/Brazilian Portuguese.pj.Lang b/Lang/Brazilian Portuguese.pj.Lang index 448ca4fe6..1ef31b4b1 100644 --- a/Lang/Brazilian Portuguese.pj.Lang +++ b/Lang/Brazilian Portuguese.pj.Lang @@ -2,10 +2,10 @@ * Meta Information * *********************************************************************************/ //About DLL -#1 # "Português Brasileiro" // LANGUAGE ID -#2 # "Marcos Spíndula e Felipe" // Author -#3 # "2.2" // Version -#4 # "Fevereiro, 2015" // Date +#1 # "Português Brasileiro" // LANGUAGE ID +#2 # "Project64 team" // Author +#3 # "2.2" // Version +#4 # "Abril, 2015" // Date //About DLL Dialog #5 # "Idioma Atual" @@ -15,24 +15,24 @@ #9 # "Visitar a Home Page" #10 # "Base de Dados da ROM (.RDB)" #11 # "Arquivo do Código de Trapaças (.CHT)" -#12 # "Informação Extendida da Rom (.RDX)" +#12 # "Informação Extendida da ROM (.RDX)" //About INI title -#20 # "Sobre os Arquivos INI" +#20 # "Sobre os Arquivos de Configuração" /********************************************************************************* * Menu * *********************************************************************************/ //File Menu #100# "&Arquivo" -#101# "&Abrir a Rom" -#102# "Informação &da Rom...." +#101# "&Abrir a ROM" +#102# "Informação &da ROM...." #103# "Iniciar a Emulação" #104# "&Finalizar a Emulação" -#105# "Escolher o Diretório das Roms..." -#106# "Atualizar a Lista das Roms" -#107# "Roms Recentes" -#108# "Diretórios das Roms Recentes" +#105# "Escolher o Diretório das ROMs..." +#106# "Atualizar a Lista das ROMs" +#107# "ROMs Recentes" +#108# "Diretórios das ROMs Recentes" #109# "S&air" //System Menu @@ -48,7 +48,7 @@ #129# "Save State A&tual" #130# "Trapaças..." #131# "Botão GS" -#132# "Resumir" +#132# "R&esumir" #133# "&Resetar Software" #134# "&Resetar Hardware" @@ -60,7 +60,7 @@ #144# "Configurar o Plugin de Ãudio..." #145# "Configurar o Plugin do Controle..." #146# "Configurar o Plugin RSP..." -#147# "Mostrar o uso da CPU %" +#147# "Mostrar o uso da CPU" #148# "&Configurações..." //Debugger Menu @@ -71,10 +71,10 @@ //Help Menu #180# "&Ajuda" -#181# "Sobre &os Arquivos INI" +#181# "Sobre os Arqui&vos de Configuração" #182# "&Sobre o Project 64" #183# "Fórum de &Suporte" -#184# "&Home page" +#184# "&Homepage" //Current Save Slot menu #190# "Padrão" @@ -110,15 +110,15 @@ #230# "Save Slot - 10" // Menu Descriptions -#250# "Abrir uma imagem da rom de N64" +#250# "Abrir uma imagem da ROM de N64" #251# "Exibir Informação sobre a imagem carregada" -#252# "Iniciar a Emulação da imagem da rom carregada" -#253# "Parar a Emulação da imagem da rom carregada" -#254# "Selecionar o Diretório das Roms" +#252# "Iniciar a Emulação da imagem da ROM carregada" +#253# "Parar a Emulação da imagem da ROM carregada" +#254# "Selecionar o Diretório das ROMs" #255# "Atualizar a lista de ROMs atuais no Explorador de ROMs" #256# "Sair deste aplicativo" -#257# "Reiniciar a imagem da rom atual (recarregar quaisquer mudanças nas configurações)" -#258# "Pausar/Resumir a emulação da rom atual em execução" +#257# "Reiniciar a imagem da ROM atual (recarregar quaisquer mudanças nas configurações)" +#258# "Pausar/Resumir a emulação da ROM atual em execução" #259# "Gerar uma imagem Bitmap da Tela atual" #260# "Limitar o FPS para a velocidade correta do n64" #261# "Criar um instante do sistema atual para o salvamento rápido" @@ -140,7 +140,7 @@ #278# "Sobre o aplicativo e os autores" #277# "Sobre os autores dos arquivos de suporte" #279# "Abrir esta imagem da ROM aberta anteriormente" -#280# "Escolher este diretório como seu diretório das roms" +#280# "Escolher este diretório como seu diretório das ROMs" #281# "Mudar o Aplicativo para usar este idioma" #282# "Escolher este local para salvamento rápido" #283# "Jogar o jogo selecionado" @@ -149,17 +149,17 @@ #286# "Editar as trapaças para o jogo selecionado" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Nome do Arquivo" #301# "Nome Interno" #302# "Good Name" #303# "Status" -#304# "Tamanho da Rom" -#305# "Notas (Core)" +#304# "Tamanho da ROM" +#305# "Notas (core)" #306# "Notas (plugins padrão)" -#307# "Notas (Usuário)" +#307# "Notas (usuário)" #308# "ID do Cartucho" #309# "Fabricante" #310# "País" @@ -171,12 +171,13 @@ #316# "Gênero" #317# "Jogadores" #318# "Force Feedback" +#319# "Formato do Arquivo" -//Select Rom -#320# "Selecionar o diretório atual das Roms" +//Select ROM +#320# "Selecionar o diretório atual das ROMs" //Messages -#340# "ROM ruim? Use o GoodN64 & procure RDBs atualizados" +#340# "ROM ruim? Use o GoodN64 & procure por um RDB atualizado" /********************************************************************************* * Options * @@ -188,55 +189,56 @@ #401# "Plugins" #402# "Diretórios" #403# "Opções" -#404# "Seleção das Roms" +#404# "Seleção das ROMs" #405# "Avançado" -#406# "Configurações da Rom" +#406# "Configurações Gerais" #407# "Integração com o Shell" -#408# "Notas da Rom" -#409# "Atalhos de Teclado" -#410# "Estado" +#408# "Notas" +#409# "Atalhos do Teclado" +#410# "Status" #411# "Recompilador" //Plugin Dialog #420# "Sobre" -#421# " Plugin do Processador de Sinal da Realidade: " +#421# " Plugin RSP (Reality Signal Processor): " #422# " Plugin de Vídeo (gráficos): " #423# " Plugin de Ãudio (som) : " #424# " Plugin de Entrada (controle): " -#425# "Usar Gráficos de Alto Nível?" -#426# "Usar Aúdio de Alto Nível?" -#427# "** Usar Plugin do Sistema **" +#425# "Gráficos HLE" +#426# "Ãudio HLE" +#427# "** Usar Plugins do Sistema **" //Directory Dialog -#440# " Diretório dos Plugins:: " -#441# " Diretório das Roms: " -#442# " Auto saves do N64: " -#443# " Salvamentos instantâneos: " -#444# " Screen Shots: " -#445# "Última pasta de onde uma rom foi aberta." -#446# "Selecionar o Diretório dos Plugins" -#447# "Selecionar o Diretório das Roms" -#448# "Selecionar o Diretório do Salvamento Automático" -#449# "Selecionar o Diretório do Salvamento Instantâneo" -#450# "Selecionar o Diretório dos Snapshots" -#451# " Diretório de Texturas: " -#452# "Selecionar o Diretório de Texturas" +#440# " Diretório dos Plugins: " +#441# " Diretório das ROMs: " +#442# " Diretório dos saves nativos do N64: " +#443# " Diretório dos save states: " +#444# " Diretório das screenshots: " +#445# "Última pasta de onde uma ROM foi aberta." +#446# "Selecionar o diretório dos plugins" +#447# "Selecionar o diretório das ROMs" +#448# "Selecionar o diretório dos saves nativos do N64" +#449# "Selecionar o diretório dos save states" +#450# "Selecionar o diretório das screenshots" +#451# " Diretório do pacote de texturas: " +#452# "Selecionar o diretório do pacote de texturas" -//Options Dialog -#460# "Pausar a emulação quando a janela não está ativa?" -#461# "Ao carregar uma ROM ir para a tela cheia" -#462# "Esconder as Configurações Avançadas" +//Options (general) Tab +#460# "Pausar a emulação quando a janela não está ativa" +#461# "Entrar em modo de tela cheia quando carregar uma ROM" +#462# "Esconder as configurações avançadas" #463# "Lembrar as trapaças selecionadas" -#464# "Desativar proteção de tela quando rodar a rom" -#465# "Mostrar Frame Rate" -#466# "Mudar forma de visualização do Frame Rate" +#464# "Desativar a proteção de tela quando executar uma ROM" +#465# "Exibir a velocidade" +#466# "Forma de exibição da velocidade:" +#467# "Verificar se o Project64 já está em execução" -//Rom Browser Tab -#480# "Máx # de Roms Lembradas (Máx 10):" -#481# "roms" -#482# "Máx # de Dirs. de Roms Lembrados (Máx 10):" -#483# "diretórios" -#484# "Usar Explorador de Roms" +//ROM Browser Tab +#480# "Máx # de ROMs Lembradas (0-10):" +#481# "ROMs" +#482# "Máx # de Dirs. de ROMs Lembrados (0-10):" +#483# "Diretórios" +#484# "Usar Explorador de ROMs" #485# "Usar repetição de diretório" #486# "Campos disponíveis:" #487# "Mostrar os campos nesta ordem:" @@ -247,58 +249,62 @@ #492# "Atualizar automaticamente o navegador" //Advanced Options -#500# "A maioria destas mudanças não acontecerão até que uma nova rom seja aberta ou que a rom atual seja resetada." +#500# "A maioria destas mudanças não acontecerão até que uma nova ROM seja aberta ou que a ROM atual seja resetada." #501# "Padrões do Core" #502# "Estilo do core da CPU:" -#503# "Método do código Self-mod:" -#504# "Tamanho Padrão da Memória:" -#505# "Ligamento de Blocos Avançado:" -#506# "Iniciar a Emulação quando a rom está aberta?" -#507# "Sempre sobrescrever as configurações padrão com as do ini?" -#508# "Comprimir automaticamente os salvamentos instantâneos" -#509# "Habilitar Debugger" +#503# "Método do código self-mod" +#504# "Tamanho padrão da memória:" +#505# "Ligamento de blocos avançado:" +#506# "Iniciar a emulação quando a ROM está aberta" +#507# "Sempre sobrescrever as configurações padrão com aquelas do RDB" +#508# "Automaticamente comprimir os save states" +#509# "Ativar debugger" #510# "Cache" #511# "PI DMA" -#512# "Start Changed" -#513# "Protect Memory" -#514# "TLB Unmapping" +#512# "Inicio Modificado" +#513# "Proteger memória" +#514# "TLB Não Mapeado" -//Rom Options +//ROM Options #520# "Estilo do core da CPU:" -#522# "Tamanho da Memória:" -#523# "Ligamento de Blocos Avançado:" -#524# "Tipo de Salvamento Padrão:" -#525# "Contra Fator:" -#526# "Buffer de Compilação Maior" +#521# "Frequência de atualização da VI:" +#522# "Tamanho da memória:" +#523# "Ligamento de blocos avançado:" +#524# "Tipo de salvamento padrão:" +#525# "Contra fator:" +#526# "Buffer de compilação maior" #527# "Usar o TLB" #528# "Caching do registro" -#529# "Atrasar o SI Interrupt" -#530# "Hack do SP" +#529# "Atrasar o SI interrupt" +#530# "SP Rápido" #531# "Padrão" -#532# "Sinal de Ãudio do RSP" -#533# "Timing de Ãudio Fixo" -#534# "Function lookup method:" -#535# "Custom Self Mod Method" -#536# "Sincronizar através do Ãudio" +#532# "Sinal de áudio do RSP" +#533# "Timing do áudio fixo" +#534# "Método de procura de função:" +#535# "Método de self-mod personalizado" +#536# "Sincronizar usando o áudio" +#537# "Contagem de IA por byte" +#538# "Engine de 32 bits" +#539# "Atrasar a interrupção do DP" //Core Styles #540# "Interpretador" #541# "Recompilador" -#542# "Sincronizar os Cores" +#542# "Sincronizar cores" //Self Mod Methods #560# "Nenhum" #561# "Cache" -#562# "Proteger a Memória" -#563# "Verificar a Memória & Cache" -#564# "Mudar a Memória & Cache" -#565# "Verificar o Avanço da Memória" -#566# "Limpar Cógido no Cache" +#562# "Proteger memória" +#563# "Verificar a memória & cache" +#564# "Mudar a memória & cache" +#565# "Verificar o avanço da memória" +#566# "Limpar o código no cache" -//Function Lookup memthod -#570# "Tabela de Pesquisa Física" -#571# "Tabela de Pesquisa Virtual" -#572# "Mudar Memória" +//Function Lookup method +#570# "Tabela de procura física" +#571# "Tabela de procura virtual" +#572# "Mudar memória" //RDRAM Size #580# "4 MB" @@ -310,32 +316,32 @@ //Save Type #620# "Usar o Primeiro Tipo de Salvamento Usado" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "Flashram" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "Associação da extensão dos arquivos:" -//Rom Notes -#660# "Status da Rom:" +//ROM Notes +#660# "Status da ROM:" #661# "Nota do Core:" #662# "Nota do Plugin:" // Accelerator Selector -#680# "Estado do CPU:" -#681# "Item do Menu:" -#682# "Atalhos Atuais:" -#683# "Selecionar Novo Atalho:" -#684# "Atualmente Atribuído Ao:" -#685# "Atribuir" +#680# "Estado da CPU:" +#681# "Item do menu:" +#682# "Teclas atuais:" +#683# "Selecionar nova tecla de atalho:" +#684# "Atualmente designado para:" +#685# "Designar" #686# "Remover" -#687# "Restaurar Todos" -#688# "Jogo Parado" -#689# "Jogo em Curso" -#690# "Jogo em Curso (Janela)" -#691# "Jogo em Curso (Tela Cheia)" +#687# "Reseta Tudo" +#688# "O jogo não está em execução" +#689# "Jogo em execução" +#690# "Jogo em execução (modo janela)" +#691# "Jogo em execução (tela cheia)" // Frame Rate Option #700# "Vertical Interupts por segundo" @@ -343,29 +349,26 @@ #702# "Percentual de Velocidade" // Increase speed -#710# "Aumentar Velocidade do Jogo" -#711# "Diminuir Velocidade do Jogo" +#710# "Aumentar a Velocidade do Jogo" +#711# "Diminuir a Velocidade do Jogo" -// short cut editor -#1100# "Restaurar Atalhos" -#1101# "Você tem certeza que deseja rastaurar os atalhos?\n\nEsta ação não pode ser desfeita." -#1102# "Menu de Arquivos" -#1103# "Menu de Sistema" -#1104# "Opções" -#1105# "Slots de Salvamento" +//Bottom page buttons +#720# "Resetar Página" +#721# "Resetar Tudo" +#722# "Aplicar" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title -#800# "Informação da Rom" +//ROM Info Title +#800# "Informação da ROM" -//Rom Info Text +//ROM Info Text #801# "Nome da ROM:" -#802# "Nome do Arquivo:" +#802# "Nome do arquivo:" #803# "Local:" -#804# "Tamanho da Rom:" -#805# "ID do Cartucho:" +#804# "Tamanho da ROM:" +#805# "ID do cartucho:" #806# "Fabricante:" #807# "País:" #808# "CRC1:" @@ -391,11 +394,6 @@ #1009# "Limpar" #1010# " Notas da Trapaça: " #1011# "Adicionar a Base de Dados" -#1022# "Adicionar Trapaça" -#1023# "Nova Trapaça" -#1024# " " -#1025# "Opções:" -#1026# " " //Code extension #1012# "Extensões do Código" @@ -410,107 +408,89 @@ #1019# "de" #1020# "até" #1021# "&Notas:" +#1022# "Adicionar Trapaça" +#1023# "Nova Trapaça" +#1024# " " +#1025# "Opções:" +#1026# " " //Edit Cheat #1027# "Editar a Trapaça" #1028# "Atualizar a Trapaça" -#1029# "A trapaça foi mudada você quer atualizar?" -#1030# "Trapaça Atualizada" +#1029# "A trapaça foi mudada.\n\nVocê quer atualizar?" +#1030# "Trapaça atualizada" //Cheat Popup Menu #1040# "Adicionar Nova Trapaça..." #1041# "Editar" #1042# "Apagar" +// short-cut editor +#1100# "Resetar Atalhos" +#1101# "Você tem certeza que deseja resetar os atalhos?\n\nEsta ação não pode ser desfeita." +#1102# "Menu dos Arquivos" +#1103# "Menu do Sistema" +#1104# "Opções" +#1105# "Slots de Salvamento" + /********************************************************************************* * Messages * *********************************************************************************/ #2000# "*** CPU PAUSADA ***" #2001# "CPU Resumida" -#2002# "Em um loop permanente do qual não se pode sair. -A emulação parará agora. - -Verificar a ROM e as Configurações da ROM." -#2003# "Falhou em distribuir a Memória" -#2004# "O plugin de vídeo padrão ou selecionado está desaparecido ou é inválido. - -Verifique se você tem ao menos um arquivo de plugin compatível na sua pasta de plugins." -#2005# "O plugin de áudio padrão ou selecionado está desaparecido ou é inválido. - -Verifique se você tem ao menos um arquivo de plugin compatível na sua pasta de plugins." -#2006# "O plugin RSP padrão ou selecionado está desaparecido ou é inválido. - -Verifique se você tem o Project64 apropriadamente instalado com um caminho para plugins válido." -#2007# "O plugin de entrada padrão ou selecionado está desaparecido ou é inválido. - -Verifique se você tem ao menos um arquivo de plugin compatível na sua pasta de plugins." -#2008# "Falhou em carregar o plugin:" -#2009# "Falhou em carregar a palavra - -Verificar a ROM e as configurações da ROM." -#2010# "Falhou em abrir o Arquivo do Salvamento" -#2011# "Falhou em abrir o Eeprom" -#2012# "Falhou em abrir a Flashram" -#2013# "Falhou em abrir o mempak" -#2014# "A tentativa de abrir o arquivo zip falhou. -Arquivo zip desaparecido ou corrompido - verifique o caminho e o arquivo. - -Você pode precisar reiniciar o aplicativo." +#2002# "Em um loop permanente do qual não se pode sair. \nA emulação vai parar agora. \n\nVerifique a ROM e as configurações da ROM." +#2003# "Falha ao alocar a Memória" +#2004# "O plugin de vídeo padrão ou selecionado está faltando ou é inválido. \n\nVocê precisa ir em Configurações e selecionar um plugin de vídeo (gráficos).\nVerifique se você tem ao menos um arquivo de plugin compatível na sua pasta de plugins." +#2005# "O plugin de áudio padrão ou selecionado está faltando ou é inválido. \n\nVocê precisa ir em Configurações e selecionar um plugin de áudio (som).\nVerifique se você tem ao menos um arquivo de plugin compatível na sua pasta de plugins." +#2006# "O plugin de RSP padrão ou selecionado está faltando ou é inválido. \n\nVocê precisa ir em Configurações e selecionar um plugin de RSP (Reality Signal Processor).\nVerifique se você tem ao menos um arquivo de plugin compatível na sua pasta de plugins." +#2007# "O plugin de entrada padrão ou selecionado está faltando ou é inválido. \n\nVocê precisa ir em Configurações e selecionar um plugin de entrada (controle).\nVerifique se você tem ao menos um arquivo de plugin compatível na sua pasta de plugins." +#2008# "Falha ao carregar o plugin:" +#2009# "Falha ao carregar a palavra\n\nVerifique a ROM e as configurações da ROM." +#2010# "Falha ao abrir o Arquivo do Salvamento" +#2011# "Falha ao abrir o EEPROM" +#2012# "Falha ao abrir a flash RAM" +#2013# "Falha ao abrir o mempak" +#2014# "A tentativa de abrir o arquivo zip falhou. \n\nProvavelmente um arquivo zip corrompido - tente descompactar a ROM manualmente." #2015# "A tentativa de abrir o arquivo falhou." #2016# "Um erro ocorreu quando tentava abrir o arquivo zip." -#2017# "O arquivo carregado não aparenta ser uma ROM de Nintendo64 válida. - -Verifique suas ROMs com o GoodN64." +#2017# "O arquivo carregado não aparenta ser uma ROM de N64 válida. \n\nVerifique suas ROMs com o GoodN64." #2018# "País desconhecido" #2019# "Chip Cic desconhecido" #2020# "Formato do arquivo desconhecido" -#2021# "Ação da memória desconhecida - -Emulação agora parada" +#2021# "Ação de memória desconhecida\n\nEmulação parada" #2022# "OpCode R4300i não manejado em" -#2023# "Executando do espaço não-mapeado. - -Verificar a ROM e as configurações da ROM." -#2024# "O Save State não aparenta combinar com a ROM em execução. - -Os save states devem ser salvos & carregados entre ROMs 100% idênticas, -em particular a REGIÃO e VERSÃO precisam ser as mesmas. -Carregar este state provavelmente causaria um crash no jogo e/ou no emulador. - -Você tem certeza que você quer continuar carregando?" +#2023# "Executando do espaço não-mapeado.\n\nVerifique a ROM e as configurações da ROM." +#2024# "Este save state não aparenta combinar com a ROM em execução. \n\nOs save states devem ser salvos & carregados entre ROMs 100% idênticas, \nEm particular a REGIÃO e VERSÃO precisam ser as mesmas. \nCarregar este state provavelmente causaria um crash no jogo e/ou no emulador. \n\nVocê tem certeza que você quer continuar carregando?" #2025# "Erro" -#2026# "Sequência de Copyright não achada no LUT. O jogo não mais funcionará." -#2027# "Falha da Proteção contra Cópia" -#2028# "Mudar um plugin requer que o Project64 resete uma ROM em execução. -Se você não quer perder seu lugar, responda Não e faça um save state primeiro. - -Mudar os plugins e reiniciar o jogo agora?" +#2026# "Sequência de Copyright não encontrada no LUT. O jogo não mais funcionará." +#2027# "Falha da Proteção Contra Cópia" +#2028# "Mudar um plugin requer que o Project64 resete uma ROM em execução. \nSe você não quer perder seu lugar, responda Não e faça um save state primeiro. \n\nMudar os plugins e resetar a ROM agora?" #2029# "Mudar os Plugins" -#2030# "Emulação finalizada" +#2030# "Emulação encerrada" #2031# "Emulação iniciada" -#2032# "Incapaz de carregar o save state" -#2033# "Save state carregado" -#2034# "Salvar o state atual em" -#2035# "Slot do save state" -#2036# "Imagem de swapping dos bytes" +#2032# "Incapaz de carregar o state" +#2033# "State carregado" +#2034# "Salvou o state atual em" +#2035# "Slot do state" +#2036# "Imagem de byte-swapping" #2037# "Escolhendo a imagem do N64" #2038# "Carregado" -#2039# "Carregando a imagem" -#2040# "Não pode abrir uma rom porque os plugins não inicalizaram com sucesso" -#2041# "Voce tem certeza que você realmente quer apagar isto?" +#2039# "Carregando imagem" +#2040# "Não foi possível carregar a ROM porque os plugins não foram inicializados com sucesso" +#2041# "Você tem certeza que realmente deseja excluir isto?" #2042# "Apagar a Trapaça" -#2043# "O nome da trapaça já está em uso" -#2044# "Voce alcançou a quantia máxima de trapaças para esta rom" -#2045# "Plug-in Inicializando" +#2043# "O nome da trapaça já está em uso." +#2044# "Você alcançou a quantia máxima de trapaças para esta ROM" +#2045# "Plugin inicializando" #2046# "Você não selecionou uma tecla virtual para atribuir ao item de menu" #2047# "Você precisa selecionar um item de menu para atribuir esta tecla para" -#2048# "Este Atalho já foi atribuído a outro item de menu" +#2048# "O atalho foi designado a outro item do menu." #2049# "Nenhum atalho foi selecionado para ser removido" -#2050# "Rom Carregada. Aguardando a emulação para começar." -#2051# "project64 beta é para membros apenas.\n\nse você tem uma conta no pj64.net, você pode não ver esse erro!!\npor favor contate-nos no website" +#2050# "ROM carregada. Esperando a emulação iniciar." +#2051# "O beta do Project64 é só pra membros.\n\nSe você tem uma conta no pj64.net não deveria estar vendo este erro!!\nPor favor entre em contato conosco no site." #2052# "Erro do Programa" -#2053# "Não foi possível encontrar um nome de arquivo no 7z" -#2054# "Utilizar Gráficos de Baixo Nível" -#2055# "Gráficos de baixo nível não são para uso geral!!!\nÉ aconselhável que você só utilize para testes, não para jogar qualquer jogo com ele\n\nMudar para Gráficos de Baixo Nível?" -#2056# "Utilizar Ãudio de Alto Nível" -#2057# "Ãudio de Alto Nível requer plugin de terceiros!!!\nSe você não tem um plugin de terceiros com suporte a Aúdio de Alto Nível você não vai ouvir nada.\n\nUtilizar Ãudio de Alto Nível?" +#2053# "Não foi possível encontrar o nome do arquivo no arquivo 7z" +#2054# "Gráficos LLE" +#2055# "Gráficos LLE não são para uso geral!!!\nÉ aconselhável que você só utilize para testes, não para jogar qualquer jogo com ele\n\nMudar para Gráficos LLE?" +#2056# "Aúdio HLE" +#2057# "O Ãudio HLE requer um plugin de terceiros!!!\nSe você não tem um plugin de áudio de terceiros que suporta HLE você não ouvirá o som.\n\nMudar pra áudio HLE?" diff --git a/Lang/Bulgarian.pj.Lang b/Lang/Bulgarian.pj.Lang index c1c04bf16..ca053d826 100644 --- a/Lang/Bulgarian.pj.Lang +++ b/Lang/Bulgarian.pj.Lang @@ -25,8 +25,8 @@ *********************************************************************************/ //File Menu #100# "&Файл" -#101# "&Отвори Rom" -#102# "&Rom информациÑ" +#101# "&Отвори ROM" +#102# "&ROM информациÑ" #103# "&Започни емулациÑта" #104# "&Спри емулациÑта" #105# "&Избери ROM директориÑ..." @@ -131,14 +131,14 @@ #286# "ПромÑна кодовете в CHT файла" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Име на файла" #301# "Вътрешно име" #302# "Good Име" #303# "СтатуÑ" -#304# "Rom големина" +#304# "ROM големина" #305# "Забележки (Ñдро)" #306# "Забележки (plugin)" #307# "Забележки (потребител)" @@ -153,7 +153,7 @@ #316# "Жанр" #317# "Играчи" -//Select Rom +//Select ROM #320# "Избиране ROM Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° ROM браузера" //Messages @@ -201,7 +201,7 @@ #462# "&Скрии допълнителните наÑтройки (препоръчително)" #463# "&Помни избраните кодове за игрите" -//Rom Browser Tab +//ROM Browser Tab #480# "&Брой запомненини ROM-ове (0-10)" #481# "ROMа" #482# "Брой на запомнени ROM &директории (0-10)" @@ -227,7 +227,7 @@ #507# "&Презапиши тези наÑтройки по подразбиране Ñ Ñ‚ÐµÐ·Ð¸ от RDB" #508# "&KомпреÑирай Pj64 запиÑите (.zip)" -//Rom Options +//ROM Options #520# "R4300i &Ñдро:" #521# "&Self-modifying код:" #522# "RDRA&M размер:" @@ -264,15 +264,15 @@ //Save Type #620# "* открий първиÑÑ‚ използван тип" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbyte SRAM" -#624# "128kbyte FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Intergration Tab #640# "ÐÑÐ¾Ñ†Ð¸Ð°Ñ†Ð¸Ñ Ð½Ð° файловете Ñ Project64" -//Rom Notes +//ROM Notes #660# "&СтатуÑ:" #661# "&Забележка (Ñдро):" #662# "&Забележка (plugin):" @@ -280,10 +280,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "ROM информациÑ" -//Rom Info Text +//ROM Info Text #801# "Вътрешно име" #802# "Име на файла" #803# "МеÑтоположение" @@ -370,14 +370,14 @@ Провери ROM-а и неговите наÑтройки." #2010# "ÐеуÑпешно отварÑне на Project64 запиÑ" #2011# "ÐеуÑпешно отварÑне на EEPROM-а" -#2012# "ÐеуÑпешно отварÑне на FlashRAM-а" -#2013# "ÐеуÑпешно отварÑне на MemPak-а" +#2012# "ÐеуÑпешно отварÑне на flash RAM-а" +#2013# "ÐеуÑпешно отварÑне на mempak-а" #2014# "ÐеуÑпешно отварÑне на ZIP файл-а. ЛипÑващ или повреден ZIP файл - проверете Ð¿ÑŠÑ‚Ñ ÐºÑŠÐ¼ файла." #2015# "ÐеуÑпешно отварÑне на файл." #2016# "Грешка при отварÑнето на zip файла." -#2017# "ЗаредениÑÑ‚ файл не изглежда като Nintendo64 ROM. +#2017# "ЗаредениÑÑ‚ файл не изглежда като Nintendo 64 ROM. Проверете Вашите ROMs ÑÑŠÑ GoodN64." #2018# "Ðепозната държава" @@ -420,5 +420,3 @@ Pj64 запиÑите Ñ‚Ñ€Ñбва да Ñе запиÑват & зареждат #2042# "Изтриване на код" #2043# "Вече ÑъщеÑтвува такова име за код. ÐœÐ¾Ð»Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñ‚Ðµ друго." #2044# "ДоÑтигнал Ñте макÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ð±Ñ€Ð¾Ð¹ на кодове за една игра." - - diff --git a/Lang/Chinese (Simplified).pj.Lang b/Lang/Chinese (Simplified).pj.Lang index fcdb3787b..38271ce56 100644 --- a/Lang/Chinese (Simplified).pj.Lang +++ b/Lang/Chinese (Simplified).pj.Lang @@ -2,20 +2,20 @@ * Meta Information * *********************************************************************************/ //About DLL -#1 # "简体中文" // LANGUAGE ID -#2 # "莫尼å¡" // Author -#3 # "4.0.5" // Version -#4 # "2005 å¹´ 4 月 25 æ—¥" // Date +#1 # "简体中文" // LANGUAGE ID +#2 # "山姆" // Author +#3 # "2.2" // Version +#4 # "2015 å¹´ 4 月" // Date //About DLL Dialog #5 # "当å‰ä½¿ç”¨çš„语言" #6 # "作者" #7 # "版本" #8 # "日期" -#9 # "访问作者主页" -#10 # "Rom æ•°æ®åº“ (.RDB)" +#9 # "访问首页" +#10 # "ROM æ•°æ®åº“ (.RDB)" #11 # "金手指文件 (.CHT)" -#12 # "扩展 Rom ä¿¡æ¯ (.RDX)" +#12 # "扩展 ROM ä¿¡æ¯ (.RDX)" //About INI title #20 # "关于 INI 文件" @@ -25,14 +25,14 @@ *********************************************************************************/ //File Menu #100# "文件(&F)" -#101# "打开 Rom(&O)" -#102# "Rom ä¿¡æ¯(&I)...." +#101# "打开 ROM(&O)" +#102# "ROM ä¿¡æ¯(&I)...." #103# "开始模拟" #104# "åœæ­¢æ¨¡æ‹Ÿ(&S)" -#105# "选择 Rom 目录..." -#106# "刷新 Rom 列表" -#107# "近期的 Rom" -#108# "近期的 Rom 目录" +#105# "选择 ROM 目录..." +#106# "刷新 ROM 列表" +#107# "最近的 ROM" +#108# "最近的 ROM 目录" #109# "退出(&X)" //System Menu @@ -40,26 +40,28 @@ #121# "é‡ç½®(&R)" #122# "æš‚åœ(&P)" #123# "截图" -#124# "é™åˆ¶å¸§æ•°" -#125# "ä¿å­˜(&S)" +#124# "é™åˆ¶å¸§çŽ‡" +#125# "存档(&S)" #126# "å¦å­˜ä¸º..." -#127# "还原(&R)" -#128# "载入(&L)..." -#129# "选择ä¿å­˜ä½ç½®(&T)" +#127# "读档(&L)" +#128# "载入..." +#129# "当å‰å­˜æ¡£(&T)" #130# "金手指..." #131# "GS 按钮" #132# "继续" +#133# "软é‡ç½®" +#134# "硬é‡ç½®" //Options Menu #140# "选项(&O)" #141# "å…¨å±æ¨¡å¼(&F)" -#142# "总在最å‰(&T)" +#142# "总在最上层(&T)" #143# "设置图形æ’件..." #144# "设置音频æ’件..." #145# "设置控制器æ’件..." #146# "设置 RSP æ’件..." -#147# "显示 CPU å ç”¨çŽ‡ %" -#148# "系统设置(&S)..." +#147# "显示 CPU å ç”¨çŽ‡" +#148# "设置(&S)..." //Debugger Menu #160# "调试器(&D)" @@ -69,63 +71,77 @@ //Help Menu #180# "帮助(&H)" -#181# "关于 &INI 文件" -#182# "关于 Project 64(&A)" +#181# "关于é…置文件(&I)" +#182# "关于 Project64(&A)" #183# "支æŒè®ºå›(&F)" -#184# "主页(&H)" +#184# "首页(&H)" //Current Save Slot menu #190# "默认" -#191# "ä½ç½® 1" -#192# "ä½ç½® 2" -#193# "ä½ç½® 3" -#194# "ä½ç½® 4" -#195# "ä½ç½® 5" -#196# "ä½ç½® 6" -#197# "ä½ç½® 7" -#198# "ä½ç½® 8" -#199# "ä½ç½® 9" -#200# "ä½ç½® 10" +#191# "æ’槽 1" +#192# "æ’槽 2" +#193# "æ’槽 3" +#194# "æ’槽 4" +#195# "æ’槽 5" +#196# "æ’槽 6" +#197# "æ’槽 7" +#198# "æ’槽 8" +#199# "æ’槽 9" +#200# "æ’槽 10" //Pop up Menu #210# "è¿è¡Œæ¸¸æˆ" -#211# "Rom ä¿¡æ¯" +#211# "ROM ä¿¡æ¯" #212# "编辑游æˆè®¾ç½®" #213# "编辑金手指" +#214# "图形æ’件" + +//Alternate Name to save Slot +#220# "默认" +#221# "ä¿å­˜æ§½ - 1" +#222# "ä¿å­˜æ§½ - 2" +#223# "ä¿å­˜æ§½ - 3" +#224# "ä¿å­˜æ§½ - 4" +#225# "ä¿å­˜æ§½ - 5" +#226# "ä¿å­˜æ§½ - 6" +#227# "ä¿å­˜æ§½ - 7" +#228# "ä¿å­˜æ§½ - 8" +#229# "ä¿å­˜æ§½ - 9" +#230# "ä¿å­˜æ§½ - 10" // Menu Descriptions -#250# "打开一个 N64 rom é•œåƒ" -#251# "显示已装载镜åƒçš„ä¿¡æ¯" -#252# "开始模拟已载入的镜åƒ" -#253# "åœæ­¢æ¨¡æ‹Ÿå·²è½½å…¥çš„é•œåƒ" -#254# "选择 Rom 目录" -#255# "刷新 Rom æµè§ˆå™¨å½“å‰çš„ Rom 列表" +#250# "打开一个 N64 ROM é•œåƒ" +#251# "显示已载入的镜åƒçš„ä¿¡æ¯" +#252# "开始模拟已载入的 ROM é•œåƒ" +#253# "åœæ­¢æ¨¡æ‹Ÿå·²è½½å…¥çš„ ROM é•œåƒ" +#254# "选择 ROM 目录" +#255# "在 ROM æµè§ˆå™¨ä¸­åˆ·æ–°å½“å‰ ROM 列表" #256# "退出这个应用程åº" -#257# "é‡æ–°å¼•å¯¼å½“å‰çš„ Rom é•œåƒ (é‡æ–°è£…载一些已改动的设置)" -#258# "æš‚åœ/继续模拟当å‰çš„ Rom" +#257# "é‡æ–°å¼•å¯¼å½“å‰çš„ ROM é•œåƒ (é‡æ–°è£…载一些已改动的设置)" +#258# "æš‚åœ/继续模拟当å‰çš„ ROM" #259# "为当å‰çš„å±å¹•å›¾è±¡åˆ›å»ºä¸€ä¸ªä½å›¾æ–‡ä»¶" -#260# "为当å‰çš„ N64 速度é™åˆ¶å¸§æ•°" +#260# "将帧率é™åˆ¶ä¸ºå½“å‰çš„ N64 速度" #261# "为当å‰çš„系统创建一个å³æ—¶å­˜æ¡£" -#262# "选择è¦åˆ›å»ºå³æ—¶å­˜æ¡£çš„ä½ç½®" +#262# "选择你想è¦åˆ›å»ºå³æ—¶å­˜æ¡£çš„ä½ç½®" #263# "载入一个å³æ—¶å­˜æ¡£" -#264# "选择一个è¦è½½å…¥çš„å³æ—¶å­˜æ¡£" -#265# "å¼€å¯/关闭 Game shark 代ç " -#266# "在特定的金手指中使用 Game shark 按钮" -#267# "将模拟器的显示模å¼ç”±çª—å£æ”¹ä¸ºå…¨å±" -#268# "使窗å£æ€»æ˜¯åœç•™åœ¨å…¶å®ƒçª—å£ä¹‹ä¸Š" +#264# "选择你想è¦è½½å…¥çš„å³æ—¶å­˜æ¡£" +#265# "å¼€å¯/关闭 Gameshark 代ç " +#266# "在特定的金手指中使用 Gameshark 按钮" +#267# "将模拟器从窗å£åˆ°å…¨å±" +#268# "将窗å£ç½®äºŽæœ€é¡¶å±‚" #269# "更改图形æ’件的设置" #270# "更改音频æ’件的设置" #271# "更改控制器æ’件的设置" #272# "更改 RSP æ’件的设置" #273# "显示 CPU å ç”¨çŽ‡" -#274# "显示/更改这个应用程åºçš„设置" +#274# "显示/更改 这个应用程åºçš„设置" #275# "查看这个程åºçš„用户手册" #276# "查看这个程åºçš„æ¸¸æˆ FAQ" #277# "关于支æŒæ–‡ä»¶çš„作者" #278# "关于程åºå’Œä½œè€…" -#279# "打开这个先å‰æ‰“开过的 Rom" -#280# "选择您的 Rom 目录" -#281# "改å˜åº”用程åºæ­£ä½¿ç”¨çš„语言" +#279# "打开以å‰æ‰“开过的 ROM" +#280# "选择您的 ROM 目录" +#281# "将应用程åºä½¿ç”¨è¯¥è¯­è¨€" #282# "选择这个å³æ—¶å­˜æ¡£ä½ç½®" #283# "è¿è¡Œæ‰€é€‰æ‹©çš„游æˆ" #284# "关于所选择游æˆçš„ä¿¡æ¯" @@ -133,14 +149,14 @@ #286# "编辑所选择游æˆçš„金手指" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "文件å" #301# "内部å称" #302# "正确的å称" #303# "状æ€" -#304# "Rom 容é‡" +#304# "ROM 容é‡" #305# "说明 (核心)" #306# "说明 (默认æ’件)" #307# "说明 (用户)" @@ -155,61 +171,74 @@ #316# "游æˆç±»åž‹" #317# "游æˆäººæ•°" #318# "强制力回馈" +#319# "文件格å¼" -//Select Rom -#320# "选择当å‰çš„ Rom 目录" +//Select ROM +#320# "选择当å‰çš„ ROM 目录" //Messages -#340# "错误的 ROM? 请使用 GoodN64 并检查更新您的 INI" +#340# "错误的 ROM? 请使用 GoodN64 并检查更新的 RDB" /********************************************************************************* * Options * *********************************************************************************/ //Options Title -#400# "系统设置" +#400# "设置" //Tabs #401# "æ’件" #402# "目录" #403# "选项" -#404# "Rom 状æ€æ˜¾ç¤ºè®¾ç½®" +#404# "ROM 状æ€æ˜¾ç¤ºè®¾ç½®" #405# "高级" -#406# "Rom 设置" +#406# "ROM 设置" #407# "文件关è”设置" -#408# "Rom 说明" +#408# "ROM 说明" +#409# "键盘快æ·é”®" +#410# "状æ€" +#411# "é‡ç¼–译" //Plugin Dialog #420# "关于" -#421# " 实时信å·å¤„ç†å™¨(RSP)æ’件: " +#421# " RSP (实时信å·å¤„ç†å™¨)æ’件: " #422# " 视频 (图形) æ’件: " #423# " 音频 (声音) æ’件: " #424# " 输入 (控制器) æ’件: " +#425# "图形HLE模拟" +#426# "音频HLE模拟" +#427# "** 使用系统æ’件 **" //Directory Dialog #440# " æ’件目录: " -#441# " Rom 目录: " +#441# " ROM 目录: " #442# " N64 自动存档: " -#443# " å³æ—¶è®°å¿†: " +#443# " å³æ—¶å­˜æ¡£: " #444# " 截图: " -#445# "最åŽä¸€æ¬¡æ‰“å¼€ Rom 的目录." +#445# "最åŽä¸€æ¬¡æ‰“å¼€ ROM 的目录." #446# "选择æ’件目录" -#447# "选择 Rom 目录" +#447# "选择 ROM 目录" #448# "选择自动存档目录" #449# "选择å³æ—¶å­˜æ¡£ç›®å½•" #450# "选择截图文件目录" +#451# " æ质目录: " +#452# " 选择æ质包目录" //Options Dialog -#460# "当窗å£æŒ‚起时暂åœæ¨¡æ‹Ÿå™¨" -#461# "载入 Rom 完毕åŽåˆ‡æ¢ä¸ºå…¨å±æ¨¡å¼" -#462# "éšè—高级设置选项" -#463# "记忆已选择的金手指" +#460# "当窗å£å¤„于éžæ´»åŠ¨çŠ¶æ€æ—¶æš‚åœæ¨¡æ‹Ÿå™¨" +#461# "载入ROMåŽåˆ‡æ¢ä¸ºå…¨å±æ¨¡å¼" +#462# "éšè—高级设置" +#463# "è®°ä½å·²é€‰æ‹©çš„金手指" +#464# "在ROMè¿è¡Œæ—¶å…³é—­å±å¹•ä¿æŠ¤" +#465# "显示帧速率" +#466# "帧速率回显:" +#467# "检查Project64是å¦å·²ç»åœ¨è¿è¡Œ" -//Rom Browser Tab -#480# "最大 # Rom 记忆数 (最大 10):" -#481# "Rom" -#482# "最大 # Rom 目录记忆数 (最大 10):" +//ROM Browser Tab +#480# "最大 # ROM 记录数 (0-10):" +#481# "ROM" +#482# "最大 # ROM 目录记录数 (0-10):" #483# "目录" -#484# "使用 Rom æµè§ˆå™¨" +#484# "使用 ROM æµè§ˆå™¨" #485# "包å«æ‰€æœ‰å­ç›®å½•" #486# "å¯æ˜¾ç¤ºçš„状æ€:" #487# "已显示的状æ€:" @@ -217,45 +246,65 @@ #489# "<- 移除" #490# "上" #491# "下" +#492# "自动刷新æµè§ˆå™¨" //Advanced Options -#500# "在这里的大多数被更改的选项è¦é‡æ–°è½½å…¥ä¸€ä¸ª Rom 或将当å‰çš„ Rom é‡ç½®æ‰èƒ½ç”Ÿæ•ˆ" -#501# "默认核心" -#502# "CPU 核心类型:" +#500# "大部分所修改的选项无法立å³ç”Ÿæ•ˆï¼Œéœ€è¦æ‰“开一个新ROM或é‡ç½®å½“å‰ROMæ‰èƒ½ç”Ÿæ•ˆ" +#501# "默认内核" +#502# "CPU 内核类型:" #503# "自我修改ç æ–¹æ¡ˆ:" -#504# "默认记忆容é‡:" -#505# "扩展模å—连接:" -#506# "当 Rom 载入完毕åŽå¼€å§‹æ¨¡æ‹Ÿ" -#507# "总是从 ini 中覆盖默认设置" -#508# "自动压缩å³æ—¶è®°å¿†æ–‡ä»¶" +#504# "默认存档容é‡:" +#505# "高级模å—连接" +#506# "当ROM加载åŽï¼Œå¼€å§‹æ¨¡æ‹Ÿ" +#507# "总是从 RDB 中覆盖默认设置" +#508# "自动压缩å³æ—¶å­˜æ¡£æ–‡ä»¶" +#509# "å¼€å¯è°ƒè¯•å™¨" +#510# "缓存" +#511# "PI DMA" +#512# "å¯åŠ¨ä¿®æ”¹" +#513# "ä¿æŠ¤å†…å­˜" +#514# "TLB å–消映射关系" -//Rom Options -#520# "CPU 核心类型:" -#521# "自我修改ç æ–¹æ¡ˆ:" -#522# "记忆容é‡:" +//ROM Options +#520# "CPU 内核类型:" +#521# "VI 刷新率" +#522# "内存容é‡:" #523# "扩展模å—连接:" -#524# "默认记忆类型:" -#525# "计算因数:" +#524# "默认存档类型:" +#525# "计数器因数:" #526# "较大的编译器缓冲" #527# "使用 TLB" -#528# "寄存缓冲器" -#529# "延迟 SI 中断信å·" -#530# "SP Hack" +#528# "寄存器缓存" +#529# "SI 中断延迟" +#530# "快速度(SP)" #531# "默认" #532# "RSP 音频信å·" +#533# "固定音频计时" +#534# "查询函数方案:" +#535# "自定义自我修改方案" +#536# "使用åŒæ­¥éŸ³é¢‘" +#537# "AI æ¯å­—节计数" +#538# "32ä½å¼•æ“Ž" +#539# "DP 中断延迟" //Core Styles #540# "注释器" #541# "é‡ç¼–译" -#542# "核心åŒæ­¥" +#542# "内核åŒæ­¥" //Self Mod Methods #560# "æ— " #561# "缓冲器" -#562# "ä¿æŠ¤æ¨¡å¼å†…å­˜" +#562# "ä¿æŠ¤å†…å­˜" #563# "效验内存和缓冲器" -#564# "改å˜å†…存和缓冲器" -#565# "高级效验内存" +#564# "修改内存和缓冲器" +#565# "效验内存进步" +#566# "清除代ç ç¼“å­˜" + +//Function Lookup method +#570# "物ç†æŸ¥è¯¢è¡¨" +#571# "虚拟查询表 " +#572# "修改内存" //RDRAM Size #580# "4 MB" @@ -266,37 +315,68 @@ #601# "å…³" //Save Type -#620# "使用第一次使用的记忆类型" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "Flashram" +#620# "使用最åˆçš„存档类型" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab -#640# "è¦å…³è”的文件扩展å:" +#640# "文件扩展åçš„å…³è”:" -//Rom Notes -#660# "Rom 状æ€:" -#661# "核心说明:" +//ROM Notes +#660# "ROM 状æ€:" +#661# "内核说明:" #662# "æ’件说明:" +// Accelerator Selector +#680# "CPU 状æ€:" +#681# "èœå•é€‰é¡¹:" +#682# "å¿«æ·é”®:" +#683# "选择新快æ·é”®:" +#684# "ç›®å‰è®¾ç½®ä¸º:" +#685# "设置" +#686# "移除" +#687# "é‡ç½®æ‰€æœ‰å¿«æ·é”®" +#688# "游æˆæœªè¿è¡Œ" +#689# "游æˆæ­£åœ¨è¿è¡Œ" +#690# "游æˆæ­£åœ¨è¿è¡Œ (窗å£)" +#691# "游æˆæ­£åœ¨è¿è¡Œ (å…¨å±)" +#692# "按下按键" + +// Frame Rate Option +#700# "æ¯ç§’垂直中断 (VI/s)" +#701# "æ¯ç§’显示列表 (DL/s)" +#702# "速度百分比" + +// Increase speed +#710# "æ高游æˆé€Ÿåº¦" +#711# "é™ä½Žæ¸¸æˆé€Ÿåº¦" + +//Bottom page buttons +#720# "é‡ç½®æ­¤é¡µ" +#721# "全部é‡è®¾" +#722# "应用" +#723# "关闭" + /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title -#800# "Rom ä¿¡æ¯" +//ROM Info Title +#800# "ROM ä¿¡æ¯" -//Rom Info Text +//ROM Info Text #801# "ROM å称:" #802# "文件å:" #803# "路径:" -#804# "Rom 容é‡:" +#804# "ROM 容é‡:" #805# "å¡å¸¦ ID:" #806# "厂商:" #807# "国家:" #808# "CRC1:" #809# "CRC2:" #810# "CIC 芯片:" +#811# "MD5:" /********************************************************************************* * Cheats * @@ -316,11 +396,6 @@ #1009# "清除" #1010# " 修改说明: " #1011# "添加到 DB" -#1022# "添加金手指" -#1023# "新建金手指" -#1024# "<地å€> <值>" -#1025# "选项:" -#1026# "<值> <注释>" //Code extension #1012# "代ç èŒƒå›´" @@ -333,18 +408,35 @@ #1017# "请选择一个值:" #1018# "数值(&V)" #1019# "从" -#1020# "到" +#1020# "至" #1021# "说明(&N):" +#1022# "添加金手指" +#1023# "新建金手指" +#1024# "<地å€> <值>" +#1025# "选项:" +#1026# "<值> <注释>" //Edit Cheat #1027# "编辑金手指" #1028# "更新金手指" +#1029# "金手指已被修改 您是å¦æƒ³æ›´æ–°?" +#1030# "金手指已更新" //Cheat Popup Menu #1040# "添加新的金手指..." #1041# "编辑" #1042# "删除" +// short cut editor +#1100# "é‡ç½®å¿«æ·é”®" +#1101# "您确定想è¦é‡ç½®æ‰€æœ‰å¿«æ·é”®? + +这个动作ä¸èƒ½è¢«æ’¤é”€ã€‚" +#1102# "文件èœå•" +#1103# "系统èœå•" +#1104# "选项" +#1105# "ä¿å­˜ä½ç½®" + /********************************************************************************* * Messages * *********************************************************************************/ @@ -371,9 +463,9 @@ #2009# "载入设置失败 请检查 ROM å’Œ ROM 设置。" -#2010# "打开记忆文件失败" -#2011# "打开 Eeprom 失败" -#2012# "打开 Flashram 失败" +#2010# "打开存档文件失败" +#2011# "打开 EEPROM 失败" +#2012# "打开 flash RAM 失败" #2013# "打开记忆å¡å¤±è´¥" #2014# "å°è¯•æ‰“å¼€ zip 文件失败。 ä¸å­˜åœ¨æˆ–æŸåçš„ zip 文件 - 请检查路径和文件。 @@ -381,9 +473,9 @@ 您或许需è¦é‡æ–°å¯åŠ¨åº”用程åºã€‚" #2015# "å°è¯•æ‰“开文件失败。" #2016# "在å°è¯•æ‰“å¼€ Zip 文件时å‘生错误。" -#2017# "被载入的文件看æ¥ä¸æ˜¯ä¸€ä¸ªæ­£ç¡®çš„ Nintendo64 ROM。 +#2017# "被载入的文件看æ¥ä¸æ˜¯ä¸€ä¸ªæ­£ç¡®çš„ Nintendo 64 ROM。 -请使用 GoodN64 æ¥æ•ˆéªŒä½ çš„ Rom。" +请使用 GoodN64 æ¥æ•ˆéªŒä½ çš„ ROM。" #2018# "未知的国家" #2019# "未知的 Cic 芯片" #2020# "未知的文件格å¼" @@ -393,34 +485,57 @@ #2022# "未ç»å¤„ç†çš„ R4300i Op ç " #2023# "没有è¿è¡Œæ‰€éœ€çš„映射空间。 -请检查 Rom å’Œ Rom 设置." -#2024# "å³æ—¶è®°å¿†çœ‹æ¥ä¸æ˜¯å½“å‰æ­£åœ¨è¿è¡Œçš„ Rom 的。 +请检查 ROM å’Œ ROM 设置." +#2024# "å³æ—¶å­˜æ¡£çœ‹æ¥ä¸æ˜¯å½“å‰æ­£åœ¨è¿è¡Œçš„ ROM 的。 -å³æ—¶è®°å¿†å¿…须在 100% 相åŒçš„ Rom 上ä¿å­˜å’Œè½½å…¥, +å³æ—¶å­˜æ¡£å¿…须在 100% 相åŒçš„ ROM 上ä¿å­˜å’Œè½½å…¥, 特别是版本和区域必须相åŒã€‚ -载入这个å³æ—¶è®°å¿†å¯èƒ½ä½¿æ¨¡æ‹Ÿå™¨æˆ–游æˆæ­»æœº +载入这个å³æ—¶å­˜æ¡£å¯èƒ½ä½¿æ¨¡æ‹Ÿå™¨æˆ–游æˆæ­»æœº 您确实è¦ç»§ç»­è½½å…¥å—?" #2025# "错误" #2026# "没有在 Lut 中å‘现版æƒåºåˆ—。 游æˆå¯èƒ½æ— æ³•è¿è¡Œã€‚" #2027# "å¤åˆ¶ä¿æŠ¤å¤±è´¥" -#2028# "改å˜æ’ä»¶éœ€è¦ Project64 é‡ç½®åŽé‡æ–°è¿è¡Œè¿™ä¸ª Rom。 -如果您ä¸æƒ³åœ¨çŽ°åœ¨ä¸¢å¤±æ¸¸æˆè¿›åº¦, 那么请回答å¦ç„¶åŽä¿å­˜ä¸€ä¸ªå³æ—¶è®°å¿†ã€‚ +#2028# "改å˜æ’ä»¶éœ€è¦ Project64 é‡ç½®åŽé‡æ–°è¿è¡Œè¿™ä¸ª ROM。 +如果您ä¸æƒ³ä¸¢å¤±æ¸¸æˆè¿›åº¦, 那么请回答å¦ç„¶åŽä¿å­˜ä¸€ä¸ªå³æ—¶å­˜æ¡£ã€‚ 改å˜æ’件并且é‡ç½®æ¸¸æˆå—?" #2029# "改å˜æ’件" #2030# "模拟器已åœæ­¢" #2031# "开始模拟" -#2032# "ä¸èƒ½è½½å…¥å³æ—¶è®°å¿†" -#2033# "已载入å³æ—¶è®°å¿†" -#2034# "ä¿å­˜å³æ—¶è®°å¿†åˆ°" -#2035# "记忆区域" -#2036# "交æ¢æ•°ä½é•œåƒ" +#2032# "无法读档" +#2033# "已读档" +#2034# "已存档到" +#2035# "å³æ—¶å­˜æ¡£" +#2036# "字节交æ¢é•œåƒ" #2037# "关闭 N64 é•œåƒ" #2038# "已载入" -#2039# "正载入镜åƒ" -#2040# "无法打开 Rom 因为æ’件没有正确åˆå§‹åŒ–" +#2039# "正在载入镜åƒ" +#2040# "无法打开 ROM 因为æ’件没有正确åˆå§‹åŒ–" #2041# "您确实è¦åˆ é™¤è¿™ä¸ªå—?" #2042# "删除金手指" #2043# "修改å称已被使用" -#2044# "您超过了这个 Rom 的最大修改值" +#2044# "您超过了这个 ROM 的最大修改值" +#2045# "æ’件正在åˆå§‹åŒ–" +#2046# "您还未设置个虚拟键作为选项" +#2047# "您必须选择一个选项分é…ç»™èœå•é€‰é¡¹" +#2048# "å¿«æ·é”®å·²è¢«åˆ†é…为å¦ä¸€ä¸ªé€‰é¡¹" +#2049# "你还未选择你想è¦åˆ é™¤çš„å¿«æ·é”®" +#2050# "ROM 已被载入。正在等待模拟开始。" +#2051# "Project64 betaä»…é™äºŽä¼šå‘˜. + +如果你在pj64.net上有账户, ä½ ä¸åº”看到此错误ï¼ï¼ + +请è”系我们网站" +#2052# "程åºé”™è¯¯" +#2053# "无法在7z文件中查询文件å" +#2054# "图形LLE模拟" +#2055# "图形LLE模拟ä¸æ˜¯å¹³æ—¶ä½¿ç”¨çš„ï¼ï¼ï¼ +这仅用于测试,而ä¸æ˜¯çŽ©æ¸¸æˆ + +你确定改æˆå›¾å½¢LLE?" +#2056# "音频HLE模拟" +#2057# "音频HLE模拟需è¦ç¬¬ä¸‰æ–¹æ’件ï¼ï¼ï¼ +如果你使用的第三方æ’件ä¸æ”¯æŒéŸ³é¢‘HLE,你将å¬ä¸åˆ°å£°éŸ³ã€‚ + +你确定改æˆéŸ³é¢‘HLE?" diff --git a/Lang/Chinese (Taiwan).pj.Lang b/Lang/Chinese (Taiwan).pj.Lang deleted file mode 100644 index 9d3b3f6c8..000000000 --- a/Lang/Chinese (Taiwan).pj.Lang +++ /dev/null @@ -1,429 +0,0 @@ -/********************************************************************************* -* Meta Information * -*********************************************************************************/ -//About DLL -#1 # "å°ç£æ­£é«”中文(TW T-Chinese)" // LANGUAGE ID -#2 # "Dark Dragon (adolrs25@yahoo.com.tw)" // Author -#3 # "1.6.0.0" // Version -#4 # "2005-10-12" // Date - -//About DLL Dialog -#5 # "GUI 翻譯 (.pj.Lang)" -#6 # "製作者" -#7 # "版本" -#8 # "日期" -#9 # "作者首é " -#10 # "ROM 資料庫 (Project64.rdb)" -#11 # "作弊碼檔案 (Project64.cht)" -#12 # "ROM資訊 (Project64.rdx)" - -//About INI title -#20 # "Project64çš„INI檔案製作者" - -/********************************************************************************* -* Menu * -*********************************************************************************/ -//File Menu -#100# "檔案(&F)" -#101# "é–‹å•ŸROM(&O)." -#102# "ROM資訊(&I)" -#103# "開始模擬(&S)" -#104# "çµæŸæ¨¡æ“¬(&E)" -#105# "é¸æ“‡ROMç€è¦½è³‡æ–™å¤¾(&S)" -#106# "é‡æ–°æ•´ç†(&R)" -#107# "最近開啟的ROM(&E)" -#108# "最近開啟的資料夾(&F)" -#109# "離開(&X)" - -//System Menu -#120# "系統(&S)" -#121# "é‡ç½®ROM(&R)" -#122# "æš«åœ(&P)" -#123# "抓圖(&N)" -#124# "速度é™åˆ¶(&E)" -#125# "儲存隨時記憶進度(&S)" -#126# "儲存進度至檔案(&A)..." -#127# "載入隨時記憶進度(&O)" -#128# "由檔案讀å–進度(&L)..." -#129# "é¸æ“‡é€²åº¦ä½¿ç”¨ç·¨è™Ÿ(&T)" -#130# "作弊碼(&C)" -#131# "GS作弊碼(&B)" -#132# "繼續(&R)" - -//Options Menu -#140# "設定(&O)" -#141# "全螢幕(&F)" -#142# "最上層顯示(&T)" -#143# "視訊設定(&V)..." -#144# "音效設定(&A)..." -#145# "控制器設定(&I)..." -#146# "RSP設定(&R)..." -#147# "顯示CPU使用率(&S)" -#148# "進階設定(&T)" - -//Debugger Menu -#160# "除錯(&D)" - -//Language Menu -#175# "語言(&L)" - -//Help Menu -#180# "說明(&H)" -#181# "關於INI(&F)" -#182# "關於Project64(&A)" -#183# "å”助&論壇 (&F)" -#184# "首é (&H)" - -//Current Save Slot menu -#190# "é è¨­ &D(.pj)" -#191# "檔案 &1 (.pj1)" -#192# "檔案 &2 (.pj2)" -#193# "檔案 &3 (.pj3)" -#194# "檔案 &4 (.pj4)" -#195# "檔案 &5 (.pj5)" -#196# "檔案 &6 (.pj6)" -#197# "檔案 &7 (.pj7)" -#198# "檔案 &8 (.pj8)" -#199# "檔案 &9 (.pj9)" -#200# "檔案 1&0 (.pj0)" - -//Pop up Menu -#210# "開始éŠæˆ²(&P)" -#211# "ROM資訊(&O)" -#212# "修改ROM設定(&T)" -#213# "編輯作弊碼(&C)" - -// Menu Descriptions -#250# "é–‹å•ŸN64 ROM檔(å¯é–‹å•ŸZIP檔)" -#251# "顯示目å‰åŸ·è¡Œçš„ROM資訊" -#252# "開始模擬載入的ROM檔" -#253# "åœæ­¢æ¨¡æ“¬è¼‰å…¥çš„ROM檔" -#254# "更改ç€è¦½ROM的資料夾" -#255# "é‡æ–°æ•´ç†ROM資料夾(è‹¥ROM檔案有變更時,è«‹é‡æ–°æ•´ç†)" -#256# "離開Project64" -#257# "é‡æ–°å•Ÿå‹•ROM並且將設定生效" -#258# "æš«åœ/繼續模擬ROM(å¯ä½¿ç”¨Pauseéµ)" -#259# "抓å–éŠæˆ²ç•«é¢(經由Plugin)" -#260# "é™åˆ¶æ¨¡æ“¬é€Ÿåº¦æ­£ç¢ºçš„顯示速度(較高速的電腦若ä¸é¸å–å¯èƒ½é€Ÿåº¦æœƒéŽå¿«)" -#261# "將目å‰ç‹€æ…‹å­˜è‡³Project64設定的隨時記憶檔(系統\é¸æ“‡é€²åº¦ä½¿ç”¨ç·¨è™Ÿ)" -#262# "將目å‰ç‹€æ…‹å­˜è‡³Project64記憶檔(å¯ä½¿ç”¨ä»»ä½•æª”å)" -#263# "讀å–Project64設定的隨時記憶檔" -#264# "讀å–Project64記憶檔(任何檔å)" -#265# "é¸æ“‡æˆ–增加作弊碼給目å‰åŸ·è¡Œçš„ROM使用" -#266# "使用一個按鈕來執行作弊碼" -#267# "將會é‡è¦–窗模å¼è®Šæ›´åˆ°å…¨èž¢å¹•æ¨¡å¼(按Escéµè¿”回)" -#268# "ä¿æŒProject64在最上層" -#269# "開啟視訊(顯示)Plugin設定" -#270# "開啟音效(音樂)Plugin設定" -#271# "開啟控制器(æ–æ¡¿)Plugin設定" -#272# "é–‹å•ŸRSPPlugin設定" -#273# "顯示或關閉CPU使用率" -#274# "Project64的進階設定(Plugin請在此é¸æ“‡)" -#275# "é–‹å•ŸProject64的使用者手冊" -#276# "é–‹å•ŸProject64éŠæˆ²è¨­å®šèªªæ˜Ž(Game FAQ)" -#277# "關於此應用程å¼åŠä½œè€…" -#278# "關於作者與感è¬" -#279# "讀å–最近開啟的ROM" -#280# "使用最近ç€è¦½çš„資料夾" -#281# "é¸æ“‡ä¸åŒçš„語言" -#282# "é¸æ“‡ä¸åŒçš„進度檔" -#283# "讀å–並開始模擬這個ROM" -#284# "顯示這個ROM資訊" -#285# "編輯這個ROM設定在RDB檔案" -#286# "編輯這個ROM的作弊碼" - -/********************************************************************************* -* Rom Browser * -*********************************************************************************/ -//Rom Browser Fields -#300# "檔案å稱" -#301# "內部å稱" -#302# "éŠæˆ²å稱" -#303# "狀態" -#304# "ROM大å°" -#305# "é‡è¦è¨˜éŒ„" -#306# "Plugin記錄" -#307# "使用者記錄" -#308# "縮寫" -#309# "製作公å¸" -#310# "版本å€åŸŸ" -#311# "開發者" -#312# "CRC1" -#313# "CRC2" -#314# "CIC 晶片" -#315# "發行日期" -#316# "é¡žåž‹" -#317# "玩家數" -#318# "強制å應" - -//Select Rom -#320# "é¸æ“‡ç€è¦½ROM的資料夾" - -//Messages -#340# "無法使用的ROM,請使用GoodN64檢查新的RDB檔" - -/********************************************************************************* -* Options * -*********************************************************************************/ -//Options Title -#400# "Project64 設定" - -//Tabs -#401# "Plugin" -#402# "資料夾" -#403# "設定" -#404# "ROMç€è¦½é¸é …" -#405# "進階設定" -#406# "ROMé¸é …" -#407# "關連" -#408# "ROM 紀錄" - -//Plugin Dialog -#420# "關於" -#421# "&Reality Signal Processor plugin" -#422# "視訊(顯示)Plugin(&V)" -#423# "音效(音樂)Plugin(&A)" -#424# "控制器(æ–æ¡¿)Plugin(&I)" - -//Directory Dialog -#440# "Plugin資料夾(&P)" -#441# "ROM資料夾(&R)" -#442# "N64存檔資料夾(&N)" -#443# "Project64隨時記憶檔資料夾(&T)" -#444# "抓å–圖片資料夾(&S)" -#445# "使用最後開啟的ROM資料夾(&L)" -#446# "é¸æ“‡æ‚¨å­˜æ”¾Plugin的資料夾" -#447# "é¸æ“‡æ‚¨å­˜æ”¾ROM檔的資料夾" -#448# "é¸æ“‡æ‚¨å­˜æ”¾N64存檔的資料夾" -#449# "é¸æ“‡æ‚¨å­˜æ”¾Project64隨時記憶檔的資料夾" -#450# "é¸æ“‡æ‚¨æ¬²æŠ“å–圖片的資料夾" - -//Options Dialog -#460# "éžä½¿ç”¨Project時暫åœ(&P)" -#461# "讀å–éŠæˆ²å¾Œè‡ªå‹•åˆ‡æ›è‡³å…¨èž¢å¹•(&F)" -#462# "éš±è—進階設定(推薦) (&H)" -#463# "記憶æ¯å€‹éŠæˆ²æ‰€é¸æ“‡çš„作弊碼(&R)" - -//Rom Browser Tab -#480# "最近開啟的ROM記憶數目(&N) (0-10)" -#481# "個紀錄" -#482# "最近開啟的資料夾記憶數目(&F) (0-10)" -#483# "個紀錄" -#484# "使用ROMç€è¦½å™¨(&B)" -#485# "功能表循環(&D)" -#486# "å¯ä½¿ç”¨çš„(&A)" -#487# "顯示出的(&S)" -#488# "增加(A)->" -#489# "<- 移除(&R)" -#490# "上(&U)" -#491# "下(&D)" - -//Advanced Options -#500# "這些設定åªä½¿ç”¨æ–¼RDB檔無正確åŠå…·é«”的設定時, -è‹¥RDB檔已經設定,則下列設定無效" -#501# "核心設定(&D)" -#502# "核心模擬模å¼(&C):" -#503# "內部修正方å¼(&S):" -#504# "記憶容é‡å¤§å°(&M):" -#505# "進階å€å¡Šé€£çµ(&A):" -#506# "éŠæˆ²è®€å–後立å³é–‹å§‹æ¨¡æ“¬(&T)" -#507# "覆寫這些設定在RDB檔(&O)" -#508# "自動將隨時存檔壓縮æˆZip檔(ä¸å£“縮速度較快)" - -//Rom Options -#520# "核心模擬模å¼(&C):" -#521# "內置記憶方å¼(&S):" -#522# "記憶容é‡å¤§å°(&M):" -#523# "進階å€å¡Šé€£çµ(&A):" -#524# "存檔類型(&V):" -#525# "最高速度é™åˆ¶(&F):" -#526# "較大的緩è¡è¨˜æ†¶é«”(&L)" -#527# "é å®šè¦ä½¿ç”¨TLB(&T)" -#528# "éš±è—登記(&R)" -#529# "延緩SI中斷(&I)" -#530# "SP Hack(&H)" -#531# "* 使用é è¨­" -#532# ""RSP 音頻信號"" - -//Core Styles -#540# "直譯器" -#541# "é‡è­¯å™¨" -#542# "åŒæ™‚å•Ÿå‹•" - -//Self Mod Methods -#560# "ç„¡" -#561# "éš±è—" -#562# "安全記憶體" -#563# "檢查記憶體並隱è—" -#564# "æ›´æ›è¨˜æ†¶é«”並隱è—" -#565# "檢查進階記憶體" - -//RDRAM Size -#580# "4 MB" -#581# "8 MB" - -//Advanced Block Linking -#600# "é–‹å•Ÿ" -#601# "關閉" - -//Save Type -#620# "* 使用第一個類型" -#621# "4åƒä½å…ƒ EEPROM" -#622# "16åƒä½å…ƒ EEPROM" -#623# "32åƒä½å…ƒ SRAM" -#624# "128åƒä½å…ƒ å‹•æ…‹RAM" - -//Shell Intergration Tab -#640# "檔案與Project64連çµ" - -//Rom Notes -#660# "狀態(&S):" -#661# "é‡è¦è¨˜éŒ„(&C):" -#662# "Plugin記錄(&P):" - -/********************************************************************************* -* ROM Information * -*********************************************************************************/ -//Rom Info Title Title -#800# "ROM資訊" - -//Rom Info Text -#801# "內部å稱" -#802# "檔案å稱" -#803# "ä½ç½®" -#804# "大å°" -#805# "縮寫" -#806# "製作公å¸" -#807# "版本å€åŸŸ" -#808# "CRC1" -#809# "CRC2" -#810# "CIC 晶片" - -/********************************************************************************* -* Cheats * -*********************************************************************************/ -//Cheat List -#1000# "作弊碼" -#1001# "作弊碼:" -#1002# "說明: " -#1003# "å…¨é¸" -#1004# "å–消é¸æ“‡(&U)" - -//Add Cheat -#1005# "新增作弊碼" -#1006# "å稱:" -#1007# "作弊碼碼:" -#1008# "æ’å…¥" -#1009# "清除" -#1010# " 作弊碼說明:" -#1011# "新增到 DB" -#1022# "新增作弊碼" -#1023# "建立新作弊碼" -#1024# "<ä½å€> <數值>" -#1025# "設定:" -#1026# "<數值> <標籤>" - -//Code extension -#1012# "編碼延長" -#1013# "è«‹é¸æ“‡ä¸€å€‹æ•¸å€¼ä½¿ç”¨:" -#1014# "確定" -#1015# "å–消" - -//Digital Value -#1016# "數ä½é‡" -#1017# "è«‹é¸æ“‡ä¸€å€‹æ•¸å€¼:" -#1018# "(&V)" -#1019# "給" -#1020# "到" -#1021# "說明(&N):" - -//Edit Cheat -#1027# "編輯作弊碼" -#1028# "更新作弊碼" - -//Cheat Popup Menu -#1040# "建立新作弊碼..." -#1041# "編輯..." -#1042# "刪除" - -/********************************************************************************* -* Messages * -*********************************************************************************/ -#2000# "æš«åœ" -#2001# "繼續" -#2002# "在無法改變的å€åŸŸå…§ä¸èƒ½é€€å‡º, -模擬å³å°‡åœæ­¢ - -Verify ROM and ROM Settings." -#2003# "記憶體分é…失敗" -#2004# "é è¨­çš„視訊Plugin檔案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有一個以上å¯ä½¿ç”¨çš„視訊外掛檔案在你的視訊外掛資料夾裡" -#2005# "é è¨­çš„音效Plugin檔案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有一個以上å¯ä½¿ç”¨çš„音效外掛檔案在你的音效外掛資料夾裡" -#2006# "é è¨­çš„RPSPlugin檔案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有正確的安è£Project64並且å«æœ‰Plugin" -#2007# "é è¨­çš„控制器Plugin檔案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有一個以上å¯ä½¿ç”¨çš„控制器外掛檔案在你的控制器外掛資料夾裡" -#2008# "無法讀å–外掛:" -#2009# "ç„¡æ³•è®€å– - -ROM驗證和設定" -#2010# "無法開啟隨時記憶檔" -#2011# "無法開啟EEPROM" -#2012# "無法開啟動態RAM" -#2013# "無法開啟MemPak" -#2014# "無法開啟此ZIP檔 -請檢查此ZIP檔中是å¦å«æœ‰æ­£ç¢ºçš„ROM - -ä½ å¯èƒ½éœ€è¦é‡æ–°é–‹å•Ÿé€™å€‹ç¨‹å¼" -#2015# "開啟檔案時發生錯誤" -#2016# "當嘗試開啟ZIP檔時發生錯誤" -#2017# "這個檔案並ä¸æ˜¯N64çš„ROM檔 - -請使用GoodROM檢查這個ROM" -#2018# "未知的國家" -#2019# "未知的CIC 晶片" -#2020# "未知的檔案格å¼" -#2021# "未知的記憶動作 - -模擬çµæŸ" -#2022# "無法開啟核心碼" -#2023# "執行並無法映射空間 - -請檢查ROM檔和ROM設定" -#2024# "這個存檔並ä¸é©ç”¨æ–¼é€™å€‹ROM - -隨時記憶存檔必須100%的來自這個ROM -(包括ROM的版本å€åŸŸ) -讀å–這個存檔å¯èƒ½æœƒå°Žè‡´éŒ¯èª¤ - -確定è¦ç¹¼çºŒè®€å–嗎?" -#2025# "應用程å¼æˆ–核心錯誤" -#2026# "版權åºåˆ—並未在LUT中找到, éŠæˆ²ç„¡æ³•é•·ä¹…執行" -#2027# "複製ä¿è­·å¤±æ•—" -#2028# "改變Pluginå¿…é ˆé‡æ–°å•Ÿå‹•ä»¥åŸ·è¡Œçš„ROM -若需存檔,請存檔å†åŸ·è¡Œé‡æ–°èµ·å‹• - -ç¾åœ¨æ›´æ”¹Plugin並é‡æ–°å•Ÿå‹•éŠæˆ²ï¼Ÿ?" -#2029# "更改Plugin" -#2030# "模擬çµæŸ" -#2031# "模擬開始" -#2032# "ä¸èƒ½è®€å–存檔" -#2033# "讀å–進度:" -#2034# "儲存進度:" -#2035# "讀å–隨時進度檔" -#2036# "Byteswapping ROM" -#2037# "請等候所é¸æ“‡çš„ROM" -#2038# "讀å–完æˆ" -#2039# "正在讀å–ROM" -#2040# "您ä¸èƒ½é–‹å•Ÿæ­¤ROM,å¯èƒ½æ˜¯Plugin(視訊,音效,控制器,RSP)ä¸æ”¯æ´" -#2041# "您確定以è¦åˆªé™¤é€™å€‹ä½œå¼Šç¢¼?" -#2042# "刪除作弊碼" -#2043# "作弊碼å稱已經使用,è«‹é‡æ–°è¼¸å…¥" -#2044# "您的作弊碼數目以到é”最大值,您將無法å†æ·»åŠ ä½œå¼Šç¢¼" - - diff --git a/Lang/Chinese (Traditional).pj.Lang b/Lang/Chinese (Traditional).pj.Lang index 4ea659146..2ce4c7b0e 100644 --- a/Lang/Chinese (Traditional).pj.Lang +++ b/Lang/Chinese (Traditional).pj.Lang @@ -133,9 +133,9 @@ #286# "編輯所é¸æ“‡éŠæˆ²çš„金手指" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "檔案å稱" #301# "內部å稱" #302# "éŠæˆ²å稱" @@ -156,7 +156,7 @@ #317# "éŠæˆ²äººæ•¸" #318# "強制回饋" -//Select Rom +//Select ROM #320# "é¸æ“‡ä¸€å€‹æ‚¨è¦ç€è¦½ ROM 的目錄" //Messages @@ -204,7 +204,7 @@ #462# "éš±è—部份進階設定é¸é …" #463# "記憶æ¯å€‹éŠæˆ²é¸å–的金手指" -//Rom Browser Tab +//ROM Browser Tab #480# "最近使用的 ROM 記憶數目 (最大10):" #481# "個 ROM" #482# "最近使用的 ROM 目錄記憶數目 (最大10):" @@ -230,7 +230,7 @@ #507# "總是從 RDB 中覆寫é è¨­è¨­å®šå€¼" #508# "自動壓縮å³æ™‚存檔" -//Rom Options +//ROM Options #520# "CPU 核心樣å¼:" #521# "自我修改代碼方å¼:" #522# "記憶大å°:" @@ -268,15 +268,15 @@ //Save Type #620# "使用最åˆä½¿ç”¨çš„存檔類型" -#621# "4 KBIT EEPROM" -#622# "16 KBIT EEPROM" -#623# "32 KBytes SRAM" -#624# "FlashRAM" +#621# "4-Kbit EEPROM" +#622# "16-Kbit EEPROM" +#623# "32-KByte SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "您è¦é—œè¯çš„檔案副檔å:" -//Rom Notes +//ROM Notes #660# "ROM 狀態:" #661# "核心註解:" #662# "外掛程å¼è¨»è§£:" @@ -284,10 +284,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title +//ROM Info Title #800# "ROM 資訊" -//Rom Info Text +//ROM Info Text #801# "ROM å稱:" #802# "檔案å稱:" #803# "ä½ç½®:" @@ -377,7 +377,7 @@ è«‹é©—è­‰ ROM åŠ ROM 的設定。" #2010# "é–‹å•Ÿå³æ™‚存檔失敗" #2011# "é–‹å•Ÿ EEPROM 失敗" -#2012# "é–‹å•Ÿ FlashRAM 失敗" +#2012# "é–‹å•Ÿ flash RAM 失敗" #2013# "開啟記憶å¡å¤±æ•—" #2014# "嘗試開啟 ZIP 壓縮檔失敗。 éºæ¼æˆ–æ壞的 ZIP 壓縮檔 - 請檢查路徑和文件。 @@ -385,7 +385,7 @@ 您å¯èƒ½éœ€è¦é‡æ–°å•Ÿå‹•æ‡‰ç”¨ç¨‹å¼ã€‚" #2015# "嘗試開啟檔案失敗。" #2016# "在嘗試開啟 ZIP 壓縮檔時發生錯誤。" -#2017# "被載入的檔案看來ä¸æ˜¯ä¸€å€‹æ­£ç¢ºçš„ Nintendo64 ROM。 +#2017# "被載入的檔案看來ä¸æ˜¯ä¸€å€‹æ­£ç¢ºçš„ Nintendo 64 ROM。 請使用 GoodN64 來驗證您的 ROM。" #2018# "未知的國別" @@ -427,4 +427,4 @@ #2041# "您確定è¦åˆªé™¤é€™å€‹å—Žï¼Ÿ" #2042# "刪除金手指" #2043# "金手指å稱已經被使用" -#2044# "您的金手指數é‡å·²é”到這個 ROM 的最大值" \ No newline at end of file +#2044# "您的金手指數é‡å·²é”到這個 ROM 的最大值" diff --git a/Lang/ChineseB5.pj.lang b/Lang/ChineseB5.pj.lang deleted file mode 100644 index c125f3f74..000000000 --- a/Lang/ChineseB5.pj.lang +++ /dev/null @@ -1,426 +0,0 @@ -/********************************************************************************* -* What's New * -*********************************************************************************/ -//Alt+KEYS shortcut added (credit to mygod for pointing this out! Thanks) -//Review and some minor mistake corrected - -/********************************************************************************* -* Meta Information * -*********************************************************************************/ -//About DLL -#1 # "ç¹é«”中文" -#2 # "Maximus" -#3 # "1.1" -#4 # "10th September 2002" - -//About DLL Dialog -#5 # "ç›®å‰èªžæ–‡" -#6 # "作者" -#7 # "版本" -#8 # "日期" -#9 # "ç€è¦½ç¶²é " -#10 # "éŠæˆ²æª”資料庫(.RDB)" -#11 # "作弊碼資料庫(.CHT)" -#12 # "éŠæˆ²æª”訊æ¯è³‡æ–™åº«ï¼ˆ.RDX)" - -//About INI title -#20 # "關於INI" - -/********************************************************************************* -* Menu * -*********************************************************************************/ -//File Menu -#100# "文件 &F" -#101# "打開 &O" -#102# "訊æ¯... &I" -#103# "開始模擬" -#104# "çµæŸæ¨¡æ“¬" -#105# "é¸æ“‡æ–‡ä»¶å¤¾..." -#106# "刷新" -#107# "最近使用éŠæˆ²æª”" -#108# "最近使用éŠæˆ²æª”文件夾" -#109# "離開 &X" - -//System Menu -#120# "系統 &S" -#121# "é‡æ–°å•Ÿå‹• &R" -#122# "æš«åœ &P" -#123# "螢幕抓å–" -#124# "é™åˆ¶FPS" -#125# "儲存 &S" -#126# "æ›´åå¦å­˜..." -#127# "å¿«é€Ÿè®€å– &R" -#128# "讀å–檔案..." -#129# "快速存檔 &T" -#130# "作弊碼..." -#131# "作弊碼按鈕" -#132# "繼續" - -//Options Menu -#140# "設置 &O" -#141# "全螢幕 &F" -#142# "å¸¸ç½®æ¡Œé¢ &A &T" -#143# "å½±åƒè¨­å®š..." -#144# "音效設定..." -#145# "輸入設定..." -#146# "RSP設定..." -#147# "顯示CPU使用率%" -#148# "設定... &S" - -//Debugger Menu -#160# "除錯 &D" - -//Language Menu -#175# "語文 &L" - -//Help Menu -#180# "幫助 &H" -#181# "關於INI &I" -#182# "關於Project 64 &A" - -//Current Save Slot menu -#190# "åˆå§‹è¨­å®š" -#191# "å¿«å­˜æ·å¾‘一" -#192# "å¿«å­˜æ·å¾‘二" -#193# "å¿«å­˜æ·å¾‘三" -#194# "å¿«å­˜æ·å¾‘å››" -#195# "å¿«å­˜æ·å¾‘五" -#196# "å¿«å­˜æ·å¾‘å…­" -#197# "å¿«å­˜æ·å¾‘七" -#198# "å¿«å­˜æ·å¾‘å…«" -#199# "å¿«å­˜æ·å¾‘ä¹" -#200# "å¿«å­˜æ·å¾‘å" - -//Pop up Menu -#210# "執行éŠæˆ²" -#211# "訊æ¯" -#212# "éŠæˆ²è¨­å®š" -#213# "作弊碼編輯" - -// Menu Descriptions -#250# "打開N64éŠæˆ²æª”" -#251# "顯示N64éŠæˆ²æª”訊æ¯" -#252# "開始執行éŠæˆ²æ¨¡æ“¬" -#253# "åœæ­¢åŸ·è¡ŒéŠæˆ²æ¨¡æ“¬" -#254# "é¸æ“‡éŠæˆ²æª”文件夾" -#255# "刷新éŠæˆ²æª”列示" -#256# "離開模擬器" -#257# "é‡æ–°å•Ÿå‹•éŠæˆ²æª”(變更設定)" -#258# "暫定/繼續éŠæˆ²" -#259# "抓å–éŠæˆ²ç•«é¢" -#260# "é™åˆ¶FPS以變更模擬器執行速度" -#261# "進行快速存檔" -#262# "進行快速存檔(快存æ·å¾‘é¸æ“‡ï¼‰" -#263# "讀å–快存檔" -#264# "讀å–指定快存檔" -#265# "å•Ÿå‹•/關閉GAME SHARK作弊碼" -#266# "特殊作弊碼按鈕" -#267# "全螢幕切æ›" -#268# "éŠæˆ²è¦–窗常置於桌é¢" -#269# "變更影åƒè¨­å®š" -#270# "變更音效設定" -#271# "變更輸入設定" -#272# "變更RSP設定" -#273# "顯示目å‰è™•ç†å™¨è³‡æº" -#274# "觀看/變更目å‰ç³»çµ±è¨­å®š" -#275# "觀看使用手冊" -#276# "觀看常見å•é¡Œé›†" -#277# "關於INI" -#278# "關於程å¼" -#279# "打開此éŠæˆ²æª”" -#280# "é¸æ“‡æ­¤æ–‡ä»¶å¤¾ç‚ºæŒ‡å®šæ–‡ä»¶å¤¾" -#281# "變更語文設定" -#282# "é¸æ“‡æ­¤å¿«å­˜æ·å¾‘" -#283# "執行此éŠæˆ²æª”" -#284# "æ­¤éŠæˆ²æª”訊æ¯" -#285# "指定éŠæˆ²æª”設定" -#286# "指定éŠæˆ²æª”作弊碼設定" - -/********************************************************************************* -* Rom Browser * -*********************************************************************************/ -//Rom Browser Fields -#300# "檔案å" -#301# "éŠæˆ²å稱" -#302# "正常éŠæˆ²æª”" -#303# "ç‹€æ³" -#304# "éŠæˆ²æª”容é‡" -#305# "核心程å¼å‚™è¨»" -#306# "外挂程å¼å‚™è¨»" -#307# "使用者備註" -#308# "éŠæˆ²æ¨™ç±¤" -#309# "發行公å¸" -#310# "國家" -#311# "設計公å¸" -#312# "CRC1" -#313# "CRC2" -#314# "CIC CHIP" -#315# "發行日期" -#316# "é¡žåž‹" -#317# "玩家人數" - -//Select Rom -#320# "é¸æ“‡æ­¤éŠæˆ²æª”文件夾" - -//Messages -#340# "此為å•é¡ŒéŠæˆ²æª”?請使用GOODN64確定或查閱最新版INI" - -/********************************************************************************* -* Options * -*********************************************************************************/ -//Options Title -#400# "設定" - -//Tabs -#401# "外挂程å¼" -#402# "文件夾" -#403# "é¸é …" -#404# "éŠæˆ²æª”é¸æ“‡" -#405# "進階設定" -#406# "éŠæˆ²æª”設定" -#407# "副檔å連çµ" -#408# "éŠæˆ²æª”備註" - -//Plugin Dialog -#420# "關於" -#421# "åŒä½è¨Šè™Ÿè™•ç†å™¨ï¼ˆRSP)外挂程å¼ï¼š" -#422# "å½±åƒå¤–挂程å¼ï¼š" -#423# "音效外挂程å¼ï¼š" -#424# "輸入設備外挂程å¼ï¼š" - -//Directory Dialog -#440# "外挂程å¼æ–‡ä»¶å¤¾ï¼š" -#441# "éŠæˆ²æª”文件夾:" -#442# "N64自動存檔:" -#443# "快存:" -#444# "ç•«é¢æŠ“å–:" -#445# "å‰æ¬¡éŠæˆ²æª”文件夾" -#446# "é¸æ“‡å¤–挂程å¼æ–‡ä»¶å¤¾" -#447# "é¸æ“‡éŠæˆ²æª”文件夾" -#448# "é¸æ“‡è‡ªå­˜æª”文件夾" -#449# "é¸æ“‡å¿«å­˜æª”文件夾" -#450# "é¸æ“‡æŠ“å–ç•«é¢å­˜æª”路徑" - -//Options Dialog -#460# "當跳離模擬器視窗時暫åœéŠæˆ²" -#461# "直接切æ›ç‚ºå…¨èž¢å¹•" -#462# "éš±è—進階設定" -#463# "自動記憶所é¸æ“‡ä½œå¼Šç¢¼" - -//Rom Browser Tab -#480# "最大éŠæˆ²æª”數記憶(最多å個):" -#481# "éŠæˆ²æª”" -#482# "最大éŠæˆ²æª”路徑數記憶(最多å個):" -#483# "路徑" -#484# "使用éŠæˆ²æª”ç€è¦½å™¨" -#485# "使用完整路徑å稱" -#486# "å¯ç”¨é¸é …:" -#487# "以此次åºé¡¯ç¤ºï¼š" -#488# "加入->" -#489# "<-刪除" -#490# "移上" -#491# "移下" - -//Advanced Options -#500# "除éžé‡æ–°å•Ÿå‹•æˆ–æ›´æ›éŠæˆ²æª”,å¦å‰‡å¤šæ•¸æ•ˆæžœå°‡ç„¡æ³•æ›´æ–°/顯示" -#501# "核心程å¼åˆå§‹è¨­å®š" -#502# "核心處ç†å™¨æ¨¡å¼ï¼š" -#503# "記憶體處ç†æ¨¡å¼ï¼š" -#504# "記憶體容é‡ï¼ˆåˆå§‹è¨­å®šï¼‰ï¼š" -#505# "ADVANCED BLOCK LINKING:" -#506# "打開éŠæˆ²æª”時自動開始進行模擬" -#507# "自動覆蓋INIåˆå§‹è¨­å®š" -#508# "自動壓縮快存檔" - -//Rom Options -#520# "核心處ç†å™¨æ¨¡å¼ï¼š" -#521# "記憶體處ç†æ¨¡å¼ï¼š" -#522# "記憶體容é‡ï¼š" -#523# "ADVANCED BLOCK LINKING:" -#524# "儲存模å¼ï¼š" -#525# "COUNTER FACTOR:" -#526# "LARGE COMPILE BUFFER" -#527# "使用TLB" -#528# "REGISTER CACHING" -#529# "æš«ç·©SI INTERRUPT" -#530# "SP HACK" -#531# "åˆå§‹è¨­å®š" - -//Core Styles -#540# "INTERPRETER" -#541# "RECOMPILER" -#542# "SYNCHRONISE CORES" - -//Self Mod Methods -#560# "NONE" -#561# "CACHE" -#562# "PROTECT MEMORY" -#563# "CHECK MEMORY & CACHE" -#564# "CHANGE MEMORY & CACHE" -#565# "CHECK MEMORY ADVANCED" - -//RDRAM Size -#580# "4 MB" -#581# "8 MB" - -//Advanced Block Linking -#600# "å•Ÿå‹•" -#601# "關閉" - -//Save Type -#620# "使用優先類型" -#621# "4KBIT EEPROM" -#622# "16KBIT EEPROM" -#623# "32KBYTES SRAM" -#624# "FLASHRAM" - -//Shell Integration Tab -#640# "連çµå‰¯æª”å:" - -//Rom Notes -#660# "éŠæˆ²æª”ç‹€æ³ï¼š" -#661# "核心程å¼å‚™æ³¨ï¼š" -#662# "外挂程å¼å‚™æ³¨ï¼š" - -/********************************************************************************* -* ROM Information * -*********************************************************************************/ -//Rom Info Title -#800# "éŠæˆ²æª”資訊" - -//Rom Info Text -#801# "éŠæˆ²å稱:" -#802# "檔案å稱:" -#803# "ä½ç½®ï¼š" -#804# "容é‡ï¼š" -#805# "éŠæˆ²æ¨™ç±¤ï¼š" -#806# "設計公å¸ï¼š" -#807# "國家:" -#808# "CRC1:" -#809# "CRC2:" -#810# "CIC CHIP:" - -/********************************************************************************* -* Cheats * -*********************************************************************************/ -//Cheat List -#1000# "作弊碼" -#1001# "作弊碼:" -#1002# "備注:" -#1003# "全部é¸æ“‡" -#1004# "全部ä¸é¸æ“‡" - -//Add Cheat -#1005# "加入作弊碼" -#1006# "å稱:" -#1007# "作弊碼:" -#1008# "增加" -#1009# "清除" -#1010# "作弊碼備注:" -#1011# "加入資料庫" -#1022# "加入作弊碼" -#1023# "新增作弊碼" -#1024# "〈ä½ç½®ã€‰ã€ˆæ•¸å€¼ã€‰" -#1025# "é¸é …:" -#1026# "〈ä½ç½®ã€‰ã€ˆæ•¸å€¼ã€‰" - -//Code extension -#1012# "進階碼" -#1013# "è«‹é¸æ“‡ä½¿ç”¨æ•¸å€¼ï¼š" -#1014# "確定" -#1015# "å–消" - -//Digital Value -#1016# "數據" -#1017# "請輸入數值:" -#1018# "數值" -#1019# "ç”±" -#1020# "至" -#1021# "備注:" - -//Edit Cheat -#1027# "作弊碼編輯" -#1028# "作弊碼更新" - -//Cheat Popup Menu -#1040# "新增作弊碼" -#1041# "編輯" -#1042# "刪除" - -/********************************************************************************* -* Messages * -*********************************************************************************/ -#2000# "*** æš«åœ ***" -#2001# "繼續" -#2002# "程å¼å‡ºç¾å¾ªç’°éŒ¯èª¤ï¼Œæ¨¡æ“¬å°‡åœæ­¢ã€‚ - -è«‹é‡æ–°è¨­å®šéŠæˆ²" -#2003# "æœç´¢è¨˜æ†¶ä½ç½®å¤±æ•—" -#2004# "å½±åƒå¤–挂程å¼éŒ¯èª¤ã€‚ - -請確èªæ˜¯å¦æœ‰ç³»çµ±æ‰€æ”¯æ´å¤–挂程å¼å­˜åœ¨" -#2005# "音效外挂程å¼éŒ¯èª¤ã€‚ - -請確èªæ˜¯å¦æœ‰ç³»çµ±æ‰€æ”¯æ´å¤–挂程å¼å­˜åœ¨" -#2006# "RSP外挂程å¼éŒ¯èª¤ã€‚ - -請確èªPROJECT64是å¦å®Œæ•´å®‰è£" -#2007# "輸入外挂程å¼éŒ¯èª¤ã€‚ - -請確èªæ˜¯å¦æœ‰ç³»çµ±æ‰€æ”¯æ´å¤–挂程å¼å­˜åœ¨" -#2008# "無法讀å–外挂程å¼ï¼š" -#2009# "無法讀å–。 - -請確èªéŠæˆ²æª”設定" -#2010# "無法讀å–存檔" -#2011# "無法讀å–EEPROM" -#2012# "無法讀å–FLASHRAM" -#2013# "無法讀å–MEMPAK" -#2014# "無法讀å–壓縮檔。 -請檢查壓縮檔狀æ³ã€‚ - -模擬器或許需è¦é‡æ–°å•Ÿå‹•" -#2015# "無法打開文件" -#2016# "打開壓縮檔出錯" -#2017# "此檔案為錯誤éŠæˆ²æª”。 - -請使用GOODN64確èª" -#2018# "資料ä¸æ˜Žï¼ˆåœ‹å®¶ï¼‰" -#2019# "資料ä¸æ˜Žï¼ˆCIC CHIP)" -#2020# "資料ä¸æ˜Žï¼ˆæª”案格å¼ï¼‰" -#2021# "資料ä¸æ˜Žï¼ˆè¨˜æ†¶é«”執行錯誤) - -模擬åœæ­¢" -#2022# "無法執行R4300i OPCODE" -#2023# "程å¼åŸ·è¡ŒéŒ¯èª¤ã€‚ - -請確èªéŠæˆ²æª”設定" -#2024# "此快存檔無法執行於此éŠæˆ²æª”。 - -快存檔必需使用於原本éŠæˆ²æª”,å€ç¢¼åŠç‰ˆæœ¬ä¹Ÿå¿…需相åŒã€‚ -強迫讀å–將造æˆç¨‹å¼ç„¡æ³•æ­£å¸¸åŸ·è¡Œã€‚ - -確定讀å–?" -#2025# "錯誤" -#2026# "版權資訊ä¸æ˜Žã€‚æ­¤éŠæˆ²æª”將無法正常執行。" -#2027# "æ‹·è²é˜²è­·å¤±æ•—" -#2028# "æ›´æ›å¤–挂程å¼å¾Œæ¨¡æ“¬å™¨å°‡é‡æ–°å•Ÿå‹•ã€‚ -如果您ä¸æƒ³å¤±åŽ»ç›®å‰éŠæˆ²é€²åº¦ï¼Œè«‹é¸æ“‡â€œå¦â€ä¸¦é€²è¡Œå¿«å­˜ã€‚ - -確定更æ›å¤–挂程å¼ï¼Ÿ" -#2029# "æ›´æ›å¤–挂程å¼" -#2030# "模擬çµæŸ" -#2031# "模擬開始" -#2032# "無法讀å–å¿«å­˜æ·å¾‘" -#2033# "讀å–å¿«å­˜æ·å¾‘" -#2034# "將目å‰é€²åº¦å„²å­˜æ–¼" -#2035# "å¿«å­˜çµæŸ" -#2036# "éŠæˆ²æª”ä½å…ƒæ›´æ›ï¼ˆBYTE SWAPPING IMAGE)" -#2037# "é¸æ“‡N64éŠæˆ²æª”" -#2038# "讀å–" -#2039# "讀å–éŠæˆ²æª”" -#2040# "外挂程å¼å°šæœªå•Ÿå‹•ï¼ŒéŠæˆ²æª”無法執行" -#2041# "確定刪除?" -#2042# "刪除作弊碼" -#2043# "此作弊碼å稱經已使用" -#2044# "æ­¤éŠæˆ²æª”已無法新增作弊碼" diff --git a/Lang/ChineseGB.pj.lang b/Lang/ChineseGB.pj.lang deleted file mode 100644 index 6880e44ef..000000000 --- a/Lang/ChineseGB.pj.lang +++ /dev/null @@ -1,426 +0,0 @@ -/********************************************************************************* -* What's New * -*********************************************************************************/ -//Alt+KEYS shortcut added (credit to mygod for pointing this out! Thanks) -//Review and minor mistake corrected - -/********************************************************************************* -* Meta Information * -*********************************************************************************/ -//About DLL -#1# "简体中文" -#2# "Maximus" -#3# "1.1" -#4# "10th September 2002" - -//About DLL Dialog -#5# "ç›®å‰è¯­æ–‡" -#6# "作者" -#7# "版本" -#8# "日期" -#9# "æµè§ˆç½‘页" -#10# "游æˆæ¡£èµ„料库(.RDB)" -#11# "作弊ç èµ„料库(.CHT)" -#12# "游æˆæ¡£è®¯æ¯èµ„料库(.RDX)" - -//About INI title -#20 # "关於INI" - -/********************************************************************************* -* Menu * -*********************************************************************************/ -//File Menu -#100# "文件 &F" -#101# "打开 &O" -#102# "讯æ¯... &I" -#103# "开始模拟" -#104# "结æŸæ¨¡æ‹Ÿ" -#105# "选择文件夹..." -#106# "刷新" -#107# "最近使用游æˆæ¡£" -#108# "最近使用游æˆæ¡£æ–‡ä»¶å¤¹" -#109# "离开 &X" - -//System Menu -#120# "系统 &S" -#121# "é‡æ–°å¯åŠ¨ &R" -#122# "æš‚åœ &P" -#123# "è¤å¹•æŠ“å–" -#124# "é™åˆ¶FPS" -#125# "储存 &S" -#126# "æ›´åå¦å­˜..." -#127# "è¯»å– &R" -#128# "读å–档案..." -#129# "快速存档 &T" -#130# "作弊ç ..." -#131# "作弊ç æŒ‰é’®" -#132# "继续" - -//Options Menu -#140# "设置 &O" -#141# "å…¨è¤å¹• &F" -#142# "å¸¸ç½®æ¡Œé¢ &T" -#143# "å½±åƒè®¾å®š..." -#144# "音效设定..." -#145# "输入设定..." -#146# "RSP设定..." -#147# "显示CPU使用率%" -#148# "设定... &S" - -//Debugger Menu -#160# "除错 &D" - -//Language Menu -#175# "语文 &L" - -//Help Menu -#180# "帮助 &H" -#181# "关於INI &I" -#182# "关於Project 64 &A" - -//Current Save Slot menu -#190# "åˆå§‹è®¾å®š" -#191# "å¿«å­˜æ·å¾„一" -#192# "å¿«å­˜æ·å¾„二" -#193# "å¿«å­˜æ·å¾„三" -#194# "å¿«å­˜æ·å¾„å››" -#195# "å¿«å­˜æ·å¾„五" -#196# "å¿«å­˜æ·å¾„å…­" -#197# "å¿«å­˜æ·å¾„七" -#198# "å¿«å­˜æ·å¾„å…«" -#199# "å¿«å­˜æ·å¾„ä¹" -#200# "å¿«å­˜æ·å¾„å" - -//Pop up Menu -#210# "执行游æˆ" -#211# "讯æ¯" -#212# "游æˆè®¾å®š" -#213# "作弊ç ç¼–辑" - -// Menu Descriptions -#250# "打开N64游æˆæ¡£" -#251# "显示N64游æˆæ¡£è®¯æ¯" -#252# "开始执行游æˆæ¨¡æ‹Ÿ" -#253# "åœæ­¢æ‰§è¡Œæ¸¸æˆæ¨¡æ‹Ÿ" -#254# "选择游æˆæ¡£æ–‡ä»¶å¤¹" -#255# "刷新游æˆæ¡£åˆ—示" -#256# "离开模拟器" -#257# "é‡æ–°å¯åŠ¨æ¸¸æˆæ¡£ï¼ˆå˜æ›´è®¾å®šï¼‰" -#258# "暂定/继续游æˆ" -#259# "抓å–游æˆç”»é¢" -#260# "é™åˆ¶FPS以å˜æ›´æ¨¡æ‹Ÿå™¨æ‰§è¡Œé€Ÿåº¦" -#261# "进行快速存档" -#262# "进行快速存档(快存æ·å¾„选择)" -#263# "读å–快存档" -#264# "读å–指定快存档" -#265# "å¯åŠ¨/关闭GAME SHARK作弊ç " -#266# "特殊作弊ç æŒ‰é’®" -#267# "å…¨è¤å¹•åˆ‡æ¢" -#268# "游æˆè§†çª—常置於桌é¢" -#269# "å˜æ›´å½±åƒè®¾å®š" -#270# "å˜æ›´éŸ³æ•ˆè®¾å®š" -#271# "å˜æ›´è¾“入设定" -#272# "å˜æ›´RSP设定" -#273# "显示目å‰å¤„ç†å™¨èµ„æº" -#274# "观看/å˜æ›´ç›®å‰ç³»ç»Ÿè®¾å®š" -#275# "观看使用手册" -#276# "观看常è§é—®é¢˜é›†" -#277# "关於INI" -#278# "关於程å¼" -#279# "打开此游æˆæ¡£" -#280# "选择此文件夹为指定文件夹" -#281# "å˜æ›´è¯­æ–‡è®¾å®š" -#282# "选择此快存æ·å¾„" -#283# "执行此游æˆæ¡£" -#284# "此游æˆæ¡£è®¯æ¯" -#285# "指定游æˆæ¡£è®¾å®š" -#286# "指定游æˆæ¡£ä½œå¼Šç è®¾å®š" - -/********************************************************************************* -* ROM Browser * -*********************************************************************************/ -//Rom Browser Fields -#300# "档案å" -#301# "游æˆå称" -#302# "正常游æˆæ¡£" -#303# "状况" -#304# "游æˆæ¡£å®¹é‡" -#305# "核心程å¼å¤‡æ³¨" -#306# "外挂程å¼å¤‡æ³¨" -#307# "使用者备注" -#308# "游æˆæ ‡ç­¾" -#309# "å‘行公å¸" -#310# "国家" -#311# "设计公å¸" -#312# "CRC1" -#313# "CRC2" -#314# "CIC CHIP" -#315# "å‘行日期" -#316# "类型" -#317# "玩家人数" - -//Select Rom -#320# "选择此游æˆæ¡£æ–‡ä»¶å¤¹" - -//Messages -#340# "此为问题游æˆæ¡£ï¼Ÿè¯·ä½¿ç”¨GOODN64确定或查阅最新版INI" - -/********************************************************************************* -* Option * -*********************************************************************************/ -//Options Title -#400# "设定" - -//Tabs -#401# "外挂程å¼" -#402# "文件夹" -#403# "选项" -#404# "游æˆæ¡£é€‰æ‹©" -#405# "进阶设定" -#406# "游æˆæ¡£è®¾å®š" -#407# "副档å连结" -#408# "游æˆæ¡£å¤‡æ³¨" - -//Plugin Dialog -#420# "关於" -#421# "åŒä½è®¯å·å¤„ç†å™¨ï¼ˆRSP)外挂程å¼ï¼š" -#422# "å½±åƒå¤–挂程å¼ï¼š" -#423# "音效外挂程å¼ï¼š" -#424# "输入设备外挂程å¼ï¼š" - -//Directory Dialog -#440# "外挂程å¼æ–‡ä»¶å¤¹ï¼š" -#441# "游æˆæ¡£æ–‡ä»¶å¤¹ï¼š" -#442# "N64自动存档:" -#443# "快存:" -#444# "ç”»é¢æŠ“å–:" -#445# "å‰æ¬¡æ¸¸æˆæ¡£æ–‡ä»¶å¤¹" -#446# "选择外挂程å¼æ–‡ä»¶å¤¹" -#447# "选择游æˆæ¡£æ–‡ä»¶å¤¹" -#448# "选择自存档文件夹" -#449# "选择快存档文件夹" -#450# "选择抓å–ç”»é¢å­˜æ¡£è·¯å¾„" - -//Options Dialog -#460# "当跳离模拟器视窗时暂åœæ¸¸æˆ" -#461# "直接切æ¢ä¸ºå…¨è¤å¹•" -#462# "éšè—进阶设定" -#463# "自动记忆所选择作弊ç " - -//Rom Browser Tab -#480# "最大游æˆæ¡£æ•°è®°å¿†ï¼ˆæœ€å¤šå个):" -#481# "游æˆæ¡£" -#482# "最大游æˆæ¡£è·¯å¾„数记忆(最多å个):" -#483# "路径" -#484# "使用游æˆæ¡£æµè§ˆå™¨" -#485# "使用完整路径å称" -#486# "å¯ç”¨é€‰é¡¹ï¼š" -#487# "以此次åºæ˜¾ç¤ºï¼š" -#488# "加入->" -#489# "<-删除" -#490# "移上" -#491# "移下" - -//Advanced Options -#500# "除éžé‡æ–°å¯åŠ¨æˆ–æ›´æ¢æ¸¸æˆæ¡£ï¼Œå¦åˆ™å¤šæ•°æ•ˆæžœå°†æ— æ³•æ›´æ–°/显示" -#501# "核心程å¼åˆå§‹è®¾å®š" -#502# "核心处ç†å™¨æ¨¡å¼ï¼š" -#503# "记忆体处ç†æ¨¡å¼ï¼š" -#504# "记忆体容é‡ï¼ˆåˆå§‹è®¾å®šï¼‰ï¼š" -#505# "ADVANCED BLOCK LINKING:" -#506# "打开游æˆæ¡£æ—¶è‡ªåŠ¨å¼€å§‹è¿›è¡Œæ¨¡æ‹Ÿ" -#507# "自动覆盖INIåˆå§‹è®¾å®š" -#508# "自动压缩快存档" - -//Rom Options -#520# "核心处ç†å™¨æ¨¡å¼ï¼š" -#521# "记忆体处ç†æ¨¡å¼ï¼š" -#522# "记忆体容é‡ï¼š" -#523# "ADVANCED BLOCK LINKING:" -#524# "储存模å¼ï¼š" -#525# "COUNTER FACTOR:" -#526# "LARGE COMPILE BUFFER" -#527# "使用TLB" -#528# "REGISTER CACHING" -#529# "暂缓SI INTERRUPT" -#530# "SP HACK" -#531# "åˆå§‹è®¾å®š" - -//Core Styles -#540# "INTERPRETER" -#541# "RECOMPILER" -#542# "SYNCHRONISE CORES" - -//Self Mod Methods -#560# "NONE" -#561# "CACHE" -#562# "PROTECT MEMORY" -#563# "CHECK MEMORY & CACHE" -#564# "CHANGE MEMORY & CACHE" -#565# "CHECK MEMORY ADVANCED" - -//RDRAM Size -#580# "4 MB" -#581# "8 MB" - -//Advanced Block Linking -#600# "å¯åŠ¨" -#601# "关闭" - -//Save Type -#620# "使用优先类型" -#621# "4KBIT EEPROM" -#622# "16KBIT EEPROM" -#623# "32KBYTES SRAM" -#624# "FLASHRAM" - -//Shell Integration Tab -#640# "连结副档å:" - -//Rom Notes -#660# "游æˆæ¡£çŠ¶å†µï¼š" -#661# "核心程å¼å¤‡æ³¨ï¼š" -#662# "外挂程å¼å¤‡æ³¨ï¼š" - -/********************************************************************************* -* ROM Information * -*********************************************************************************/ -//Rom Info Title -#800# "游æˆæ¡£èµ„讯" - -//Rom Info Text -#801# "游æˆå称:" -#802# "档案å称:" -#803# "ä½ç½®ï¼š" -#804# "容é‡ï¼š" -#805# "游æˆæ ‡ç­¾ï¼š" -#806# "设计公å¸ï¼š" -#807# "国家:" -#808# "CRC1:" -#809# "CRC2:" -#810# "CIC CHIP:" - -/********************************************************************************* -* Cheats * -*********************************************************************************/ -//Cheat List -#1000# "作弊ç " -#1001# "作弊ç ï¼š" -#1002# "备注:" -#1003# "全部选择" -#1004# "全部ä¸é€‰æ‹©" - -//Add Cheat -#1005# "加入作弊ç " -#1006# "å称:" -#1007# "作弊ç ï¼š" -#1008# "增加" -#1009# "清除" -#1010# "作弊ç å¤‡æ³¨ï¼š" -#1011# "加入资料库" -#1022# "加入作弊ç " -#1023# "新增作弊ç " -#1024# "〈ä½ç½®ã€‰ã€ˆæ•°å€¼ã€‰" -#1025# "选项:" -#1026# "〈ä½ç½®ã€‰ã€ˆæ•°å€¼ã€‰" - -//Code extension -#1012# "进阶ç " -#1013# "请选择使用数值:" -#1014# "确定" -#1015# "å–消" - -//Digital Value -#1016# "æ•°æ®" -#1017# "请输入数值:" -#1018# "数值" -#1019# "ç”±" -#1020# "至" -#1021# "备注:" - -//Edit Cheat -#1027# "作弊ç ç¼–辑" -#1028# "作弊ç æ›´æ–°" - -//Cheat Popup Menu -#1040# "新增作弊ç " -#1041# "编辑" -#1042# "删除" - -/********************************************************************************* -* Message * -*********************************************************************************/ -#2000# "*** æš‚åœ ***" -#2001# "继续" -#2002# "程å¼å‡ºçŽ°å¾ªçŽ¯é”™è¯¯ï¼Œæ¨¡æ‹Ÿå°†åœæ­¢ã€‚ - -请é‡æ–°è®¾å®šæ¸¸æˆ" -#2003# "æœç´¢è®°å¿†ä½ç½®å¤±è´¥" -#2004# "å½±åƒå¤–挂程å¼é”™è¯¯ã€‚ - -请确认是å¦æœ‰ç³»ç»Ÿæ‰€æ”¯æ´å¤–挂程å¼å­˜åœ¨" -#2005# "音效外挂程å¼é”™è¯¯ã€‚ - -请确认是å¦æœ‰ç³»ç»Ÿæ‰€æ”¯æ´å¤–挂程å¼å­˜åœ¨" -#2006# "RSP外挂程å¼é”™è¯¯ã€‚ - -请确认PROJECT64是å¦å®Œæ•´å®‰è£…" -#2007# "输入外挂程å¼é”™è¯¯ã€‚ - -请确认是å¦æœ‰ç³»ç»Ÿæ‰€æ”¯æ´å¤–挂程å¼å­˜åœ¨" -#2008# "无法读å–外挂程å¼ï¼š" -#2009# "无法读å–。 - -请确认游æˆæ¡£è®¾å®š" -#2010# "无法读å–存档" -#2011# "无法读å–EEPROM" -#2012# "无法读å–FLASHRAM" -#2013# "无法读å–MEMPAK" -#2014# "无法读å–压缩档。 -请检查压缩档状况。 - -模拟器或许需è¦é‡æ–°å¯åŠ¨" -#2015# "无法打开文件" -#2016# "打开压缩档出错" -#2017# "此档案为错误游æˆæ¡£ã€‚ - -请使用GOODN64确认" -#2018# "资料ä¸æ˜Žï¼ˆå›½å®¶ï¼‰" -#2019# "资料ä¸æ˜Žï¼ˆCIC CHIP)" -#2020# "资料ä¸æ˜Žï¼ˆæ¡£æ¡ˆæ ¼å¼ï¼‰" -#2021# "资料ä¸æ˜Žï¼ˆè®°å¿†ä½“执行错误) - -模拟åœæ­¢" -#2022# "无法执行R4300I OPCODE" -#2023# "程å¼æ‰§è¡Œé”™è¯¯ã€‚ - -请确认游æˆæ¡£è®¾å®š" -#2024# "此快存档无法执行於此游æˆæ¡£ã€‚ - -快存档必需使用於原本游æˆæ¡£ï¼ŒåŒºç åŠç‰ˆæœ¬ä¹Ÿå¿…需相åŒã€‚ -强迫读å–将造æˆç¨‹å¼æ— æ³•æ­£å¸¸æ‰§è¡Œã€‚ - -确定读å–?" -#2025# "错误" -#2026# "版æƒèµ„讯ä¸æ˜Žã€‚此游æˆæ¡£å°†æ— æ³•æ­£å¸¸æ‰§è¡Œã€‚" -#2027# "æ‹·è´é˜²æŠ¤å¤±è´¥" -#2028# "æ›´æ¢å¤–挂程å¼åŽæ¨¡æ‹Ÿå™¨å°†é‡æ–°å¯åŠ¨ã€‚ -如果您ä¸æƒ³å¤±åŽ»ç›®å‰æ¸¸æˆè¿›åº¦ï¼Œè¯·é€‰æ‹©â€œå¦â€å¹¶è¿›è¡Œå¿«å­˜ã€‚ - -确定更æ¢å¤–挂程å¼ï¼Ÿ" -#2029# "æ›´æ¢å¤–挂程å¼" -#2030# "模拟结æŸ" -#2031# "模拟开始" -#2032# "无法读å–å¿«å­˜æ·å¾„" -#2033# "读å–å¿«å­˜æ·å¾„" -#2034# "将目å‰è¿›åº¦å‚¨å­˜æ–¼" -#2035# "快存结æŸ" -#2036# "游æˆæ¡£ä½å…ƒæ›´æ¢ï¼ˆBYTE SWAPPING IMAGE)" -#2037# "选择N64游æˆæ¡£" -#2038# "读å–" -#2039# "读å–游æˆæ¡£" -#2040# "外挂程å¼å°šæœªå¯åŠ¨ï¼Œæ¸¸æˆæ¡£æ— æ³•æ‰§è¡Œ" -#2041# "确定删除?" -#2042# "删除作弊ç " -#2043# "此作弊ç å称ç»å·²ä½¿ç”¨" -#2044# "此游æˆæ¡£å·²æ— æ³•æ–°å¢žä½œå¼Šç " diff --git a/Lang/Czech.pj.Lang b/Lang/Czech.pj.Lang index 6b091659c..f43ab53e2 100644 --- a/Lang/Czech.pj.Lang +++ b/Lang/Czech.pj.Lang @@ -2,7 +2,7 @@ * Meta Information * *********************************************************************************/ //About DLL -#1 # "èeský" // LANGUAGE ID +#1 # "ÄeÅ¡tina" // LANGUAGE ID #2 # "Milan Hrubý (hruby@email.cz)" // Author #3 # "1.5.3" // Version #4 # "2002-09-13" // Date @@ -131,9 +131,9 @@ #286# "Edituje cheaty v CHT souboru pro vybranou hru" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Název souboru" #301# "Vnitøní název" #302# "Øádný název" @@ -153,7 +153,7 @@ #316# "Žánr" #317# "Hráèi" -//Select Rom +//Select ROM #320# "Nastavte ROM složku pro ROM prohlížeè" //Messages @@ -201,7 +201,7 @@ #462# "&Skrýt pokroèilé nastavení (doporuèeno)" #463# "Pamatovat si vyb&rané cheaty pro hry" -//Rom Browser Tab +//ROM Browser Tab #480# "&Poèet ROM k zapamatování (0-10)" #481# "ROM" #482# "Poèet slože&k ROM k zapamatování (0-10)" @@ -227,7 +227,7 @@ RDB není pøítomno nebo volba dole 'pøepsat' je nezaÅ¡krtnutá" #507# "Pøepsat tat&o standardní nastavení údaji z RDB" #508# "&Komprimovat vÅ¡echna stavová ukládáni do zipu" -//Rom Options +//ROM Options #520# "R4300i &jádro:" #521# "&Samo-mod. kódovací metoda:" #522# "RDRA&M velikost:" @@ -264,15 +264,15 @@ RDB není pøítomno nebo volba dole 'pøepsat' je nezaÅ¡krtnutá" //Save Type #620# "* detek. první užívaný typ" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbajtù SRAM" -#624# "128kbajtù FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbajtù SRAM" +#624# "128-kbajtù flash RAM" //Shell Intergration Tab #640# "S Project64 asociovat soubory" -//Rom Notes +//ROM Notes #660# "&Stav:" #661# "P&oznámka jádra:" #662# "&Poznámka pluginu:" @@ -280,10 +280,10 @@ RDB není pøítomno nebo volba dole 'pøepsat' je nezaÅ¡krtnutá" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "ROM informace" -//Rom Info Text +//ROM Info Text #801# "Vnitøní název" #802# "Název souboru" #803# "Umístìní" @@ -370,15 +370,15 @@ Zkontrolujte, že máte alespoò jeden kompatibilní plugin soubor v plugin slo Ovìøuji ROM a její nastavení." #2010# "Selhalo otevøení uloženého souboru stavu" #2011# "Selhalo otevøení EEPROM" -#2012# "Selhalo otevøení FlashRAM" -#2013# "Selhalo otevøení MemPaku" +#2012# "Selhalo otevøení flash RAM" +#2013# "Selhalo otevøení mempaku" #2014# "Pokus otevøít zip soubor selhal. Chybìjící nebo poÅ¡kozený zip soubor - zkontrolujte cestu a soubor. Možná budete muset restartovat aplikaci." #2015# "Pokus otevøít soubor selhal." #2016# "Pøi pokusu otevøít zip soubor nastala chyba." -#2017# "Nahraný soubor se nezdá být platnou Nintendo64 ROM. +#2017# "Nahraný soubor se nezdá být platnou Nintendo 64 ROM. Provìøte Váš ROM s GoodN64." #2018# "Neznámá zemì" diff --git a/Lang/Danish.pj.Lang b/Lang/Danish.pj.Lang index 1583d7911..89e55cb11 100644 --- a/Lang/Danish.pj.Lang +++ b/Lang/Danish.pj.Lang @@ -131,9 +131,9 @@ #286# "Skift Snyd i snyd filen for det hentede spil" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Filnavn" #301# "Internt Navn" #302# "GoodN64 Navn" @@ -141,7 +141,7 @@ #304# "Spillets størrelse" #305# "Kerne Note" #306# "Indsats Note" -#307# "Noter (Bruger)" +#307# "Noter (bruger)" #308# "Kassette ID" #309# "Bagmand" #310# "Region" @@ -153,7 +153,7 @@ #316# "Genre" #317# "Spillere" -//Select Rom +//Select ROM #320# "Indstil spil søgeren til din valgte spil folder" //Messages @@ -201,7 +201,7 @@ #462# "Skjul avancerede indstillinger (Anbefales)" #463# "Husk valgte snyde-koder til spil" -//Rom Browser Tab +//ROM Browser Tab #480# "&Antal af spil som skal huskes (0-10)" #481# "Spil" #482# "Antal af spil og &foldere som skal huskes (0-10)" @@ -226,7 +226,7 @@ #507# "&Overskriv disse standard indstillinger med dem fra RDB'en" #508# "&Pak alle gemte spilstadier" -//Rom Options +//ROM Options #520# "R4300i Kerne:" #521# "Selv-mod. &kode metode:" #522# "RDRA&M størrelse:" @@ -271,7 +271,7 @@ //Shell Intergration Tab #640# "Filer der skal forbindes med Project64" -//Rom Notes +//ROM Notes #660# "Status:" #661# "Kerne Noter:" #662# "Udvidelses Noter:" @@ -279,10 +279,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "ROM information" -//Rom Info Text +//ROM Info Text #801# "Internt Navn" #802# "Fil Navn" #803# "Sted" @@ -419,5 +419,3 @@ Vil du skifte udvidelse og genstarte spillet?" #2042# "Slet Snyd" #2043# "Snyd navn allerede i brug, vælg venligst et andet" #2044# "Du har nÃ¥et maksimum af snyd du kan anvende pr spil" - - diff --git a/Lang/Dutch.pj.Lang b/Lang/Dutch.pj.Lang index 36e678c31..e53d95210 100644 --- a/Lang/Dutch.pj.Lang +++ b/Lang/Dutch.pj.Lang @@ -15,7 +15,7 @@ #9 # "Bezoek webpagina" #10 # "ROM Database (.RDB)" #11 # "Code bestand (.CHT)" -#12 # "Secundaire rom informatie (.RDX)" +#12 # "Secundaire ROM informatie (.RDX)" //About INI title #20 # "Over INI Files" @@ -25,14 +25,14 @@ *********************************************************************************/ //File Menu #100# "File" -#101# "Open Rom" -#102# "Rom &Info...." +#101# "Open ROM" +#102# "ROM &Info...." #103# "Start Emulatie" #104# "Stop Emulatie" -#105# "Kies Rom Directory..." -#106# "Vernieuw Rom Lijst" -#107# "Recente geopende Rom" -#108# "Recente Rom Directoires" +#105# "Kies ROM Directory..." +#106# "Vernieuw ROM Lijst" +#107# "Recente geopende ROM" +#108# "Recente ROM Directoires" #109# "Sluiten" //System Menu @@ -87,20 +87,20 @@ //Pop up Menu #210# "Speel spel" -#211# "Rom Informatie" +#211# "ROM Informatie" #212# "Verander Spel Instellingen" #213# "Verander Codes" // Menu Descriptions -#250# "Open een N64 rom bestand" -#251# "Geef informatie weer over het geladen rom bestand" -#252# "Start emulatie van het geladen rom bestand" -#253# "Stop emulatie van het geladen rom bestand" -#254# "Selecteer Rom Directory" -#255# "Vernieuw de huidige rom lijst" +#250# "Open een N64 ROM bestand" +#251# "Geef informatie weer over het geladen ROM bestand" +#252# "Start emulatie van het geladen ROM bestand" +#253# "Stop emulatie van het geladen ROM bestand" +#254# "Selecteer ROM Directory" +#255# "Vernieuw de huidige ROM lijst" #256# "Sluit dit programma" -#257# "Herstart de huidige rom (Herlaad de veranderde instellingen)" -#258# "Pauze/Hervat de emulatie van de geladen rom" +#257# "Herstart de huidige ROM (Herlaad de veranderde instellingen)" +#258# "Pauze/Hervat de emulatie van de geladen ROM" #259# "Genereer een Bitmap Plaatje van het huidige scherm" #260# "Beperk de FPS tot die van de normale N64" #261# "Maak een instantie van het huidige systeem voor een quick save" @@ -121,8 +121,8 @@ #276# "Geef de faq van het programma weer" #277# "Over het programma en de auteurs" #278# "over de auteurs van de ondersteunings bestanden" -#279# "Open het laatst geopende rom bestand" -#280# "Kies deze map als rom map" +#279# "Open het laatst geopende ROM bestand" +#280# "Kies deze map als ROM map" #281# "Laat de applicatie deze taal gebruiken" #282# "Kies deze snelle save locatie" #283# "Speel het geselecteerde spel" @@ -131,17 +131,17 @@ #286# "Verander de codes voor het geselecteerde spel" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Bestandsnaam" #301# "Interne naam" #302# "Goede naam" #303# "Status" -#304# "Rom Grootte" -#305# "Notities (Core)" -#306# "Notities (Standaard Plugins)" -#307# "Notities (Gebruiker)" +#304# "ROM Grootte" +#305# "Notities (core)" +#306# "Notities (standaard plugins)" +#307# "Notities (gebruiker)" #308# "Cartridge ID" #309# "Fabrikant" #310# "Land" @@ -153,8 +153,8 @@ #316# "Genre" #317# "Spelers" -//Select Rom -#320# "Selecteer de huidige rom directory" +//Select ROM +#320# "Selecteer de huidige ROM directory" //Messages #340# "Slechte ROM? Gebruik GoodN64 & kijk voor een geüpdate INI" @@ -169,11 +169,11 @@ #401# "Plugins" #402# "Mappen" #403# "Opties" -#404# "Rom Selectie" +#404# "ROM Selectie" #405# "Geavanceerd" -#406# "Rom Instellingen" +#406# "ROM Instellingen" #407# "Shell Intergratie" -#408# "Rom Notities" +#408# "ROM Notities" //Plugin Dialog #420# "Over" @@ -184,30 +184,30 @@ //Directory Dialog #440# " Plugin Map:: " -#441# " Rom Map: " +#441# " ROM Map: " #442# " N64 Automatische saves: " #443# " Instant saves: " #444# " Screen Shots: " -#445# "Laatste map waaruit een rom is geopend" +#445# "Laatste map waaruit een ROM is geopend" #446# "Selecteer Plugin map" -#447# "Selecteer Rom map" +#447# "Selecteer ROM map" #448# "Selecteer Automatische save map" #449# "Selecteer Instant save map" #450# "Selecteer snap shot map" //Options Dialog #460# "Pauzeer emulatie wanneer de applicatie niet actief is?" -#461# "Ga bij het laden van een rom naar volledig scherm" +#461# "Ga bij het laden van een ROM naar volledig scherm" #462# "Verberg geavanceerde instellingen" #463# "Onthoud geselecteerde codes" -//Rom Browser Tab -#480# "Maximale # onthouden roms (Max 10):" -#481# "roms" +//ROM Browser Tab +#480# "Maximale # onthouden ROMs (Max 10):" +#481# "ROMs" #482# "Maximale # onthouden mappen (Max 10):" #483# "mappen" -#484# "Gebruik de Rom Browser" -#485# "Gebruik Directory recursion" +#484# "Gebruik de ROM Browser" +#485# "Gebruik directory recursion" #486# "Beschikbare velden:" #487# "Geef velden in deze volgorde weer:" #488# "Voeg toe ->" @@ -216,17 +216,17 @@ #491# "Naar beneden" //Advanced Options -#500# "Het meest van deze veranderingen worden pas gebruikt als een rom opnieuw wordt geladen of wordt gereset." +#500# "Het meest van deze veranderingen worden pas gebruikt als een ROM opnieuw wordt geladen of wordt gereset." #501# "Core Standaard" #502# "CPU core stijl:" #503# "Self-mod code methode:" #504# "Normale geheugen grootte:" #505# "Geavanceerde Block Linking:" -#506# "Start Emulatie als een rom wordt geopend?" +#506# "Start Emulatie als een ROM wordt geopend?" #507# "Schrijf de instellingen van de ini over met de standaard?" #508# "Comprimeer de instant saves" -//Rom Options +//ROM Options #520# "CPU core stijl:" #521# "Self-modifying code Methode:" #522# "Geheugen grootte:" @@ -263,30 +263,30 @@ //Save Type #620# "Gebruik de eerst gebruikte save" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" +#621# "4kbit EEPROM" +#622# "16kbit EEPROM" #623# "32kbytes SRAM" #624# "Flashram" //Shell Integration Tab #640# "Bestands extensie associatie:" -//Rom Notes -#660# "Rom Status:" +//ROM Notes +#660# "ROM Status:" #661# "Core Notitie:" #662# "Plugin Notitie:" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Titel -#800# "Rom Informatie" +//ROM Info Titel +#800# "ROM Informatie" -//Rom Info Text +//ROM Info Text #801# "ROM Naam:" #802# "Bestands Naam:" #803# "Locatie:" -#804# "Rom Grootte:" +#804# "ROM Grootte:" #805# "Cartridge ID:" #806# "Fabrikant:" #807# "Land:" @@ -346,10 +346,10 @@ *********************************************************************************/ #2000# "*** CPU GEPAUZEERD ***" #2001# "CPU Hervat" -#2002# "Vast in een oneindige cirkel wat niet kan worden onderbroken (Meestal slechte rom). +#2002# "Vast in een oneindige cirkel wat niet kan worden onderbroken (Meestal slechte ROM). De emulatie stopt nu. -Bekijk de rom instellingen en check de rom met Goodn64" +Bekijk de ROM instellingen en check de ROM met Goodn64" #2003# "Gefaald om het geheugen te lokaliseren" #2004# "De standaard video plugin mist of is beschadigd. @@ -370,19 +370,19 @@ En kijk of je in ieder geval 1 compatible plugin in de plugin map heb." #2008# "Gefaald om de plugin te laden:" #2009# "Gefaald om het woord te laden -Bekijk de rom instellingen en check de rom met Goodn64." +Bekijk de ROM instellingen en check de ROM met Goodn64." #2010# "Gefaald om het Save bestand te openen" -#2011# "Gefaald om de Eeprom te openen" +#2011# "Gefaald om de EEPROM te openen" #2012# "Gefaald het Flashram te openen" #2013# "Gefaald om de Memory pack te openen" #2014# "Poging om het zip bestand te openen gefaald. -Schijnbaar een beschadigd zip bestand - Probeer de rom handmatig te unzippen." +Schijnbaar een beschadigd zip bestand - Probeer de ROM handmatig te unzippen." #2015# "Poging om het bestand te openen gefaald." #2016# "Het openen van het zip bestand roepte 1 of meerdere fouten op." -#2017# "Het geladen bestand blijkt geen goed N64 rom te zijn. +#2017# "Het geladen bestand blijkt geen goed N64 ROM te zijn. -Kijk met Goodn64 of het een goede rom is." +Kijk met Goodn64 of het een goede ROM is." #2018# "Onbekend land" #2019# "Onbekende Cic Chip" #2020# "Onbekend bestands formaat" @@ -392,15 +392,15 @@ Emulatie stopt nu" #2022# "Unhandled R4300i OpCode bij" #2023# "Voer uit van een niet gemapte ruimte. -Check de rom instellingen." -#2024# "De save state is niet gemaakt met de huidige rom en kan dus niet worden gebruikt +Check de ROM instellingen." +#2024# "De save state is niet gemaakt met de huidige ROM en kan dus niet worden gebruikt en de emulator zal crashen als je door ging Weet je zeker dan je de state toch wilt laden?" #2025# "Fout" #2026# "Er is een Copyright gevonden op LUT. Het spel zal niet langer functioneren." #2027# "Kopieer bescherming gefaald" -#2028# "Het veranderen van plugin vereist Project 64 om de rom te herstarten. +#2028# "Het veranderen van plugin vereist Project 64 om de ROM te herstarten. Als je dat niet wilt kies dan nee en maak een save state. Verander de plugins en herstart het spel?" @@ -415,8 +415,8 @@ Verander de plugins en herstart het spel?" #2037# "Kies een N64 image" #2038# "Geladen" #2039# "Bezig met het laden van de image" -#2040# "Kan de rom niet laden omdat 1 van de plugins niet goed is geinitialiseerd" +#2040# "Kan de ROM niet laden omdat 1 van de plugins niet goed is geinitialiseerd" #2041# "Weet je zeker dat je dit wilt verwijderen?" #2042# "Verwijder code" #2043# "Code naam wordt al gebruikt" -#2044# "Je heb het maximum toe te voegen aantal codes per rom bereikt" +#2044# "Je heb het maximum toe te voegen aantal codes per ROM bereikt" diff --git a/Lang/English.pj.Lang b/Lang/English.pj.Lang index e7e4a5fa8..db147233f 100644 --- a/Lang/English.pj.Lang +++ b/Lang/English.pj.Lang @@ -14,25 +14,25 @@ #8 # "Date" #9 # "Visit Home Page" #10 # "ROM Database (.RDB)" -#11 # "Cheat Code file (.CHT)" -#12 # "Extended Rom Info (.RDX)" +#11 # "Cheat Code File (.CHT)" +#12 # "Extended ROM Info (.RDX)" //About INI title -#20 # "About INI Files" +#20 # "About Config Files" /********************************************************************************* * Menu * *********************************************************************************/ //File Menu #100# "&File" -#101# "&Open Rom" -#102# "Rom &Info...." +#101# "&Open ROM" +#102# "ROM &Info...." #103# "Start Emulation" #104# "&End Emulation" -#105# "Choose Rom Directory..." -#106# "Refresh Rom List" -#107# "Recent Rom" -#108# "Recent Rom Directories" +#105# "Choose ROM Directory..." +#106# "Refresh ROM List" +#107# "Recent ROM" +#108# "Recent ROM Directories" #109# "E&xit" //System Menu @@ -41,9 +41,9 @@ #122# "&Pause" #123# "Generate Bitmap" #124# "Limit FPS" -#125# "&Save" +#125# "&Save State" #126# "Save As..." -#127# "&Restore" +#127# "&Load State" #128# "Load..." #129# "Current Save S&tate" #130# "Cheats..." @@ -55,12 +55,12 @@ //Options Menu #140# "&Options" #141# "&Full Screen" -#142# "&Always On &Top" +#142# "&Always on &Top" #143# "Configure Graphics Plugin..." #144# "Configure Audio Plugin..." #145# "Configure Controller Plugin..." #146# "Configure RSP Plugin..." -#147# "Show CPU usage %" +#147# "Show CPU Usage" #148# "&Settings..." //Debugger Menu @@ -71,8 +71,8 @@ //Help Menu #180# "&Help" -#181# "About &INI Files" -#182# "&About Project 64" +#181# "About Conf&ig Files" +#182# "&About Project64" #183# "Support &Forum" #184# "&Homepage" @@ -91,13 +91,13 @@ //Pop up Menu #210# "Play Game" -#211# "Rom Information" +#211# "ROM Information" #212# "Edit Game Settings" #213# "Edit Cheats" -#214# "GFX Plugin" +#214# "Graphics Plugin" //Alternate Name to save Slot -#220# "Default" +#220# "Save Slot - Default" #221# "Save Slot - 1" #222# "Save Slot - 2" #223# "Save Slot - 3" @@ -110,56 +110,56 @@ #230# "Save Slot - 10" // Menu Descriptions -#250# "Open a N64 rom image" -#251# "Display Information about the loaded image" -#252# "Start Emulation of the loaded rom image" -#253# "Stop Emulation of the loaded rom image" -#254# "Select Rom Directory" -#255# "Refresh Current list of ROMs in the ROM Browser" +#250# "Open a N64 ROM image" +#251# "Display information about the loaded image" +#252# "Start emulation of the loaded ROM image" +#253# "Stop emulation of the loaded ROM image" +#254# "Select ROM directory" +#255# "Refresh current list of ROMs in the ROM browser" #256# "Exit this application" -#257# "Reboot the current rom image (reload any settings changes)" -#258# "Pause/Resume emulation of the current running rom" -#259# "Generate a Bitmap image of the current Screen" -#260# "Limit FPS to the correct speed of the n64" -#261# "Create a instant of the current system for quick save" -#262# "Create a instant of the current system with selecting file location" -#263# "Load a quick instant save" -#264# "Choose an instant save file to load" -#265# "Enable/Disable Game shark cheats" -#266# "Game shark button is used with specific cheats" -#267# "Change emulation from window mode to full screen" +#257# "Reboot the current ROM image (reload any settings changes)" +#258# "Pause/resume emulation of the current running ROM" +#259# "Generate a bitmap image of the current screen" +#260# "Limit FPS to the correct speed of the N64" +#261# "Save the current system state" +#262# "Save the current system state in a selected file location" +#263# "Load the saved system state" +#264# "Choose a saved system state file to load" +#265# "Enable/disable GameShark cheats" +#266# "GameShark button is used with specific cheats." +#267# "Change emulation from windowed to full-screen mode." #268# "Make window stay on top of all other windows" -#269# "Change settings inside the Graphics plugin" -#270# "Change settings inside the Audio plugin" -#271# "Change settings inside the Controller plugin (i.e. set keys)" +#269# "Change settings inside the graphics plugin" +#270# "Change settings inside the audio plugin" +#271# "Change settings inside the controller plugin (i.e. set keys)" #272# "Change settings inside the RSP plugin" #273# "Show the CPU usage of the emulator split over different resources" -#274# "View/Change settings for this application" -#275# "View Manual for application" +#274# "View/change settings for this application" +#275# "View manual for application" #276# "View FAQ for application" -#278# "About the application and Authors" -#277# "About the Authors of the support files" -#279# "Open this previous opened ROM image" -#280# "Choose this directory as your rom directory" -#281# "Change Application to using this language" -#282# "Choose this quick save location" +#278# "About the application and authors" +#277# "About the authors of the support files" +#279# "Open this previously opened ROM image" +#280# "Choose this directory as your ROM directory" +#281# "Change application to using this language" +#282# "Choose this save location for the saved state" #283# "Play selected game" #284# "Information about selected game" -#285# "Edit Settings for selected game" +#285# "Edit settings for selected game" #286# "Edit cheats for selected game" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "File Name" #301# "Internal Name" #302# "Good Name" #303# "Status" -#304# "Rom Size" -#305# "Notes (Core)" +#304# "ROM Size" +#305# "Notes (core)" #306# "Notes (default plugins)" -#307# "Notes (User)" +#307# "Notes (user)" #308# "Cartridge ID" #309# "Manufacturer" #310# "Country" @@ -173,11 +173,11 @@ #318# "Force Feedback" #319# "File Format" -//Select Rom -#320# "Select current Rom Directory" +//Select ROM +#320# "Select current ROM directory" //Messages -#340# "Bad ROM? Use GoodN64 & check for updated INI" +#340# "Bad ROM? Use GoodN64 & check for updated RDB" /********************************************************************************* * Options * @@ -189,7 +189,7 @@ #401# "Plugins" #402# "Directories" #403# "Options" -#404# "Rom Selection" +#404# "ROM Selection" #405# "Advanced" #406# "General Settings" #407# "Shell Integration" @@ -200,45 +200,46 @@ //Plugin Dialog #420# "About" -#421# " RSP (reality signal processor) plugin: " +#421# " RSP (Reality Signal Processor) plugin: " #422# " Video (graphics) plugin: " #423# " Audio (sound) plugin: " #424# " Input (controller) plugin: " -#425# "Use High Level GFX?" -#426# "Use High Level Audio?" +#425# "Graphics HLE" +#426# "Audio HLE" #427# "** Use System Plugin **" //Directory Dialog -#440# " Plugin Directory:: " -#441# " Rom Directory: " -#442# " N64 Auto saves: " -#443# " Instant saves: " -#444# " Screen Shots: " -#445# "Last folder that a rom was open from." +#440# " Plugin directory: " +#441# " ROM directory: " +#442# " N64 native saves directory: " +#443# " Saved states directory: " +#444# " Screenshot directory: " +#445# "Last folder that a ROM was open from" #446# "Select plugin directory" -#447# "Select rom directory" -#448# "Select automatic save directory" -#449# "Select instant save directory" -#450# "Select snap shot directory" -#451# " Texture Directory: " +#447# "Select ROM directory" +#448# "Select N64 native saves directory" +#449# "Select saved states directory" +#450# "Select screenshot directory" +#451# " Texture pack directory: " #452# "Select texture pack directory" //Options (general) Tab -#460# "Pause emulation when window is not active?" -#461# "On loading a ROM go to full screen" -#462# "Hide Advanced Settings" +#460# "Pause emulation when window is not active" +#461# "Enter full-screen mode when loading a ROM" +#462# "Hide advanced settings" #463# "Remember selected cheats" -#464# "Disable Screen Saver when running rom" -#465# "Display Frame Rate" -#466# "Change Frame Rate Display Type" +#464# "Disable screen saver when running a ROM" +#465# "Display speed" +#466# "Speed display:" +#467# "Check if Project64 is already running" -//Rom Browser Tab -#480# "Max # of Roms Remembered (Max 10):" -#481# "roms" -#482# "Max # of Rom Dirs Remembered (Max 10):" +//ROM Browser Tab +#480# "Max # of ROMs remembered (0-10):" +#481# "ROMs" +#482# "Max # of ROM dirs remembered (0-10):" #483# "dirs" -#484# "Use Rom Browser" -#485# "Use Directory recursion" +#484# "Use ROM browser" +#485# "Use directory recursion" #486# "Available fields:" #487# "Show fields in this order:" #488# "Add ->" @@ -248,58 +249,62 @@ #492# "Automatically refresh browser" //Advanced Options -#500# "Most of these changes will not take effect till a new rom is opened or current rom is reset." +#500# "Most of these changes will not take effect until a new ROM is opened or current ROM is reset." #501# "Core Defaults" #502# "CPU core style:" -#503# "Self-mod code method:" -#504# "Default Memory Size:" -#505# "Advanced Block Linking:" -#506# "Start Emulation when rom is opened?" -#507# "Always overwrite default settings with ones from ini?" -#508# "Automatically compress instant saves" -#509# "Enable Debugger" +#503# "Self mod methods" +#504# "Default memory size:" +#505# "Advanced block linking" +#506# "Start emulation when ROM is opened" +#507# "Always override default settings with ones from RDB" +#508# "Automatically compress saved states" +#509# "Enable debugger" #510# "Cache" #511# "PI DMA" -#512# "Start Changed" -#513# "Protect Memory" -#514# "TLB Unmapping" +#512# "Start changed" +#513# "Protect memory" +#514# "TLB unmapping" -//Rom Options +//ROM Options #520# "CPU core style:" -#522# "Memory Size:" -#523# "Advanced Block Linking:" -#524# "Default Save type:" -#525# "Counter Factor:" -#526# "Larger Compile Buffer" +#521# "VI refresh rate:" +#522# "Memory size:" +#523# "Advanced block linking" +#524# "Default save type:" +#525# "Counter factor:" +#526# "Larger compile buffer" #527# "Use TLB" #528# "Register caching" -#529# "Delay SI Interrupt" -#530# "SP Hack" +#529# "Delay SI interrupt" +#530# "Fast SP" #531# "Default" -#532# "RSP Audio Signal" -#533# "Fixed Audio Timing" +#532# "RSP audio signal" +#533# "Fixed audio timing" #534# "Function lookup method:" -#535# "Custom Self Mod Method" -#536# "Sync using Audio" +#535# "Custom self mod method" +#536# "Sync using audio" +#537# "AI count per byte" +#538# "32-bit engine" +#539# "Delay DP interrupt" //Core Styles #540# "Interpreter" #541# "Recompiler" -#542# "Synchronise Cores" +#542# "Synchronize cores" //Self Mod Methods #560# "None" #561# "Cache" -#562# "Protect Memory" -#563# "Check Memory & Cache" -#564# "Change Memory & Cache" -#565# "Check Memory Advance" -#566# "Clear Code on Cache" +#562# "Protect memory" +#563# "Check memory & cache" +#564# "Change memory & cache" +#565# "Check memory advance" +#566# "Clear code on cache" -//Function Lookup memthod -#570# "Physical Lookup Table" -#571# "Virtual Lookup Table" -#572# "Change Memory" +//Function Lookup method +#570# "Physical lookup table" +#571# "Virtual lookup table" +#572# "Change memory" //RDRAM Size #580# "4 MB" @@ -310,54 +315,61 @@ #601# "Off" //Save Type -#620# "Use First Used Save Type" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "Flashram" +#620# "Use first-used save type" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "File extension association:" -//Rom Notes -#660# "Rom Status:" -#661# "Core Note:" -#662# "Plugin Note:" +//ROM Notes +#660# "ROM status:" +#661# "Core note:" +#662# "Plugin note:" // Accelerator Selector -#680# "CPU State:" -#681# "Menu Item:" -#682# "Current Keys:" -#683# "Select New Shortcut Key:" -#684# "Currently Assigned To:" +#680# "CPU state:" +#681# "Menu item:" +#682# "Current keys:" +#683# "Select new shortcut key:" +#684# "Currently assigned to:" #685# "Assign" #686# "Remove" #687# "Reset All" #688# "Game not playing" #689# "Game playing" #690# "Game playing (windowed)" -#691# "Game playing (Fullscreen)" +#691# "Game playing (full-screen)" +#692# "Detect Key" // Frame Rate Option -#700# "Vertical Interupts per second" -#701# "Display Lists per second" -#702# "Percent of Speed" +#700# "Vertical interrupts per second" +#701# "Display lists per second" +#702# "Percentage of full speed" // Increase speed #710# "Increase Game Speed" #711# "Decrease Game Speed" +//Bottom page buttons +#720# "Reset Page" +#721# "Reset All" +#722# "Apply" +#723# "Close" + /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title -#800# "Rom Information" +//ROM Info Title +#800# "ROM Information" -//Rom Info Text -#801# "ROM Name:" -#802# "File Name:" +//ROM Info Text +#801# "ROM name:" +#802# "File name:" #803# "Location:" -#804# "Rom Size:" +#804# "ROM size:" #805# "Cartridge ID:" #806# "Manufacturer:" #807# "Country:" @@ -407,17 +419,17 @@ //Edit Cheat #1027# "Edit Cheat" #1028# "Update Cheat" -#1029# "Cheat has been changed do you want to update?" -#1030# "Cheat Updated" +#1029# "Cheat has been changed.\n\nDo you want to update?" +#1030# "Cheat updated" //Cheat Popup Menu #1040# "Add New Cheat..." #1041# "Edit" #1042# "Delete" -// short cut editor -#1100# "Reset Short Cuts" -#1101# "Are you sure you want to reset the short cuts?\n\nThis action cannot be undone." +// short-cut editor +#1100# "Reset short-cuts" +#1101# "Are you sure you want to reset the short-cuts?\n\nThis action cannot be undone." #1102# "File Menu" #1103# "System Menu" #1104# "Options" @@ -428,59 +440,59 @@ *********************************************************************************/ #2000# "*** CPU PAUSED ***" #2001# "CPU Resumed" -#2002# "In a permanent loop that cannot be exited. \nEmulation will now stop. \n\nVerify ROM and ROM Settings." -#2003# "Failed to allocate Memory" +#2002# "In a permanent loop that cannot be exited. \nEmulation will now stop. \n\nVerify ROM and ROM settings." +#2003# "Failed to allocate memory" #2004# "The default or selected video plugin is missing or invalid. \n\nYou need to go into Settings and select a video (graphics) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder." #2005# "The default or selected audio plugin is missing or invalid. \n\nYou need to go into Settings and select a audio (sound) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder." -#2006# "The default or selected RSP plugin is missing or invalid. \n\nYou need to go into Settings and select a RSP (reality signal processor) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder." +#2006# "The default or selected RSP plugin is missing or invalid. \n\nYou need to go into Settings and select a RSP (Reality Signal Processor) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder." #2007# "The default or selected input plugin is missing or invalid. \n\nYou need to go into Settings and select an input (controller) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder." #2008# "Failed to load plugin:" -#2009# "Failed to load word\n\nVerify ROM and ROM Settings." -#2010# "Failed to open Save File" -#2011# "Failed to open Eeprom" -#2012# "Failed to open Flashram" +#2009# "Failed to load word.\n\nVerify ROM and ROM settings." +#2010# "Failed to open save file" +#2011# "Failed to open EEPROM" +#2012# "Failed to open flash RAM" #2013# "Failed to open mempak" #2014# "Attempt to open zip file failed. \n\nProbably a corrupt zip file - try unzipping ROM manually." #2015# "Attempt to open file failed." #2016# "Error occurred when trying to open zip file." -#2017# "File loaded does not appear to be a valid Nintendo64 ROM. \n\nVerify your ROMs with GoodN64." +#2017# "File loaded does not appear to be a valid N64 ROM. \n\nVerify your ROMs with GoodN64." #2018# "Unknown country" -#2019# "Unknown Cic Chip" +#2019# "Unknown CIC chip" #2020# "Unknown file format" -#2021# "Unknown memory action\n\nEmulation stop" -#2022# "Unhandled R4300i OpCode at" -#2023# "Executing from non-mapped space.\n\nVerify ROM and ROM Settings." -#2024# "State save does not appear to match the running ROM. \n\nState saves must be saved & loaded between 100% identical ROMs, \nin particular the REGION and VERSION need to be the same. \nLoading this state is likely to cause the game and/or emulator to crash. \n\nAre you sure you want to continue loading?" +#2021# "Unknown memory action\n\nEmulation stopped" +#2022# "Unhandled R4300i opcode at" +#2023# "Executing from non-mapped space.\n\nVerify ROM and ROM settings." +#2024# "This saved state does not appear to match the running ROM. \n\nStates must be saved & loaded between 100% identical ROMs. \nIn particular the REGION and VERSION need to be the same. \nLoading this state is likely to cause the game and/or emulator to crash. \n\nAre you sure you want to continue loading?" #2025# "Error" #2026# "Copyright sequence not found in LUT. Game will no longer function." #2027# "Copy Protection Failure" -#2028# "Changing a plugin requires Project64 to reset a running ROM. \nIf you don't want to lose your place, answer No and make a state save first. \n\nChange plugins and restart game now?" +#2028# "Changing a plugin requires Project64 to reset a running ROM. \nIf you don't want to lose your place, answer No and save the current state first. \n\nChange plugins and reset ROM now?" #2029# "Change Plugins" #2030# "Emulation ended" #2031# "Emulation started" -#2032# "Unable to load save state" -#2033# "Loaded save state" +#2032# "Unable to load state" +#2033# "Loaded state" #2034# "Saved current state to" -#2035# "Save state slot" -#2036# "Byte swapping image" +#2035# "State slot" +#2036# "Byte-swapping image" #2037# "Choosing N64 image" #2038# "Loaded" #2039# "Loading image" -#2040# "Cannot open a rom because plugins have not successfully initialised" +#2040# "Cannot open a ROM because plugins have not successfully initialized." #2041# "Are you sure you really want to delete this?" #2042# "Delete Cheat" -#2043# "Cheat Name is already in use" -#2044# "You Have reached the Maximum amount of cheats for this rom" -#2045# "Plug-in Initializing" -#2046# "You have not selected a virtual key to assign to the menu item" -#2047# "You need to select a menu item to assign this key to" -#2048# "Short cut has already been assigned to another menu item" -#2049# "No shortcut has been selected to be removed" -#2050# "Rom Loaded. Waiting for emulation to start." -#2051# "project64 beta is for members only.\n\nif you have an account at pj64.net, you should not be seeing this error!!\nplease contact us on the site" +#2043# "Cheat name is already in use." +#2044# "You have reached the maximum amount of cheats for this ROM." +#2045# "Plugin initializing" +#2046# "You have not selected a virtual key to assign to the menu item." +#2047# "You need to select a menu item to assign this key to." +#2048# "Short-cut has already been assigned to another menu item." +#2049# "No shortcut has been selected to be removed." +#2050# "ROM loaded. Waiting for emulation to start." +#2051# "Project64 beta is for members only.\n\nIf you have an account at pj64.net, you should not be seeing this error!!\nPlease contact us on the site." #2052# "Program Error" #2053# "Failed to find filename in 7z file" -#2054# "Use Low Level Graphics" -#2055# "Low Level Graphics are not for general use!!!\nIt is advisable that you only use this for testing, not for playing any games with\n\nChange to LLE GFX?" -#2056# "Use High Level Audio" -#2057# "High level Audio requires a 3rd party plugin!!!\nIf you do not use a 3rd party plugin that supports high level audio then you will hear no sound.\n\nUse high level audio?" +#2054# "Graphics Low-Level Emulation" +#2055# "Graphics LLE is not for general use!!!\nIt is advisable that you only use this for testing and not for playing games.\n\nChange to graphics LLE?" +#2056# "Audio High-Level Emulation" +#2057# "Audio HLE requires a third-party plugin!!!\nIf you do not use a third-party audio plugin that supports HLE, you will hear no sound.\n\nChange to audio HLE?" diff --git a/Lang/English_alternative.pj.Lang b/Lang/English_alternative.pj.Lang index d61fe3fe0..50057f234 100644 --- a/Lang/English_alternative.pj.Lang +++ b/Lang/English_alternative.pj.Lang @@ -14,7 +14,7 @@ #8 # "Date" #9 # "Author's Homepage" #10 # "ROM Database (Project64.rdb)" -#11 # "Cheat Code file (Project64.cht)" +#11 # "Cheat Code File (Project64.cht)" #12 # "Extended ROM Information (Project64.rdx)" //About INI title @@ -52,13 +52,13 @@ //Options Menu #140# "&Options" -#141# "Go &fullscreen" +#141# "Full Screen" #142# "Always on &Top" #143# "&Video plugin..." #144# "&Audio plugin..." #145# "&Input plugin..." #146# "&RSP..." -#147# "&Show CPU usage %" +#147# "&Show CPU Usage" #148# "Se&ttings..." //Debugger Menu @@ -111,7 +111,7 @@ #264# "Load Project64 state from any filename and location" #265# "Select or add cheat codes for running ROM" #266# "Emulate a press of the GameShark button - for use with some cheats" -#267# "Switch from windowed mode to fullscreen mode (press Escape to return!)" +#267# "Switch from windowed to full-screen mode (press Escape to return!)." #268# "Keep Project64 window in front of other windows" #269# "Configure selected video (graphics) plugin" #270# "Configure selected audio (sound) plugin" @@ -133,9 +133,9 @@ #286# "Edit cheats in CHT file for selected game" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Filename" #301# "Internal Name" #302# "Good Name" @@ -143,7 +143,7 @@ #304# "ROM Size" #305# "Core Note" #306# "Plugin Note" -#307# "Notes (User)" +#307# "Notes (user)" #308# "Cartridge ID" #309# "Manufacturer" #310# "Region" @@ -156,7 +156,7 @@ #317# "Players" #318# "Force Feedback" -//Select Rom +//Select ROM #320# "Set ROM folder for ROM Browser" //Messages @@ -184,6 +184,9 @@ #422# "&Video (graphics) plugin" #423# "&Audio (sound) plugin" #424# "&Input (controller) plugin" +#425# "Graphics HLE" +#426# "Audio HLE" +#427# "** Use System Plugin **" //Directory Dialog #440# "&Plugin folder" @@ -191,7 +194,7 @@ #442# "&Native N64 saves folder" #443# "Project64 s&tate saves folder" #444# "&Screenshots folder" -#445# "Remember the &last folder a ROM was opened from" +#445# "Remember the &last folder a ROM was opened from." #446# "Select a folder for plugins" #447# "Select a folder for ROMs" #448# "Select a folder for native N64 saves" @@ -200,11 +203,15 @@ //Options Dialog #460# "&Pause when window loses focus" -#461# "&Fullscreen automatically after loading games" +#461# "&Enter full-screen mode when loading a ROM" #462# "&Hide advanced settings (recommended)" #463# "&Remember selected cheats for games" +#464# "Disable &screen saver when running a ROM" +#465# "&Display speed" +#466# "Speed display:" +#467# "&Check if Project64 is already running" -//Rom Browser Tab +//ROM Browser Tab #480# "&Number of ROMs to remember (0-10)" #481# "ROMs" #482# "Number of ROM &folders to remember (0-10)" @@ -230,7 +237,7 @@ no RDB is present, or 'overwrite' option below is unchecked" #507# "&Overwrite these default settings with ones from RDB" #508# "&Zip compress all state saves" -//Rom Options +//ROM Options #520# "R4300i &core:" #521# "&Self-mod. code method:" #522# "RDRA&M size:" @@ -267,16 +274,16 @@ no RDB is present, or 'overwrite' option below is unchecked" #601# "Off" //Save Type -#620# "* detect first used type" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbyte SRAM" -#624# "128kbyte FlashRAM" +#620# "* detect first-used type" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Intergration Tab #640# "Files to associate with Project64" -//Rom Notes +//ROM Notes #660# "&Status:" #661# "&Core Note:" #662# "&Plugin Note:" @@ -284,10 +291,10 @@ no RDB is present, or 'overwrite' option below is unchecked" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "ROM information" -//Rom Info Text +//ROM Info Text #801# "Internal Name" #802# "File Name" #803# "Location" @@ -354,7 +361,7 @@ no RDB is present, or 'overwrite' option below is unchecked" #2002# "In a permanent loop that cannot be exited. Emulation will now stop. -Verify ROM and ROM Settings." +Verify ROM and ROM settings." #2003# "Failed to allocate Memory" #2004# "The default or selected video plugin is missing or invalid. @@ -369,32 +376,32 @@ Check that you have Project64 properly installed with a valid plugin path." Check that you have at least one compatible plugin file in your plugin folder." #2008# "Failed to load plugin:" -#2009# "Failed to load word +#2009# "Failed to load word. -Verify ROM and ROM Settings." +Verify ROM and ROM settings." #2010# "Failed to open state save file" #2011# "Failed to open EEPROM" -#2012# "Failed to open FlashRAM" -#2013# "Failed to open MemPak" +#2012# "Failed to open flash RAM" +#2013# "Failed to open mempak" #2014# "Attempt to open zip file failed. Missing or corrupt zip file - check path and file. You may need to restart the application." #2015# "Attempt to open file failed." #2016# "Error occured when trying to open zip file." -#2017# "File loaded does not appear to be a valid Nintendo64 ROM. +#2017# "File loaded does not appear to be a valid Nintendo 64 ROM. Verify your ROMs with GoodN64." -#2018# "Unknown Country" -#2019# "Unknown CIC Chip" +#2018# "Unknown country" +#2019# "Unknown CIC chip" #2020# "Unknown file format" #2021# "Unknown memory action Emulation stop" -#2022# "Unhandled R4300i OpCode at" +#2022# "Unhandled R4300i opcode at" #2023# "Executing from non-mapped space. -Verify ROM and ROM Settings." +Verify ROM and ROM settings." #2024# "State save does not appear to match the running ROM. State saves must be saved & loaded between 100% identical ROMs, @@ -410,8 +417,8 @@ If you don't want to lose your place, answer No and make a state save first. Change plugins and restart game now?" #2029# "Change Plugins" -#2030# "Emulation Ended" -#2031# "Emulation Started" +#2030# "Emulation ended" +#2031# "Emulation started" #2032# "Unable to load save state" #2033# "Loaded state:" #2034# "Saved state:" @@ -420,10 +427,8 @@ Change plugins and restart game now?" #2037# "Waiting for you to choose a ROM" #2038# "Loaded" #2039# "Loading ROM" -#2040# "You cannot open a ROM unless all plugin types (Video, Audio, Input and RSP) have initialised" +#2040# "You cannot open a ROM unless all plugin types (video, audio, input and RSP) have initialised." #2041# "Are you sure you want to delete this cheat?" #2042# "Delete Cheat" -#2043# "Cheat name already in use, please choose another" -#2044# "You have reached the maximum number of cheats you can have per game" - - +#2043# "Cheat name already in use; please choose another." +#2044# "You have reached the maximum number of cheats you can have per game." diff --git a/Lang/Finnish.pj.Lang b/Lang/Finnish.pj.Lang index b01a33f06..18413dd1a 100644 --- a/Lang/Finnish.pj.Lang +++ b/Lang/Finnish.pj.Lang @@ -13,9 +13,9 @@ #7 # "Versio" #8 # "Päivämäärä" #9 # "Vieraile kotisivulla" -#10 # "Rom tietokanta (.RDB)" +#10 # "ROM tietokanta (.RDB)" #11 # "Huijaus tiedosto (.CHT)" -#12 # "Laajennettu Rom tietokanta (.RDX)" +#12 # "Laajennettu ROM tietokanta (.RDX)" //About INI title #20 # "Tietoa INI tiedostoista" @@ -25,14 +25,14 @@ *********************************************************************************/ //File Menu #100# "&Tiedosto" -#101# "&Avaa Rom tiedosto" -#102# "T&ietoa Rom tiedostosta..." +#101# "&Avaa ROM tiedosto" +#102# "T&ietoa ROM tiedostosta..." #103# "&Käynnistä emulointi" #104# "L&opeta emulointi" -#105# "&Valitse Rom hakemisto..." -#106# "&Päivitä Rom selaimen tiedot" -#107# "Vii&meisimmät Rom tiedostot" -#108# "Viim&eisimmät Rom hakemistot" +#105# "&Valitse ROM hakemisto..." +#106# "&Päivitä ROM selaimen tiedot" +#107# "Vii&meisimmät ROM tiedostot" +#108# "Viim&eisimmät ROM hakemistot" #109# "&Lopeta" //System Menu @@ -94,15 +94,15 @@ #213# "Muokkaa pelin huijauskoodeja" // Menu Descriptions -#250# "Avaa N64 Rom tiedosto" -#251# "Näytä avatun Rom tiedoston tiedot" -#252# "Käynnistä avatun Rom tiedoston emulointi" -#253# "Lopeta avatun Rom tiedoston emulointi" -#254# "Valitse hakemisto, josta Rom tiedostot haetaan" -#255# "Päivitä Rom Selaimen tiedot" +#250# "Avaa N64 ROM tiedosto" +#251# "Näytä avatun ROM tiedoston tiedot" +#252# "Käynnistä avatun ROM tiedoston emulointi" +#253# "Lopeta avatun ROM tiedoston emulointi" +#254# "Valitse hakemisto, josta ROM tiedostot haetaan" +#255# "Päivitä ROM Selaimen tiedot" #256# "Poistu tästä ohjelmasta" -#257# "Käynnistä avattu Rom tiedosto uudelleen (ota muutetut asetukset käyttöön)" -#258# "Keskeytä/Jatka avatun Rom tiedoston emulointia" +#257# "Käynnistä avattu ROM tiedosto uudelleen (ota muutetut asetukset käyttöön)" +#258# "Keskeytä/Jatka avatun ROM tiedoston emulointia" #259# "Tee Bitmap tiedosto ruudussa näkyvästä kuvasta (Kuvankaappaus)" #260# "Rajoita ruudunpäivitys N64:n oikeaan arvoon" #261# "Tee pikatallennus nykyisestä pelitilanteesta" @@ -123,8 +123,8 @@ #276# "Näytä pelien usein kysytyt kysymykset" #277# "Tietoa INI tiedostojen tekijöistä" #278# "Tietoa Project64 ohjelmasta ja sen tekijöistä" -#279# "Avaa tämä Rom tiedosto" -#280# "Valitse tämä hakemisto Rom hakemistoksi" +#279# "Avaa tämä ROM tiedosto" +#280# "Valitse tämä hakemisto ROM hakemistoksi" #281# "Vaihda ohjelma käyttämään tätä kieltä - Choose language" #282# "Valitse tämä pikatallennus paikka" #283# "Pelaa valittua peliä" @@ -133,17 +133,17 @@ #286# "Muokkaa valitun pelin huijauskoodeja" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Tiedoston nimi" #301# "Sisäinen nimi" #302# "Pelin nimi" #303# "Tila" #304# "Tiedoston koko" -#305# "Merkinnät (Ydin)" -#306# "Merkinnät (Oletus plugin tiedostot)" -#307# "Merkinnät (Käyttäjä)" +#305# "Merkinnät (ydin)" +#306# "Merkinnät (oletus plugin tiedostot)" +#307# "Merkinnät (käyttäjä)" #308# "Pelikasetin tunnus" #309# "Valmistaja" #310# "Maa" @@ -156,11 +156,11 @@ #317# "Pelaajamäärä" #318# "Tärinä ominaisuus" -//Select Rom -#320# "Valitse käytettävä Rom hakemisto" +//Select ROM +#320# "Valitse käytettävä ROM hakemisto" //Messages -#340# "Viallinen Rom tiedosto? Käytä GoodN64 ohjelmaa/päivitä INI tiedosto" +#340# "Viallinen ROM tiedosto? Käytä GoodN64 ohjelmaa/päivitä INI tiedosto" /********************************************************************************* * Options * @@ -172,11 +172,11 @@ #401# "Plugin tiedostot" #402# "Hakemistot" #403# "Asetukset" -#404# "Rom valikko" +#404# "ROM valikko" #405# "Lisäasetukset" -#406# "Rom tiedoston asetukset" +#406# "ROM tiedoston asetukset" #407# "Tiedostopäätteiden yhdistäminen ohjelmaan" -#408# "Rom tiedoston merkinnät" +#408# "ROM tiedoston merkinnät" //Plugin Dialog #420# "Tietoa" @@ -187,29 +187,29 @@ //Directory Dialog #440# " Plugin tiedostojen hakemisto: " -#441# " Hakemisto, josta Rom tiedostot haetaan: " +#441# " Hakemisto, josta ROM tiedostot haetaan: " #442# " N64:n Automaattiset tallennukset: " #443# " Mihin pikatallennukset tallennetaan: " #444# " Mihin kuvankaappaukset tallennetaan: " -#445# "Hakemisto, josta Rom tiedostoja on viimeksi löytynyt." +#445# "Hakemisto, josta ROM tiedostoja on viimeksi löytynyt." #446# "Valitse plugin hakemisto" -#447# "Valitse Rom hakemisto" +#447# "Valitse ROM hakemisto" #448# "Valitse automaattisten tallennusten hakemisto" #449# "Valitse pikatallennusten hakemisto" #450# "Valitse kuvankaappausten hakemisto" //Options Dialog #460# "Keskeytä emulointi, kun emulaattori ei ole aktiivinen" -#461# "Mene koko näytön tilaan, kun Rom tiedosto on avattu" +#461# "Mene koko näytön tilaan, kun ROM tiedosto on avattu" #462# "Piilota lisäasetukset" #463# "Muista valitut huijauskoodit" -//Rom Browser Tab -#480# "Suurin muistettava määärä Rom tiedostoja:" +//ROM Browser Tab +#480# "Suurin muistettava määärä ROM tiedostoja:" #481# "kpl / 10" -#482# "Suurin muistettava määrä Rom hakemistoja:" +#482# "Suurin muistettava määrä ROM hakemistoja:" #483# "kpl / 10" -#484# "Käytä Rom Selainta" +#484# "Käytä ROM Selainta" #485# "Käytä hakemiston rekursiointia" #486# "Lisää nämä selaimeen:" #487# "Näytä nämä selaimessa:" @@ -219,17 +219,17 @@ #491# "Alas" //Advanced Options -#500# "Suurin osa asetuksista tulee voimaan vasta, kun avattu Rom tiedosto nollataan, tai avataan uusi Rom tiedosto." +#500# "Suurin osa asetuksista tulee voimaan vasta, kun avattu ROM tiedosto nollataan, tai avataan uusi ROM tiedosto." #501# "Ytimen asetukset" #502# "CPU ytimen tyyli:" #503# "Self-mod code method:" #504# "Muistin oletus koko:" #505# "Advanced Block Linking:" -#506# "Aloita emulointi, kun Rom tiedosto on avattu" +#506# "Aloita emulointi, kun ROM tiedosto on avattu" #507# "Kotvaa oletusasetukset aina INI tiedostosta" #508# "Pakkaa pikatallennukset automaattisesti" -//Rom Options +//ROM Options #520# "CPU ytimen tyyli:" #521# "Self-modifying code Method:" #522# "Muistin määrä:" @@ -267,26 +267,26 @@ //Save Type #620# "Käytä 1. tallennustyyppiä" -#621# "4kbit EepRom" -#622# "16kbit EepRom" -#623# "32kbytes SRAM" -#624# "Flashram" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "Tiedostopäätteiden yhdistäminen ohjelmaan:" -//Rom Notes +//ROM Notes #660# "Pelin tila:" #661# "Ytimen merkinnät:" #662# "Plugin merkinnät:" /********************************************************************************* -* Rom Information * +* ROM Information * *********************************************************************************/ -//Rom Info Title -#800# "Tietoa Rom tiedostosta" +//ROM Info Title +#800# "Tietoa ROM tiedostosta" -//Rom Info Text +//ROM Info Text #801# "Pelin nimi:" #802# "Tiedoston nimi:" #803# "Sijainti:" @@ -353,7 +353,7 @@ #2002# "Pysyvässä silmukassa josta ei voi poistua. Emulaatio keskeytyy nyt. -Verify Rom and Rom Settings." +Verify ROM and ROM Settings." #2003# "Failed to allocate Memory" #2004# "Oletus- tai valittu video plugin puuttuu tai on viallinen. @@ -370,9 +370,9 @@ Tarkista, että sinulle on ainakin yksi toimiva plugin tiedosto plugin hakemisto #2008# "Plugin tiedoston lataaminen epäonnistui:" #2009# "Failed to load word -Tarkista Rom tiedosto ja sen asetukset." +Tarkista ROM tiedosto ja sen asetukset." #2010# "Tallennustiedoston avaus epäonnistui" -#2011# "EepRomin avaus epäonnistui" +#2011# "EEPROMin avaus epäonnistui" #2012# "Flashramin avaus epäonnistui" #2013# "Mempakin avaus epäonnistui" #2014# "Zip tiedoston avaus epäonnistui. @@ -381,9 +381,9 @@ Puuttuva tai viallinen zip tiedosto - tarkista tiedosto ja hakemisto. Sinun täytyy ehkä käynnistää tämä ohjelma uudestaan." #2015# "Tiedoston avaus epäonnistui." #2016# "Virhe avattaessa zip tiedostoa." -#2017# "AVattu tiedosto ei ole Nintendo64 Rom tiedosto tai se on viallinen. +#2017# "AVattu tiedosto ei ole Nintendo 64 ROM tiedosto tai se on viallinen. -Varmista Rom tiedostosi GoodN64 ohjelmalla." +Varmista ROM tiedostosi GoodN64 ohjelmalla." #2018# "Tutematon maa" #2019# "Tuntematon Cic Siru" #2020# "Tuntematon formaatti" @@ -391,12 +391,12 @@ Varmista Rom tiedostosi GoodN64 ohjelmalla." Emulaatio on pysäytetty" #2022# "Unhandled R4300i OpCode at" -#2023# "Executing fRom non-mapped space. +#2023# "Executing from non-mapped space. -Verify Rom and Rom Settings." -#2024# "Tallennettu tiedosto ei täsmää avattua Rom tiedostoa. +Verify ROM and ROM Settings." +#2024# "Tallennettu tiedosto ei täsmää avattua ROM tiedostoa. -Tallennus pitää olla tallennettu & ladattu kahden 100% identtisen Rom tiedoston välillä, +Tallennus pitää olla tallennettu & ladattu kahden 100% identtisen ROM tiedoston välillä, etenkin MAAN ja VERSION pitää olla sama. Tämän tallenteen lataaminen aiheuttaa todennäköisesti pelin ja/tai emulaattorin kaatumisen. @@ -404,7 +404,7 @@ Haluatko varmasti jatkaa lataamista?" #2025# "Virhe" #2026# "Tekijänoikeus jaksoa ei löytynyt LUT:stä. Peli ei enää toimi." #2027# "Kopiosuojaus virhe" -#2028# "Plugin muutosten takia Project64:n on käynnistettävä avattu Rom tiedosto uudestaan. +#2028# "Plugin muutosten takia Project64:n on käynnistettävä avattu ROM tiedosto uudestaan. Jos et halua menettää nykyistä pelitilannetta, vastaa Ei, ja tee tallennus pelitilanteesta ensin. Muuta plugini(t) ja käynnistä peli uudestaan nyt?" @@ -419,8 +419,8 @@ Muuta plugini(t) ja käynnistä peli uudestaan nyt?" #2037# "Valitaan N64 tiedosto" #2038# "Ladattu" #2039# "Ladataan tiedostoa" -#2040# "Rom tiedostoa ei voi avata, koska plugineja ei ole onnistuneesti saatu käyttöön" +#2040# "ROM tiedostoa ei voi avata, koska plugineja ei ole onnistuneesti saatu käyttöön" #2041# "Haluatko varmasti poistaa tämän?" #2042# "Poista huijauskoodi" #2043# "Huijauskoodin nimi on jo olemassa" -#2044# "Suurin määrä huijauskoodeja on jo valittu tälle pelille" \ No newline at end of file +#2044# "Suurin määrä huijauskoodeja on jo valittu tälle pelille" diff --git a/Lang/French.pj.Lang b/Lang/French.pj.Lang index 5452385a5..ea45823ae 100644 --- a/Lang/French.pj.Lang +++ b/Lang/French.pj.Lang @@ -13,9 +13,9 @@ #7 # "Version" #8 # "Date" #9 # "Site de l'auteur" -#10 # "Base de données des roms (Project64.rdb)" +#10 # "Base de données des ROMs (Project64.rdb)" #11 # "Fichier des codes triche (Project64.cht)" -#12 # "Informations étendues des roms (Project64.rdx)" +#12 # "Informations étendues des ROMs (Project64.rdx)" //About INI title #20 # "Project64 utilise actuellement :" @@ -25,19 +25,19 @@ *********************************************************************************/ //File Menu #100# "&Fichier" -#101# "&Ouvrir une rom..." -#102# "&Infos sur la rom..." +#101# "&Ouvrir une ROM..." +#102# "&Infos sur la ROM..." #103# "&Démarrer l'émulation" #104# "&Arrêter l'émulation" -#105# "&Choix du dossier des roms..." -#106# "&Rafraîchir la liste des roms" +#105# "&Choix du dossier des ROMs..." +#106# "&Rafraîchir la liste des ROMs" #107# "Ro&ms récentes" -#108# "Do&ssier des roms récentes" +#108# "Do&ssier des ROMs récentes" #109# "&Quitter" //System Menu #120# "S&ystème" -#121# "&Redémarrer la rom" +#121# "&Redémarrer la ROM" #122# "&Pause" #123# "Cap&ture d'écran" #124# "&Vitesse réelle" @@ -87,27 +87,27 @@ //Pop up Menu #210# "&Jouer" -#211# "&Informations sur la rom" +#211# "&Informations sur la ROM" #212# "&Editer les réglages du jeu" #213# "Editer les codes &triche" // Menu Descriptions -#250# "Parcourir l'ordinateur pour trouver et charger une rom" -#251# "Afficher des informations sur la rom chargée" -#252# "Démarrer l'émulation de la rom chargée" -#253# "Arrêter l'émulation de la rom chargée et retourner au navigateur" -#254# "Changer le dossier du navigateur de roms" -#255# "Rafraîchir la fenêtre du navigateur pour refléter les changements du dossier des roms" +#250# "Parcourir l'ordinateur pour trouver et charger une ROM" +#251# "Afficher des informations sur la ROM chargée" +#252# "Démarrer l'émulation de la ROM chargée" +#253# "Arrêter l'émulation de la ROM chargée et retourner au navigateur" +#254# "Changer le dossier du navigateur de ROMs" +#255# "Rafraîchir la fenêtre du navigateur pour refléter les changements du dossier des ROMs" #256# "Quitter Project64" -#257# "Redémarrer l'émulation de la rom" -#258# "Mettre en pause/redémarrer l'émulation de la rom" +#257# "Redémarrer l'émulation de la ROM" +#258# "Mettre en pause/redémarrer l'émulation de la ROM" #259# "Générer un fichier bitmap à partir du plugin graphique" -#260# "Limiter le nombre de 'VI/s' à la vitesse réelle selon la région de la rom" +#260# "Limiter le nombre de 'VI/s' à la vitesse réelle selon la région de la ROM" #261# "Sauvegarder l'état actuel du système avec le numéro choisi" #262# "Sauvegarder l'état du système avec choix du dossier où sauvegarder" #263# "Charger l'état du système contenu dans une sauvegarde rapide" #264# "Choisir une sauvegarde de l'état à charger" -#265# "Choisir ou ajouter des codes triche pour la rom chargée" +#265# "Choisir ou ajouter des codes triche pour la ROM chargée" #266# "Emuler l'appui sur le bouton du 'GameShark' - à utiliser avec certains codes triche" #267# "Basculer du mode fenêtre au mode plein écran (appuyer sur Esc pour revenir au mode fenêtre)" #268# "Garder la fenêtre de Project64 devant les autres fenêtres" @@ -121,8 +121,8 @@ #276# "Ouvrir la Foire Aux Questions sur les jeux" #277# "A propos des auteurs des fichiers de support" #278# "A propos du programme et de ces auteurs" -#279# "Charger une rom chargée récemment" -#280# "Basculer le navigateur de roms vers le dossier choisi" +#279# "Charger une ROM chargée récemment" +#280# "Basculer le navigateur de ROMs vers le dossier choisi" #281# "Changer la langue de l'interface graphique de Project64" #282# "Changer le numéro de la sauvegarde rapide" #283# "Charger et démarrer l'émulation du jeu choisi" @@ -131,14 +131,14 @@ #286# "Editer les codes triche du jeu choisi dans le fichier CHT" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Nom du fichier" #301# "Nom interne" #302# "Nom dans GoodN64" #303# "Statut" -#304# "Taille de la rom" +#304# "Taille de la ROM" #305# "Notes (noyau)" #306# "Notes (plugins)" #307# "Notes (utilisateur)" @@ -153,11 +153,11 @@ #316# "Genre" #317# "Joueurs" -//Select Rom -#320# "Choisir le dossier des roms pour le navigateur de roms" +//Select ROM +#320# "Choisir le dossier des ROMs pour le navigateur de ROMs" //Messages -#340# "Mauvaise rom? Utilisez GoodN64, cherchez un nouveau fichier RDB" +#340# "Mauvaise ROM? Utilisez GoodN64, cherchez un nouveau fichier RDB" /********************************************************************************* * Options * @@ -169,11 +169,11 @@ #401# "Plugins" #402# "Dossiers" #403# "Options" -#404# "Sélection d'une rom" +#404# "Sélection d'une ROM" #405# "Avancées" -#406# "Réglages de la rom" +#406# "Réglages de la ROM" #407# "Association" -#408# "Notes sur la rom" +#408# "Notes sur la ROM" //Plugin Dialog #420# "A propos" @@ -184,29 +184,29 @@ //Directory Dialog #440# "Dossier des &plugins" -#441# "Dossier des &roms" +#441# "Dossier des &ROMs" #442# "Dossier des sauvegardes de la &N64" #443# "Dossier des &sauvegardes rapides" #444# "Dossier des &captures d'écran" -#445# "Retenir le dernier dossier où une rom a été ouverte" +#445# "Retenir le dernier dossier où une ROM a été ouverte" #446# "Choisir un dossier pour les plugins" -#447# "Choisir un dossier pour les roms" +#447# "Choisir un dossier pour les ROMs" #448# "Choisir un dossier pour les sauvegardes de la N64" #449# "Choisir un dossier pour les sauvegardes rapides" #450# "Choisir un dossier pour les captures d'écran" //Options Dialog #460# "&Mettre en pause quand la fenêtre perd le focus" -#461# "Basculer en &plein écran quand une rom est chargée" +#461# "Basculer en &plein écran quand une ROM est chargée" #462# "&Cacher les réglages avancés (recommandé)" #463# "&Retenir les codes triche sélectionnés" -//Rom Browser Tab -#480# "&Nombres de roms à retenir (0-10)" -#481# "roms" -#482# "N&ombre de dossiers de roms à retenir (0-10)" +//ROM Browser Tab +#480# "&Nombres de ROMs à retenir (0-10)" +#481# "ROMs" +#482# "N&ombre de dossiers de ROMs à retenir (0-10)" #483# "dossiers" -#484# "Na&vigateur de roms activé" +#484# "Na&vigateur de ROMs activé" #485# "&Récursivité des dossiers" #486# "&Champs disponibles :" #487# "&Montrer dans cet ordre :" @@ -223,11 +223,11 @@ aucun RDB n'existe ou l'option 'Préférer ...' n'est pas cochée" #503# "&Méthode du 'Self-mod. Code' :" #504# "&Taille de la RDRAM :" #505# "&Advanced Block Linking :" -#506# "&Démarrer l'émulation après le chargement des roms" +#506# "&Démarrer l'émulation après le chargement des ROMs" #507# "&Préférer les réglages du fichier RDB à ceux par défaut" #508# "&Compresser (zip) toutes les sauvegardes rapides" -//Rom Options +//ROM Options #520# "&Noyau R4300i :" #521# "&Méthode du 'Self-mod. Code' :" #522# "&Taille de la RDRAM :" @@ -264,15 +264,15 @@ aucun RDB n'existe ou l'option 'Préférer ...' n'est pas cochée" //Save Type #620# "* détecter automatiquement" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32ko SRAM" -#624# "128ko FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-ko SRAM" +#624# "128-ko flash RAM" //Shell Intergration Tab #640# "Associer à Project64 :" -//Rom Notes +//ROM Notes #660# "&Statut :" #661# "Notes (&noyau) :" #662# "Notes (&plugin) :" @@ -280,10 +280,10 @@ aucun RDB n'existe ou l'option 'Préférer ...' n'est pas cochée" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title -#800# "Information sur la rom" +//ROM Info Title Title +#800# "Information sur la ROM" -//Rom Info Text +//ROM Info Text #801# "Nom interne" #802# "Nom du fichier" #803# "Lieu" @@ -350,7 +350,7 @@ aucun RDB n'existe ou l'option 'Préférer ...' n'est pas cochée" #2002# "Dans une boucle permanente qui ne peut pas être quittée. L'émulation va maintenant s'arrêter. -Verifiez la rom et ces réglages." +Verifiez la ROM et ces réglages." #2003# "Echec de l'allocation la mémoire" #2004# "Le plugin vidéo par défaut ou sélectionné est manquant ou est invalide. @@ -367,19 +367,19 @@ Vérifiez que vous avez au moins un fichier plugin compatible dans le dossier de #2008# "Echec du chargement du plugin :" #2009# "Echec du chargement du mot -Vérifiez la rom et ces réglages." +Vérifiez la ROM et ces réglages." #2010# "Echec de l'ouverture de la sauvegarde rapide" #2011# "Echec de l'ouverture de l'EEPROM" -#2012# "Echec de l'ouverture de la FlashRAM" -#2013# "Echec de l'ouverture du MemPak" +#2012# "Echec de l'ouverture de la flash RAM" +#2013# "Echec de l'ouverture du mempak" #2014# "La tentative d'ouverture du fichier zip a échoué. Fichier zip manquant ou corrompu - vérifiez le chemin et le fichier." #2015# "La tentative d'ouverture du fichier a échoué." #2016# "Une erreur s'est produite en essayant d'ouvrir le fichier zip." -#2017# "Le fichier chargé ne semble pas être une rom N64 valide. +#2017# "Le fichier chargé ne semble pas être une ROM N64 valide. -Vérifiez vos roms avec GoodN64." +Vérifiez vos ROMs avec GoodN64." #2018# "Pays inconnu" #2019# "Puce CIC inconnue" #2020# "Format de fichier inconnu" @@ -389,10 +389,10 @@ Arrêt de l'émulation" #2022# "OpCode R4300i non pris en charge à" #2023# "Exécution à partir d'un espace non mappé. -Vérifiez la rom et ces réglages." -#2024# "La sauvegarde rapide ne semble pas correspondre à la rom actuelle. +Vérifiez la ROM et ces réglages." +#2024# "La sauvegarde rapide ne semble pas correspondre à la ROM actuelle. -Les sauvegardes rapides doivent être sauvegardées et chargées à partir d'une rom +Les sauvegardes rapides doivent être sauvegardées et chargées à partir d'une ROM 100% identique, le pays et la version doivent être les mêmes en particulier. Le chargement de cette sauvegarde rapide pourrait causer un plantage du jeu/émulateur. @@ -400,7 +400,7 @@ Le chargement de cette sauvegarde rapide pourrait causer un plantage du jeu/ému #2025# "Erreur de l'application/noyau" #2026# "Séquence du 'copyright' non trouvée dans le 'LUT'. Le jeu ne va plus fonctionner." #2027# "Echec de la protection contre la copie" -#2028# "Changer un plugin nécessite que Project64 redémarre la rom chargée. +#2028# "Changer un plugin nécessite que Project64 redémarre la ROM chargée. Si vous ne voulez pas perdre votre partie, répondez Non et réalisez une sauvegarde rapide d'abord. Changer les plugins et redémarrer le jeu maintenant ?" @@ -411,14 +411,12 @@ Changer les plugins et redémarrer le jeu maintenant ?" #2033# "Chargement effectué :" #2034# "Sauvegarde effectuée :" #2035# "Numéro actuel de la sauvegarde rapide" -#2036# "'Byteswapping' de la rom" -#2037# "Attente du choix d'une rom" +#2036# "'Byteswapping' de la ROM" +#2037# "Attente du choix d'une ROM" #2038# "Chargée" -#2039# "Chargement de la rom" -#2040# "Vous ne pouvez pas ouvrir une rom si tous les plugins (Vidéo, Audio, Contrôles & RSP) ne sont pas initialisés" +#2039# "Chargement de la ROM" +#2040# "Vous ne pouvez pas ouvrir une ROM si tous les plugins (Vidéo, Audio, Contrôles & RSP) ne sont pas initialisés" #2041# "Êtes-vous sur de vouloir effacer ce code ?" #2042# "Effacer le code" #2043# "Nom du code déjà utilisé, utilisez un autre nom" #2044# "Vous avez atteint le nombre maximum de codes triche pour ce jeu" - - diff --git a/Lang/German.pj.Lang b/Lang/German.pj.Lang index 81ddb8457..cad611b57 100644 --- a/Lang/German.pj.Lang +++ b/Lang/German.pj.Lang @@ -133,9 +133,9 @@ #286# "Cheats für das gewählte Spiel in der .cht Datei bearbeiten" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Dateiname" #301# "Name intern" #302# "Name laut GoodN64" @@ -156,7 +156,7 @@ #317# "Anzahl der Spieler" #318# "Force Feedback" -//Select Rom +//Select ROM #320# "ROMverzeichnis für den Browser auswählen" //Messages @@ -204,7 +204,7 @@ #462# "&Zusätzliche Optionen verbergen (empfohlen)" #463# "&Gewählte Cheats speichern" -//Rom Browser Tab +//ROM Browser Tab #480# "&ROMs in der ROMliste (bis 10):" #481# "Stück" #482# "&Verzeichnisse in der Liste (bis 10):" @@ -229,7 +229,7 @@ #507# "&Diese Einstellungen mit denen von der .rdb Datei überschreiben" #508# "Alle Spielstände &zippen" -//Rom Options +//ROM Options #520# "R4300i &Kern:" #521# "selbst&modifizierender Code:" #522# "RDRAM &Grösse:" @@ -267,15 +267,15 @@ //Save Type #620# "Automatisch" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbyte SRAM" -#624# "128kbyte FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Intergration Tab #640# "Mit Project64 verbinden:" -//Rom Notes +//ROM Notes #660# "&Status:" #661# "Vermerke - &Kern:" #662# "Vermerke - &Plugins:" @@ -283,10 +283,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "ROM Info" -//Rom Info Text +//ROM Info Text #801# "Name intern" #802# "Dateiname" #803# "Pfad" @@ -384,7 +384,7 @@ Tip: ROM und Einstellungen überprüfen." Tip: die Datei kann beschädigt sein - Datei und Pfad überprüfen." #2015# "Fehler beim Versuch Datei zu öffnen." #2016# "Fehler beim Versuch .zip Datei zu öffnen." -#2017# "Geladene Datei scheint kein gültiger Nintendo64 ROM zu sein. +#2017# "Geladene Datei scheint kein gültiger Nintendo 64 ROM zu sein. Tip: ROMs mit GoodN64 überprüfen." #2018# "Unbekannte Region" @@ -438,4 +438,4 @@ Tip: versuchen Sie in Einstellungen passende Plugins auszuwählen." //Official support site: http://vdx2004.narod.ru //Made in Ukraine. //ÄäÖöÜüß -//Fin. \ No newline at end of file +//Fin. diff --git a/Lang/German_int.pj.Lang b/Lang/German_int.pj.Lang deleted file mode 100644 index 25a6b4490..000000000 --- a/Lang/German_int.pj.Lang +++ /dev/null @@ -1,440 +0,0 @@ -/********************************************************************************* -* Meta Information * -*********************************************************************************/ -//About DLL -#1 # "Deutsch international" // LANGUAGE ID -#2 # "Volodymyr Dudenko" // Author -#3 # "1.6.3" // Version -#4 # "04. April 2005" // Date - -//About DLL Dialog -#5 # "Uebersetzung (Lang\German.pj.Lang)" -#6 # "Autor" -#7 # "Version" -#8 # "Datum" -#9 # "Homepage des Autors" -#10 # "ROM Datenbank (Project64.rdb)" -#11 # "Cheat Code Datei (Project64.cht)" -#12 # "Zusaetzliche ROM Info (Project64.rdx)" - -//About INI title -#20 # "Dateien im Gebrauch:" - -/********************************************************************************* -* Menu * -*********************************************************************************/ -//File Menu -#100# "&Datei" -#101# "ROM &oeffnen..." -#102# "ROM &Info..." -#103# "Emulation &starten" -#104# "Emulation &beenden" -#105# "ROMverzeichnis &auswaehlen..." -#106# "Browserliste &erneuern" -#107# "&ROMliste" -#108# "&Verzeichnisse" -#109# "Beende&n" - -//System Menu -#120# "&System" -#121# "&Zuruecksetzen" -#122# "&Pause" -#123# "Screensho&t" -#124# "&Geschwindigkeitsbegrenzung" -#125# "Spie&lstand speichern" -#126# "Speichern &unter..." -#127# "Spielst&and laden" -#128# "Laden &von..." -#129# "Speicher&block" -#130# "&Cheats..." -#131# "GS &Knopf" -#132# "&Fortsetzen" - -//Options Menu -#140# "&Optionen" -#141# "Voll&bild" -#142# "&Immer im Vordergrund" -#143# "&Videoplugin..." -#144# "&Audioplugin..." -#145# "&Kontrollerplugin..." -#146# "&RSP Konfiguration..." -#147# "&Prozessorauslastung anzeigen" -#148# "&Einstellungen..." - -//Debugger Menu -#160# "Debugge&r" - -//Language Menu -#175# "S&prache" - -//Help Menu -#180# "&Hilfe" -#181# "Benutzte &Dateien" -#182# "&Ueber Project64" -#183# "&Forum" -#184# "&Homepage" - -//Current Save Slot menu -#190# "&Programmeigen (.pj)" -#191# "Block&1 (.pj1)" -#192# "Block&2 (.pj2)" -#193# "Block&3 (.pj3)" -#194# "Block&4 (.pj4)" -#195# "Block&5 (.pj5)" -#196# "Block&6 (.pj6)" -#197# "Block&7 (.pj7)" -#198# "Block&8 (.pj8)" -#199# "Block&9 (.pj9)" -#200# "Block1&0 (.pj0)" - -//Pop up Menu -#210# "&Spiel spielen" -#211# "&ROM Info" -#212# "Spieleinstellunge&n" -#213# "&Cheats bearbeiten" - -// Menu Descriptions -#250# "Spiel oeffnen (es kann auch in einer .zip Datei sein)" -#251# "Informationen ueber das geladene Spiel anzeigen" -#252# "Emulation des geladenen Spiels starten" -#253# "Emulation des geladenen Spiels beenden" -#254# "Spiele aus diesem Verzeichnis werden im Browser angezeigt" -#255# "Hier druecken wenn neue Spiele ins Verzeichnis hinzugefuegt wurden" -#256# "Programm beenden" -#257# "Geladenes Spiel zuruecksetzen" -#258# "Geladenes Spiel anhalten/fortsetzen" -#259# "Bild vom Bildschirm in das Screenshotverzeichnis speichern" -#260# "Anzahl der Bilder pro Sekunde auf den korrekten Stand bringen" -#261# "Derzeitigen Spielstand im gewaehlten Speicherblock speichern" -#262# "Derzeitigen Spielstand in das gewaehlte Verzeichnis speichern" -#263# "Gespeicherten Spielstand laden" -#264# "Gespeicherten Spielstand auswaehlen und laden" -#265# "GameShark Cheats fuer das geladene Spiel auswaehlen" -#266# "Emuliert das Druecken des GameShark-Knopfes fuer bestimmte Cheats" -#267# "Vom Fenster zu Vollbild umschalten" -#268# "Dieses Fenster ueber allen anderen anzeigen" -#269# "Videoplugin konfigurieren" -#270# "Audioplugin konfigurieren" -#271# "Kontrollerplugin konfigurieren" -#272# "RSP Plugin konfigurieren" -#273# "Informationen ueber die Auslastung des Zentralprozessors anzeigen/verbergen" -#274# "Programmeinstellungen konfigurieren" -#275# "Bedienungsanleitung zum Programm lesen" -#276# "Game FAQ lesen" -#277# "Ueber die Autoren der Hilfsdateien" -#278# "Ueber das Programm und die Autoren" -#279# "Dieses ROM oeffnen" -#280# "Dieses Verzeichnis als ROMverzeichnis auswaehlen" -#281# "Diese Sprache benutzen" -#282# "Speicherblock auswaehlen" -#283# "Das gewaehlte Spiel laden" -#284# "Informationen ueber das gewaehlte Spiel anzeigen" -#285# "Spieleinstellungen in der .rdb Datei konfigurieren" -#286# "Cheats fuer das gewaehlte Spiel in der .cht Datei bearbeiten" - -/********************************************************************************* -* Rom Browser * -*********************************************************************************/ -//Rom Browser Fields -#300# "Dateiname" -#301# "Name intern" -#302# "Name laut GoodN64" -#303# "Status" -#304# "ROM Groesse" -#305# "Vermerke - Kern" -#306# "Vermerke - Plugin" -#307# "Ihre Vermerke in Project64.rdn" -#308# "Cartridge ID" -#309# "Hersteller" -#310# "Region" -#311# "Entwickler" -#312# "CRC1" -#313# "CRC2" -#314# "CIC Chip" -#315# "Erschienen am" -#316# "Genre" -#317# "Anzahl der Spieler" -#318# "Force Feedback" - -//Select Rom -#320# "ROMverzeichnis fuer den Browser auswaehlen" - -//Messages -#340# "Schlechtes ROM? Benutzen Sie GoodN64 und suchen Sie nach neuen Hilfsdateien" - -/********************************************************************************* -* Options * -*********************************************************************************/ -//Options Title -#400# "Einstellungen" - -//Tabs -#401# "Plugins" -#402# "Verzeichnisse" -#403# "Optionen" -#404# "Listen" -#405# "Zusaetzlich" -#406# "ROMeinstellungen" -#407# "Integration" -#408# "Vermerke zum ROM" - -//Plugin Dialog -#420# "Info" -#421# "&RSP Plugin" -#422# "&Videoplugin" -#423# "&Audioplugin" -#424# "&Kontrollerplugin" - -//Directory Dialog -#440# "&Pluginverzeichnis:" -#441# "&ROMverzeichnis:" -#442# "&N64 Spielstaende im Verzeichnis:" -#443# "&Project64 Spielstaende im Verzeichnis:" -#444# "Screenshots im &Verzeichnis:" -#445# "&Letztes ROMverzeichnis speichern" -#446# "Verzeichnis fuer Plugins auswaehlen" -#447# "Verzeichnis fuer ROMs auswaehlen" -#448# "Verzeichnis fuer N64 Spielstaende auswaehlen" -#449# "Verzeichnis fuer Project64 Spielstaende auswaehlen" -#450# "Verzeichnis fuer Screenshots auswaehlen" - -//Options Dialog -#460# "&Emulation anhalten wenn Fenster nicht aktiv" -#461# "&Beim Spielstart zum Vollbild umschalten" -#462# "&Zusaetzliche Optionen verbergen (empfohlen)" -#463# "&Gewaehlte Cheats speichern" - -//Rom Browser Tab -#480# "&ROMs in der ROMliste (bis 10):" -#481# "Stueck" -#482# "&Verzeichnisse in der Liste (bis 10):" -#483# "Stueck" -#484# "&Browser eingeschaltet" -#485# "&Mehrere Verzeichnisse" -#486# "&Nicht in der Browserliste:" -#487# "Reihen&folge:" -#488# "&Hin ->" -#489# "<- &Zurueck" -#490# "H&oeher" -#491# "T&iefer" - -//Advanced Options -#500# "Diese Einstellungen werden benutzt wenn keine .rdb Datei da ist oder wenn die Ueberschreibeoption unten deaktiviert ist." -#501# "&Kern Default" -#502# "&R4300i Kern:" -#503# "&selbstmodifizierender Code:" -#504# "RDRAM &Groesse:" -#505# "&Advanced Block Linking:" -#506# "&Emulation gleich nach dem Laden des Spiels starten" -#507# "&Diese Einstellungen mit denen von der .rdb Datei ueberschreiben" -#508# "Alle Spielstaende &zippen" - -//Rom Options -#520# "R4300i &Kern:" -#521# "selbst&modifizierender Code:" -#522# "RDRAM &Groesse:" -#523# "&Advanced Block Linking:" -#524# "&Speicherart:" -#525# "&Counter Factor:" -#526# "Groesserer &Puffer" -#527# "&TLB" -#528# "&Registercaching" -#529# "SI seltener &unterbrechen" -#530# "SP &Hack" -#531# "Default" -#532# "Audio durch RSP" - -//Core Styles -#540# "Interpreter" -#541# "Rekompilierer" -#542# "Kerne synchronisieren" - -//Self Mod Methods -#560# "nichts unternehmen" -#561# "Cache" -#562# "Speicher beschuetzen" -#563# "Speicher & Cache pruefen" -#564# "Speicher & Cache aendern" -#565# "Speicher besser pruefen" - -//RDRAM Size -#580# "4 MB" -#581# "8 MB" - -//Advanced Block Linking -#600# "Ein" -#601# "Aus" - -//Save Type -#620# "Automatisch" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbyte SRAM" -#624# "128kbyte FlashRAM" - -//Shell Intergration Tab -#640# "Mit Project64 verbinden:" - -//Rom Notes -#660# "&Status:" -#661# "Vermerke - &Kern:" -#662# "Vermerke - &Plugins:" - -/********************************************************************************* -* ROM Information * -*********************************************************************************/ -//Rom Info Title Title -#800# "ROM Info" - -//Rom Info Text -#801# "Name intern" -#802# "Dateiname" -#803# "Pfad" -#804# "Groesse" -#805# "Cartridge ID" -#806# "Hersteller" -#807# "Region" -#808# "CRC1" -#809# "CRC2" -#810# "CIC chip" - -/********************************************************************************* -* Cheats * -*********************************************************************************/ -//Cheat List -#1000# "Cheats" -#1001# "Cheats:" -#1002# "Vermerke: " -#1003# "Alle aktivieren" -#1004# "Alle &deaktivieren" - -//Add Cheat -#1005# "Cheat hinzufuegen" -#1006# "Name:" -#1007# "Code:" -#1008# "Einfuegen" -#1009# "Loeschen" -#1010# " Vermerke: " -#1011# "Zur Datenbank hinzufuegen" -#1022# "Hinzufuegen" -#1023# "Neuer Cheat" -#1024# " " -#1025# "Optionen:" -#1026# " " - -//Code extension -#1012# "Codeerweiterung" -#1013# "Inhalt fuer den Gebrauch mit:" -#1014# "Ja" -#1015# "Nein" - -//Digital Value -#1016# "Groessezahl" -#1017# "Inhalt auswaehlen fuer:" -#1018# "&Inhalt" -#1019# "von" -#1020# "bis" -#1021# "&Vermerke:" - -//Edit Cheat -#1027# "Cheat bearbeiten" -#1028# "Speichern" - -//Cheat Popup Menu -#1040# "Cheat hinzufuegen..." -#1041# "Bearbeiten..." -#1042# "Loeschen" - -/********************************************************************************* -* Messages * -*********************************************************************************/ -#2000# "Angehalten" -#2001# "Fortgesetzt" -#2002# "Programm befindet sich in einem Kreislauf ohne Ausweg. -Emulation wird jetzt beendet. - -Tip: ROM und Einstellungen ueberpruefen." -#2003# "Fehler bei Speichervermittlung" -#2004# "Videoplugin nicht gefunden oder beschaedigt. - -Tip: Sie sollen in Einstellungen ein passendes Videoplugin auswaehlen. -Es soll sich wenigstens ein passendes Plugin im Pluginverzeichnis befinden." -#2005# "Audioplugin nicht gefunden oder beschaedigt. - -Sie sollen in Einstellungen ein passendes Audioplugin auswaehlen. -Es soll sich wenigstens ein passendes Plugin im Pluginverzeichnis befinden." -#2006# "RSP Plugin nicht gefunden oder beschaedigt. - -Tip: Sie sollen in Einstellungen ein passendes RSP Plugin auswaehlen. -Es soll sich wenigstens ein passendes Plugin im Pluginverzeichnis befinden." -#2007# "Kontrollerplugin nicht gefunden oder beschaedigt. - -Tip: Sie sollen in Einstellungen ein passendes Kontrollerplugin auswaehlen. -Es soll sich wenigstens ein passendes Plugin im Pluginverzeichnis befinden." -#2008# "Fehler beim Oeffnen von:" -#2009# "Fehler beim Oeffnen des Wortes - -Tip: ROM und Einstellungen ueberpruefen." -#2010# "Fehler beim Oeffnen des Spielstandes" -#2011# "Fehler beim Oeffnen von EEPROM" -#2012# "Fehler beim Oeffnen von FlashRAM" -#2013# "Fehler beim Oeffnen vom MemPak" -#2014# "Der Versuch eine .zip Datei zu oeffnen hat fehlgeschlagen. - -Tip: die Datei kann beschaedigt sein - Datei und Pfad ueberpruefen." -#2015# "Fehler beim Versuch Datei zu oeffnen." -#2016# "Fehler beim Versuch .zip Datei zu oeffnen." -#2017# "Geladene Datei scheint kein gueltiger Nintendo64 ROM zu sein. - -Tip: ROMs mit GoodN64 ueberpruefen." -#2018# "Unbekannte Region" -#2019# "unbekannter CIC Chip" -#2020# "Unbekannte Datei" -#2021# "Unbekannte Speicherhandlung - -Emulation gestoppt" -#2022# "Unkontrollierbares R4300i OpCode in" -#2023# "Befehl wurde falsch Ausgefuehrt. - -Tip: ROM und Einstellungen ueberpruefen." -#2024# "Spielstand scheint zum ROM nicht zu passen. - -Spielstaende sollen zwischen auf 100% gleichen Spielen gespeichert und geladen werden, -dass heisst REGION und VERSION sollen gleich sein. -Das Laden dieses Spielstandes kann zum Absturz des Spiels und/oder Emulators fuehren. - -Wollen Sie wirklich das Laden fortsetzen?" -#2025# "Kern- oder Programmfehler" -#2026# "Copyright im LUT nicht gefunden. Das Spiel ist nicht mehr funktionsfaehig." -#2027# "Kopierschutzabsage" -#2028# "Pluginwechsel fuehrt zur Zuruecksetzung des laufenden Spiels. - -Tip: wenn Sie den derzeitigen Spielstand nicht verlieren wollen, -antworten Sie Nein und speichern Sie den Spielstand zuerst. - -Plugins wechseln und Spiel zuruecksetzen?" -#2029# "Pluginwechsel" -#2030# "Emulation beendet" -#2031# "Emulation gestartet" -#2032# "Unmoeglich zu laden: Spielstand" -#2033# "Geladen: Spielstand" -#2034# "Gespeichert: Spielstand" -#2035# "Derzeitiger Speicherblock" -#2036# "Anpassung des ROMs" -#2037# "ROM wird ausgewaehlt" -#2038# "Geladen" -#2039# "ROM wird geladen" -#2040# "Sie koennen ein ROM nicht oeffnen bis alle Plugins (Video, Audio, Kontroller und RSP) initialisiert sind. - -Tip: versuchen Sie in Einstellungen passende Plugins auszuwaehlen." -#2041# "Sind Sie sicher dass Sie diesen Cheat loeschen wollen?" -#2042# "Cheat loeschen" -#2043# "Cheatname existiert schon, bitte einen anderen Namen waehlen." -#2044# "Sie haben die maximale Anzahl von Cheats fuer dieses Spiel erreicht." - -//Thanks to hellhound for fixing 266, 274, 2028, 2033 and 2034. -//Thanks to Bartleby for fixing 2024. -//Thanks to DarkThunder for active participation. -//Official support site: http://vdx2004.narod.ru -//Made in Ukraine. -//Fin. diff --git a/Lang/German_localised.pj.Lang b/Lang/German_localised.pj.Lang index 0d208eb4c..b43dc7865 100644 --- a/Lang/German_localised.pj.Lang +++ b/Lang/German_localised.pj.Lang @@ -131,9 +131,9 @@ #286# "Cheats für das gewählte Spiel in der .cht Datei bearbeiten" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Dateiname" #301# "Name intern" #302# "Name laut GoodN64" @@ -153,7 +153,7 @@ #316# "Genre" #317# "Anzahl der Spieler" -//Select Rom +//Select ROM #320# "ROMverzeichnis für den Browser auswählen" //Messages @@ -201,7 +201,7 @@ #462# "&Zusätzliche Optionen verbergen (empfohlen)" #463# "&Gewählte Cheats speichern" -//Rom Browser Tab +//ROM Browser Tab #480# "&ROMs in der ROMliste (bis 10):" #481# "Stück" #482# "&Verzeichnisse in der Liste (bis 10):" @@ -226,7 +226,7 @@ #507# "&Diese Einstellungen mit denen von der .rdb Datei überscreiben" #508# "Alle Spielstände &zippen" -//Rom Options +//ROM Options #520# "R4300i &Kern:" #521# "Self-mod. Code &Methode:" #522# "RDRAM &Grösse:" @@ -263,15 +263,15 @@ //Save Type #620# "Automatisch" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbyte SRAM" -#624# "128kbyte FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Intergration Tab #640# "Mit Project64 verbinden:" -//Rom Notes +//ROM Notes #660# "&Status:" #661# "Vermerke - &Kern:" #662# "Vermerke - &Plugins:" @@ -279,10 +279,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "ROM Info" -//Rom Info Text +//ROM Info Text #801# "Name intern" #802# "Dateiname" #803# "Pfad" @@ -380,7 +380,7 @@ Tip: ROM und Einstellungen überprüfen." Tip: die Datei kann beschädigt sein - Datei und Pfad überprüfen." #2015# "Fehler beim Versuch Datei zu öffnen." #2016# "Fehler beim Versuch .zip Datei zu öffnen." -#2017# "Geladene Datei scheint kein gültiger Nintendo64 ROM zu sein. +#2017# "Geladene Datei scheint kein gültiger Nintendo 64 ROM zu sein. Tip: ROMs mit GoodN64 überprüfen." #2018# "Unbekannte Region" @@ -434,4 +434,4 @@ Tip: versuchen Sie in Einstellungen passende Plugins auszuwählen." //Thanks to DarkThunder. //Made in Germany. //ÄäÖöÜüß -//Fin. \ No newline at end of file +//Fin. diff --git a/Lang/Greek.pj.Lang b/Lang/Greek.pj.Lang index b9a9cf67f..41e84edd2 100644 --- a/Lang/Greek.pj.Lang +++ b/Lang/Greek.pj.Lang @@ -13,9 +13,9 @@ #7 # "Έκδοση" #8 # "ΗμεÏομηνία" #9 # "Ιστοσελίδα" -#10 # "Βάση Ρυθμίσεων Roms (.RDB)" +#10 # "Βάση Ρυθμίσεων ROMs (.RDB)" #11 # "ΑÏχείο Cheats (.CHT)" -#12 # "Βάση ΠληÏοφοÏιών Roms (.RDX)" +#12 # "Βάση ΠληÏοφοÏιών ROMs (.RDX)" //About INI title #20 # "ΤÏέχον RDB:" @@ -25,14 +25,14 @@ *********************************************************************************/ //File Menu #100# "Α&Ïχείο" -#101# "ʼ&νοιγμα Rom" -#102# "&Στοιχεία Rom..." +#101# "ʼ&νοιγμα ROM" +#102# "&Στοιχεία ROM..." #103# "&ΑÏχή Εξομοίωσης" #104# "&Τέλος Εξομοίωσης" -#105# "&Επιλογή Φακέλου Με Roms..." -#106# "Ανανέωση &ΠεÏιηγητή Roms" -#107# "ΠÏόσ&φατα Roms" -#108# "ΠÏόσφατοι Φάκε&λοι Με Roms" +#105# "&Επιλογή Φακέλου Με ROMs..." +#106# "Ανανέωση &ΠεÏιηγητή ROMs" +#107# "ΠÏόσ&φατα ROMs" +#108# "ΠÏόσφατοι Φάκε&λοι Με ROMs" #109# "Έ&ξοδος" //System Menu @@ -87,20 +87,20 @@ //Pop up Menu #210# "Παίξιμο ΠαιχνιδιοÏ" -#211# "ΠληÏοφοÏίες Για Το Rom" +#211# "ΠληÏοφοÏίες Για Το ROM" #212# "Αλλαγή Ρυθμίσεων ΠαιχνιδιοÏ" #213# "Εισαγωγή Των Cheats" // Menu Descriptions -#250# "ʼνοιγμα Ενός N64 Rom" -#251# "Εμφάνιση ΠληÏοφοÏιών Για Το ΦοÏτωμένο Rom" -#252# "Ξεκίνημα Εξομοίωσης ΦοÏτωμένου Rom" -#253# "Σταμάτημα Εξομοίωσης ΦοÏτωμένου Rom" -#254# "ΚαθοÏισμός Μιας Θέσης Με Roms" -#255# "Ανανέωση Της Λίστας Των Roms Στον ΠεÏιηγητή Roms" +#250# "ʼνοιγμα Ενός N64 ROM" +#251# "Εμφάνιση ΠληÏοφοÏιών Για Το ΦοÏτωμένο ROM" +#252# "Ξεκίνημα Εξομοίωσης ΦοÏτωμένου ROM" +#253# "Σταμάτημα Εξομοίωσης ΦοÏτωμένου ROM" +#254# "ΚαθοÏισμός Μιας Θέσης Με ROMs" +#255# "Ανανέωση Της Λίστας Των ROMs Στον ΠεÏιηγητή ROMs" #256# "Κλείσιμο Του Project 64" -#257# "ΕπαναφόÏτωση Του ΤÏέχοντος Rom (ΕπαναφόÏτωση Τυχόν Αλλαγών Στις Ρυθμίσεις)" -#258# "ΠαÏση/ΕπαναφοÏά Εξομοίωσης Του ΤÏέχοντος Rom" +#257# "ΕπαναφόÏτωση Του ΤÏέχοντος ROM (ΕπαναφόÏτωση Τυχόν Αλλαγών Στις Ρυθμίσεις)" +#258# "ΠαÏση/ΕπαναφοÏά Εξομοίωσης Του ΤÏέχοντος ROM" #259# "ΔημιουÏγία Μιας Bitmap Εικόνας Της ΤÏέχουσας Οθόνης" #260# "ΟÏιοθέτηση Των FPS Στη Σωστή ΤαχÏτητα Του Î64" #261# "Αποθήκευση Του ΤÏέχοντος Σημείου Του ΠαιχνιδιοÏ" @@ -121,8 +121,8 @@ #276# "Απαντήσεις Σε ΠÏοβλήματα Σχετικά Με Κάποια Παιχνίδια" #277# "ΠληÏοφοÏίες Σχετικά Με Τους ΔημιουÏγοÏÏ‚ Του Project 64" #278# "ΠληÏοφοÏίες Για Τους ΔημιουÏγοÏÏ‚ Των ΑÏχείων ΥποστήÏιξης" -#279# "ʼνοιγμα Î‘Ï…Ï„Î¿Ï Î¤Î¿Ï… Rom" -#280# "Επιλογή Î‘Ï…Ï„Î¿Ï Î¤Î¿Ï… Φακέλου Για Θέση Των Roms" +#279# "ʼνοιγμα Î‘Ï…Ï„Î¿Ï Î¤Î¿Ï… ROM" +#280# "Επιλογή Î‘Ï…Ï„Î¿Ï Î¤Î¿Ï… Φακέλου Για Θέση Των ROMs" #281# "Επιλογή Αυτής Της Γλώσσας" #282# "Επιλογή Αυτής Της Θέσης Αποθήκευσης" #283# "Παίξιμο Επιλεγμένου ΠαιχνιδιοÏ" @@ -131,16 +131,16 @@ #286# "Εισαγωγή Cheats Για Το Επιλεγμένο Παιχνίδι" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Όνομα ΑÏχείου" #301# "ΕσωτεÏικό Όνομα" #302# "Καλό Όνομα" #303# "Κατάσταση" -#304# "Μέγεθος Rom" +#304# "Μέγεθος ROM" #305# "Σημειώσεις (ΠυÏήνας)" -#306# "Σημειώσεις (Plugins)" +#306# "Σημειώσεις (plugins)" #307# "Σημειώσεις (ΧÏήστης)" #308# "ID Κασέτας" #309# "Κατασκευαστής" @@ -153,11 +153,11 @@ #316# "ΚατηγοÏία" #317# "Παίχτες" -//Select Rom -#320# "Επιλογή ΤÏέχοντος Φακέλου Ως Φακέλου Με Roms" +//Select ROM +#320# "Επιλογή ΤÏέχοντος Φακέλου Ως Φακέλου Με ROMs" //Messages -#340# "Κακό Rom; ΧÏησιμοποιήστε Το GoodN64 Και Αναβαθμίστε Το RDB" +#340# "Κακό ROM; ΧÏησιμοποιήστε Το GoodN64 Και Αναβαθμίστε Το RDB" /********************************************************************************* * Options * @@ -169,11 +169,11 @@ #401# "Plugins" #402# "Θέσεις" #403# "Επιλογές" -#404# "Επιλογή Rom" +#404# "Επιλογή ROM" #405# "Για ΠÏοχωÏημένους" -#406# "Ρυθμίσεις Rom" +#406# "Ρυθμίσεις ROM" #407# "Συσχετισμός ΑÏχείων" -#408# "Σημειώσεις Rom" +#408# "Σημειώσεις ROM" //Plugin Dialog #420# "Σχετικά" @@ -184,29 +184,29 @@ //Directory Dialog #440# "&Θέση Των Plugins" -#441# "Θ&έση Των Roms" +#441# "Θ&έση Των ROMs" #442# "Θέση &Αυτόματων ΑποθηκεÏσεων" #443# "Θέση &Στιγμιαίων ΑποθηκεÏσεων" #444# "Θέση Ει&κόνων" -#445# "&Τελευταία Θέση Ανοίγματος Rom" +#445# "&Τελευταία Θέση Ανοίγματος ROM" #446# "Επιλογή Θέσης Plugins" -#447# "Επιλογή Θέσης Roms" +#447# "Επιλογή Θέσης ROMs" #448# "Επιλογή Θέσης Αυτόματων ΑποθηκεÏσεων" #449# "Επιλογή Θέσης Στιγμιαίων ΑποθηκεÏσεων" #450# "Επιλογή Θέσης Εικόνων" //Options Dialog #460# "&ΠαÏση Εξομοίωσης Σε ΑνενεÏγό ΠαÏάθυÏο" -#461# "ΠλήÏης &Οθόνη Με ΦόÏτωμα Rom" +#461# "ΠλήÏης &Οθόνη Με ΦόÏτωμα ROM" #462# "&ΑπόκÏυψη ΠÏοχωÏημένων Ρυθμίσεων" #463# "&ΚÏάτηση Των Cheats Που Επιλέχθηκαν" -//Rom Browser Tab -#480# "Α&Ïιθμός ΠÏόσφατων Roms (Μέγ. 10):" -#481# "Roms" +//ROM Browser Tab +#480# "Α&Ïιθμός ΠÏόσφατων ROMs (Μέγ. 10):" +#481# "ROMs" #482# "ΑÏιθμός ΠÏόσφατων &Φακέλων (Μεγ. 10):" #483# "Φάκ." -#484# "&ΠεÏιηγητής Roms" +#484# "&ΠεÏιηγητής ROMs" #485# "&ΧÏήση Υποφακέλων" #486# "&Διαθέσιμα Πεδία:" #487# "&Εμφάνιση Με Αυτή Τη ΣειÏά:" @@ -223,11 +223,11 @@ #503# "Self-Mod Code &Μέθοδος:" #504# "Μέ&γεθος RDRAM Μνήμης:" #505# "&Advanced Block Linking:" -#506# "Α&Ïχή Εξομοίωσης Με ʼνοιγμα Rom" +#506# "Α&Ïχή Εξομοίωσης Με ʼνοιγμα ROM" #507# "Πά&ντα ΠÏοτεÏαιότητα Στις Ρυθμίσεις Του RDB" #508# "Αυτόματη &Συμπίεση Στιγμιαίων ΑποθηκεÏσεων" -//Rom Options +//ROM Options #520# "Είδος &ΠυÏήνα R4300i:" #521# "Self-Modifying Code &Μέθοδος:" #522# "Μέ&γεθος RDRAM Μνήμης:" @@ -264,30 +264,30 @@ //Save Type #620# "Αυτόματος" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "128kbyte Flashram" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Integration Tab #640# "Συσχετισμός ΑÏχείων Επέκτασης:" -//Rom Notes -#660# "&Κατάσταση Rom:" +//ROM Notes +#660# "&Κατάσταση ROM:" #661# "&Σημειώσεις ΠυÏήνα:" #662# "Σ&ημειώσεις Plugin:" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title -#800# "Στοιχεία Rom" +//ROM Info Title +#800# "Στοιχεία ROM" -//Rom Info Text +//ROM Info Text #801# "ΕσωτεÏικό Όνομα:" #802# "Όνομα ΑÏχείου:" #803# "Τοποθεσία:" -#804# "Μέγεθος Rom:" +#804# "Μέγεθος ROM:" #805# "ID Κασέτας:" #806# "Κατασκευαστής:" #807# "ΠεÏιοχή:" @@ -350,7 +350,7 @@ #2002# "Μόνιμο Κόλλημα ΧωÏίς Δυνατότητα Εξόδου. Η Εξομοίωση Θα Σταματήσει. -Βεβαιωθείτε Ότι Το Rom Είναι Καλό Και Ελέγξτε Τις Ρυθμίσεις Του." +Βεβαιωθείτε Ότι Το ROM Είναι Καλό Και Ελέγξτε Τις Ρυθμίσεις Του." #2003# "Απέτυχε Îα Κατανείμει Την Μνήμη" #2004# "Το Επιλεγμένο Plugin ΓÏαφικών Λείπει Ή Είναι ʼκυÏο. @@ -371,19 +371,19 @@ #2008# "Απέτυχε Îα ΦοÏτώσει Το Plugin:" #2009# "Απέτυχε Îα ΦοÏτώσει Τη Τιμή -Βεβαιωθείτε Ότι Το Rom Είναι Καλό Και Ελέγξτε Τις Ρυθμίσεις Του." +Βεβαιωθείτε Ότι Το ROM Είναι Καλό Και Ελέγξτε Τις Ρυθμίσεις Του." #2010# "Απέτυχε Îα Ανοίξει Το Αποθηκευμένο ΑÏχείο" -#2011# "Απέτυχε Îα Ανοίξει Την Eeprom" -#2012# "Απέτυχε Îα Ανοίξει Τη Flashram" -#2013# "Απέτυχε Îα Ανοίξει Το MemPak" +#2011# "Απέτυχε Îα Ανοίξει Την EEPROM" +#2012# "Απέτυχε Îα Ανοίξει Τη flash RAM" +#2013# "Απέτυχε Îα Ανοίξει Το mempak" #2014# "Απέτυχε Îα Ανοίξει Το Συμπιεσμένο ΑÏχείο. Πιθανώς Îα Είναι ΚατεστÏαμμένο - Ελέγξτε Επίσης Τη ΔιαδÏομή Του." #2015# "Απέτυχε Îα Ανοίξει Το ΑÏχείο." #2016# "ΠÏοέκυψε Σφάλμα Στη ΠÏοσπάθεια Ανοίγματος Του Συμπιεσμένου ΑÏχείου." -#2017# "Το ΑÏχείο Αυτό Δεν Είναι Ένα ΈγκυÏο Nintendo64 Rom. +#2017# "Το ΑÏχείο Αυτό Δεν Είναι Ένα ΈγκυÏο Nintendo 64 ROM. -Ελέγξτε Τα Roms Σας Με Το GoodN64." +Ελέγξτε Τα ROMs Σας Με Το GoodN64." #2018# "ʼγνωστη ΠεÏιοχή" #2019# "ʼγνωστο Cic Chip" #2020# "ʼγνωστος ΤÏπος ΑÏχείου" @@ -393,18 +393,18 @@ #2022# "Μη ΑναγνωÏίσιμος R4300i OpCode Σε" #2023# "Εκτέλεση Από Μη ΚαθοÏισμένη ΠεÏιοχή. -Βεβαιωθείτε Ότι Το Rom Είναι Καλό Και Ελέγξτε Τις Ρυθμίσεις Του." -#2024# "Η Αποθήκευση Αυτή Δεν ΤαιÏιάζει Στο ΤÏέχον Rom. +Βεβαιωθείτε Ότι Το ROM Είναι Καλό Και Ελέγξτε Τις Ρυθμίσεις Του." +#2024# "Η Αποθήκευση Αυτή Δεν ΤαιÏιάζει Στο ΤÏέχον ROM. -Οι Στοιγμιαίες ΑποθηκεÏσεις ΠÏέπει Îα ΦοÏτώνονται Ανάμεσα Σε 100% Όμοια Roms, +Οι Στοιγμιαίες ΑποθηκεÏσεις ΠÏέπει Îα ΦοÏτώνονται Ανάμεσα Σε 100% Όμοια ROMs, Η ΠεÏιοχή Και Η Έκδοση ΠÏέπει Îα Είναι Ίδια. -Αν ΦοÏτώσετε Αυτή Την Αποθήκευση Με Αυτό Το Rom Θα ΥπάÏξει ΔυσλειτουÏγία Στο Παιχνίδι. +Αν ΦοÏτώσετε Αυτή Την Αποθήκευση Με Αυτό Το ROM Θα ΥπάÏξει ΔυσλειτουÏγία Στο Παιχνίδι. Είστε ΣίγουÏοι Ότι Θέλετε Îα Συνεχιστεί Η ΦόÏτωση;" #2025# "Σφάλμα ΕφαÏμογής/ΠυÏήνα" #2026# "Η ΣειÏά Copyright Δεν Î’Ïέθηκε Στο LUT. Το Παιχνίδι Δεν Θα ΛειτουÏγήσει Πλέον." #2027# "Αποτυχία Λόγω ΠÏοστασίας ΠαιχνιδιοÏ" -#2028# "Η Αλλαγή Του Plugin Απαιτεί Την Επανεκκίνηση Του Rom. +#2028# "Η Αλλαγή Του Plugin Απαιτεί Την Επανεκκίνηση Του ROM. Για Îα Μη Χάσετε Τη Θέση Σας Στο Παιχνίδι Απαντήστε Όχι Και ΑποθηκεÏστε Το ΠÏώτα. Αλλαγή Plugin Και Επανεκκίνηση ΤώÏα;" @@ -415,12 +415,12 @@ #2033# "ΦοÏτώθηκε Η Θέση Αποθήκευσης" #2034# "Αποθήκευση Θέσης Σε" #2035# "ΤÏέχουσα Θέση Αποθήκευσης" -#2036# "Ανταλλαγή Byte Του Rom" -#2037# "Επιλογή Ενός N64 Rom" +#2036# "Ανταλλαγή Byte Του ROM" +#2037# "Επιλογή Ενός N64 ROM" #2038# "ΦοÏτώθηκε" -#2039# "ΦόÏτωση Rom" -#2040# "Δεν ΜπόÏεσε Îα ΦοÏτωθεί Το Rom Επειδή Κάποιο Plugin Δεν Εισάχθηκε Σωστά" +#2039# "ΦόÏτωση ROM" +#2040# "Δεν ΜπόÏεσε Îα ΦοÏτωθεί Το ROM Επειδή Κάποιο Plugin Δεν Εισάχθηκε Σωστά" #2041# "Είστε ΣίγουÏοι Ότι Θέλετε Îα ΔιαγÏαφεί Το Cheat;" #2042# "ΔιαγÏαφή Cheat" #2043# "Αυτό Το Όνομα Του Cheat Î’Ïίσκεται Ήδη Σε ΧÏήση" -#2044# "Φτάσατε Το Ανώτατο ÎŒÏιο Των Cheats Για Αυτό Το Rom" +#2044# "Φτάσατε Το Ανώτατο ÎŒÏιο Των Cheats Για Αυτό Το ROM" diff --git a/Lang/Hungarian.pj.Lang b/Lang/Hungarian.pj.Lang index 5f7a24038..eb4c767e5 100644 --- a/Lang/Hungarian.pj.Lang +++ b/Lang/Hungarian.pj.Lang @@ -133,9 +133,9 @@ #286# "Kijelölt játékhoz csalások szerkesztése" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Fájl név" #301# "Eredeti név" #302# "Belsõ név" @@ -156,7 +156,7 @@ #317# "Játékosok" #318# "Irányító vibráció" -//Select Rom +//Select ROM #320# "A jelenlegi ROM mappa kiválasztása" //Messages @@ -204,7 +204,7 @@ #462# "Haladó beállítások elrejtése" #463# "Emlékezés a kijelölt csalásokra" -//Rom Browser Tab +//ROM Browser Tab #480# "Emlékezés ennyi ROM-ra (max. 10):" #481# "ROM" #482# "Emlékezés ennyi ROM könyvtárra (max. 10):" @@ -229,7 +229,7 @@ #507# "Alapértelmezettek felülírása ini-bõl mindig?" #508# "Gyors mentések automatikus tömörítése" -//Rom Options +//ROM Options #520# "Processzor mag fajtája:" #521# "Önmódosító kód eljárás:" #522# "Memória méret:" @@ -267,15 +267,15 @@ //Save Type #620# "Elõszöri mentés fajta használata" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "Flashram" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "Fájl kiterjesztés társítása:" -//Rom Notes +//ROM Notes #660# "ROM állapot:" #661# "Mag infó:" #662# "Plugin infó:" @@ -283,10 +283,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title +//ROM Info Title #800# "ROM információ" -//Rom Info Text +//ROM Info Text #801# "ROM név:" #802# "Fájl név:" #803# "Elérés:" @@ -372,8 +372,8 @@ Ellenõrizd, hogy legyen legalább egy kompatibilis plugin fájl a plugin könyv ROM és ROM beállítások hitelesítése." #2010# "Mentett állás megnyitása sikertelen" -#2011# "Eeprom megnyitása sikertelen" -#2012# "Flashram megnyitása sikertelen" +#2011# "EEPROM megnyitása sikertelen" +#2012# "Flash RAM megnyitása sikertelen" #2013# "Mempak megnyitása sikertelen" #2014# "Zip fájl megnyitási kisérlet sikertelen. Hibás vagy sérült zip fájl - ellenõrizd az elérést és a fájlt. @@ -381,7 +381,7 @@ Hibás vagy sérült zip fájl - ellenõrizd az elérést és a fájlt. Indítsd újra a programot." #2015# "Fájl megnyitási kisérlet sikertelen." #2016# "Hiba lépett fel a zip fájl megnyitása közben." -#2017# "Fájl betöltve valószínûleg nem Nintendo64 ROM. +#2017# "Fájl betöltve valószínûleg nem Nintendo 64 ROM. Ellenõrizd a ROM-jaidat GoodN64-el." #2018# "Ismeretlen terület" diff --git a/Lang/Italian.pj.Lang b/Lang/Italian.pj.Lang index e76e0811f..c9b1619ea 100644 --- a/Lang/Italian.pj.Lang +++ b/Lang/Italian.pj.Lang @@ -94,7 +94,7 @@ #213# "Modifica i Trucchi" // Menu Descriptions -#250# "Carica una ROM per Nintendo64" +#250# "Carica una ROM per Nintendo 64" #251# "Mostra le informazioni sulla ROM caricata" #252# "Avvia l'emulazione della ROM caricata" #253# "Ferma l'emulazione della ROM caricata" @@ -133,17 +133,17 @@ #286# "Modifica i trucchi del gioco nel file CHT" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Nome File" #301# "Nome interno" #302# "Nome GoodN64" #303# "Stato" #304# "Dimensione della ROM" -#305# "Note (Core)" -#306# "Note (Plugins)" -#307# "Note (Utente)" +#305# "Note (core)" +#306# "Note (plugins)" +#307# "Note (utente)" #308# "ID Cartuccia" #309# "Produttore" #310# "Regione" @@ -156,7 +156,7 @@ #317# "Giocatori" #318# "Force Feedback" -//Select Rom +//Select ROM #320# "Scegli la Cartella delle ROM" //Messages @@ -204,13 +204,13 @@ #462# "Nascondi le impostazioni avanzate" #463# "&Ricorda i trucchi scelti" -//Rom Browser Tab +//ROM Browser Tab #480# "Max # di ROM ricordato (0-10)" #481# "ROM" #482# "Max # di directory delle ROM ricordato (0-10)" #483# "cartelle" #484# "Usa il ROM Browser" -#485# "Usa il Directory recursion" +#485# "Usa il directory recursion" #486# "Campi disponibili:" #487# "Mostra i campi in questo ordine:" #488# "&Aggiungi ->" @@ -229,7 +229,7 @@ #507# "Sovrascrivi le impostazioni predefinite con quelli dell'RDB" #508# "Comprimi automaticamente i salvataggi rapidi" -//Rom Options +//ROM Options #520# "Stile del core della CPU" #521# "Codice Self-modifying" #522# "Grandezza della RDRAM" @@ -267,26 +267,26 @@ //Save Type #620# "Riconosci automaticamente" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32ko SRAM" -#624# "128ko FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-ko SRAM" +#624# "128-ko flash RAM" //Shell Intergration Tab #640# "Associa le estensioni dei files" -//Rom Notes +//ROM Notes #660# "Stato" -#661# "Note (Core)" -#662# "Note (Plugins)" +#661# "Note (core)" +#662# "Note (plugins)" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "Informazioni sulla ROM" -//Rom Info Text +//ROM Info Text #801# "Nome Interno" #802# "Nome File" #803# "Cartella" @@ -373,8 +373,8 @@ Verifica le Impostazioni e seleziona un plugin dei Controlli compatibile." Verifica la ROM e le sue Impostazioni." #2010# "Errore all'apertura del salvataggio rapido" #2011# "Errore all'apertura dell'EEPROM" -#2012# "Errore all'apertura della FlashRAM" -#2013# "Errore all'apertura del MemPak" +#2012# "Errore all'apertura della flash RAM" +#2013# "Errore all'apertura del mempak" #2014# "Il tentativo di aprire il file zip è fallito. File zip mancante o corrotto - verifica il percorso e il file stesso." diff --git a/Lang/Italian_alternative.pj.Lang b/Lang/Italian_alternative.pj.Lang index 28a5eddf0..f8e9acb05 100644 --- a/Lang/Italian_alternative.pj.Lang +++ b/Lang/Italian_alternative.pj.Lang @@ -131,16 +131,16 @@ #286# "Aggiungi/modifica i trucchi per questo gioco nel file CHT" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Nome File" #301# "Titolo" #302# "Nome GoodN64" #303# "Stato" #304# "Dimensioni della ROM" -#305# "Note (Core)" -#306# "Note (Plugins)" +#305# "Note (core)" +#306# "Note (plugins)" #307# "Note dell'utente)" #308# "ID Cartuccia" #309# "Produttore" @@ -153,8 +153,8 @@ #316# "Genere" #317# "Giocatori" -//Select Rom -#320# "Scegli una Directory contente ROM per il ROM-Browser" +//Select ROM +#320# "Scegli una directory contente ROM per il ROM-Browser" //Messages #340# "La ROM non funziona? Usa il GoodN64 oppure cerca un file RDB piu' aggiornato" @@ -167,7 +167,7 @@ //Tabs #401# "Scelta Plugins" -#402# "Directory" +#402# "directory" #403# "Opzioni" #404# "Gestione delle ROM" #405# "Avanzate" @@ -187,13 +187,13 @@ #441# "Directory ROM" #442# "Directory dei salvataggi del N64" #443# "Directory dei salvataggi rapidi" -#444# "Directory in cui verranno stipati gli Screenshot" +#444# "Directory in cui verranno stipati gli screenshot" #445# "Ricorda l'ultima directory da cui e' stata aperta una ROM" -#446# "Scegli una Directory per i Plugins" -#447# "Scegli una Directory per le ROM" -#448# "Scegli una Directory per i salvataggi del N64" -#449# "Scegli una Directory per i salvataggi rapidi" -#450# "Scegli una Directory per gli Screenshot" +#446# "Scegli una directory per i Plugins" +#447# "Scegli una directory per le ROM" +#448# "Scegli una directory per i salvataggi del N64" +#449# "Scegli una directory per i salvataggi rapidi" +#450# "Scegli una directory per gli screenshot" //Options Dialog #460# "&Metti in pausa quando la finestra del Project64 non è attiva" @@ -201,13 +201,13 @@ #462# "Nascondi i settaggi avanzati (raccomandato)" #463# "&Ricorda i trucchi scelti per ogni singolo gioco" -//Rom Browser Tab -#480# "Numero di Rom da ricordare (0-10)" +//ROM Browser Tab +#480# "Numero di ROM da ricordare (0-10)" #481# "ROM" #482# "Numero di directory con ROM da ricordare (0-10)" -#483# "directory" -#484# "Usa il Rom-Browser" -#485# "Usa il Directory recursion" +#483# "Directory" +#484# "Usa il ROM-Browser" +#485# "Usa il directory recursion" #486# "Campi disponibili:" #487# "Mostra i campi in quest'ordine:" #488# "&Aggiungi ->" @@ -226,7 +226,7 @@ #507# "Sovrascrivi questi settaggi predefiniti con quelli presi dall' RDB" #508# "Comprimi i salvataggi rapidi" -//Rom Options +//ROM Options #520# "Core della CPU:" #521# "Metodo del Self-mode:" #522# "Grandezza della RDRAM:" @@ -263,26 +263,26 @@ //Save Type #620# "Riconosci il salvataggio automaticamente" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32ko SRAM" -#624# "128ko FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-ko SRAM" +#624# "128-ko flash RAM" //Shell Intergration Tab #640# "Seleziona i file da associare al Project64" -//Rom Notes +//ROM Notes #660# "Stato" -#661# "Note (Core)" -#662# "Note (Plugins)" +#661# "Note (core)" +#662# "Note (plugins)" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "Informazioni sulla ROM" -//Rom Info Text +//ROM Info Text #801# "Titolo" #802# "Nome File" #803# "Path" @@ -369,7 +369,7 @@ Controlla di avere almeno un plugin per i controlli compatibile con pj64 nella d Verifica la ROM e i suoi settaggi." #2010# "Caricamento del salvataggio rapido non riuscito" #2011# "Caricamento EEPROM fallito" -#2012# "Caricamento FlashRAM fallito" +#2012# "Caricamento flash RAM fallito" #2013# "Caricamento del MemoryPack fallito" #2014# "Il tentativo di aprire il file zip è fallito. @@ -421,5 +421,3 @@ Vuoi riavviare la ROM adesso?" #2042# "Rimuovi trucco" #2043# "Il nome del trucco e' già usato, scegline un altro " #2044# "Hai raggiunto il massimo numero di trucchi per il gioco" - - diff --git a/Lang/Japanese.pj.Lang b/Lang/Japanese.pj.Lang index 81b2dfea1..779b3c9b8 100644 --- a/Lang/Japanese.pj.Lang +++ b/Lang/Japanese.pj.Lang @@ -4,8 +4,8 @@ //About DLL #1 # "Japanese" // LANGUAGE ID #2 # "Nekokabu" // Author -#3 # "1.6.3" // Version -#4 # "2005/4/5" // Date +#3 # "2.2" // Version +#4 # "2015/3/5" // Date //About DLL Dialog #5 # "ç¾åœ¨ã®è¨€èªž" @@ -49,6 +49,8 @@ #130# "ãƒãƒ¼ãƒˆ(&C)..." #131# "GSボタン(&G)" #132# "å†é–‹(&U)" +#133# "ソフトリセット(&S)" +#134# "ãƒãƒ¼ãƒ‰ãƒªã‚»ãƒƒãƒˆ(&H)" //Options Menu #140# "オプション(&O)" @@ -92,9 +94,23 @@ #211# "ロム情報(&I)" #212# "ロム設定ã®ç·¨é›†(&S)" #213# "ãƒãƒ¼ãƒˆã®ç·¨é›†(&E)" +#214# "ビデオプラグイン" + +//Alternate Name to save Slot +#220# "デフォルト" +#221# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 1" +#222# "スロット - 2" +#223# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 3" +#224# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 4" +#225# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 5" +#226# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 6" +#227# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 7" +#228# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 8" +#229# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 9" +#230# "ä¿å­˜ã™ã‚‹ã‚¹ãƒ­ãƒƒãƒˆ - 10" // Menu Descriptions -#250# "Nintendo64ロムイメージを開ãã¾ã™" +#250# "N64ロムイメージを開ãã¾ã™" #251# "ç¾åœ¨é–‹ã„ã¦ã„るロムã«ã¤ã„ã¦ã®æƒ…報を表示ã—ã¾ã™" #252# "ç¾åœ¨é–‹ã„ã¦ã„るロムã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’開始ã—ã¾ã™" #253# "ç¾åœ¨é–‹ã„ã¦ã„るロムã®ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’終了ã—ã¾ã™" @@ -133,9 +149,9 @@ #286# "é¸æŠžã—ãŸã‚²ãƒ¼ãƒ ã®ãƒãƒ¼ãƒˆã‚’編集ã—ã¾ã™" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "ファイルå" #301# "内部å" #302# "Good Name" @@ -155,12 +171,13 @@ #316# "ジャンル" #317# "プレイヤー" #318# "振動機能" +#319# "ファイル形å¼" -//Select Rom +//Select ROM #320# "ロムディレクトリをé¸æŠžã—ã¦ä¸‹ã•ã„" //Messages -#340# "ä¸æ˜Žãªãƒ­ãƒ ? GoodN64を使用ã™ã‚‹ã‹INIファイルをアップデートã—ã¦ä¸‹ã•ã„" +#340# "ä¸æ˜Žãªãƒ­ãƒ ? GoodN64を使用ã™ã‚‹ã‹RDBファイルをアップデートã—ã¦ä¸‹ã•ã„" /********************************************************************************* * Options * @@ -177,6 +194,9 @@ #406# "ロム設定" #407# "関連付ã‘" #408# "ロム情報" +#409# "ショートカット設定" +#410# "状態" +#411# "リコンパイラ" //Plugin Dialog #420# "ã‚¢ãƒã‚¦ãƒˆ" @@ -184,6 +204,9 @@ #422# "ビデオプラグイン:" #423# "オーディオプラグイン:" #424# "インプットプラグイン:" +#425# "ãƒã‚¤ãƒ¬ãƒ™ãƒ«GFXを使用ã™ã‚‹" +#426# "ãƒã‚¤ãƒ¬ãƒ™ãƒ«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’使用ã™ã‚‹" +#427# "** 標準プラグインを使用ã™ã‚‹ **" //Directory Dialog #440# "プラグインフォルダ:" @@ -197,17 +220,22 @@ #448# "セーブフォルダã®é¸æŠž" #449# "クイックセーブフォルダã®é¸æŠž" #450# "スクリーンショットフォルダã®é¸æŠž" +#451# "テクスãƒãƒ£ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª: " +#452# "テクスãƒãƒ£ãƒ‘ックディレクトリã®é¸æŠž" //Options Dialog #460# "ウィンドウãŒã‚¢ã‚¯ãƒ†ã‚£ãƒ–ã˜ã‚ƒãªã„時ã¯ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³åœæ­¢(&P)" #461# "ロムを読ã¿è¾¼ã‚“ã ã‚‰ãƒ•ãƒ«ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã«ã™ã‚‹(&F)" #462# "高度ãªè¨­å®šã‚’éš ã™(&H)" #463# "å‰å›žä½¿ã£ãŸãƒãƒ¼ãƒˆã‚’記憶ã™ã‚‹(&R)" +#464# "ロムã®å®Ÿè¡Œä¸­ã¯ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã‚»ãƒ¼ãƒãƒ¼ã‚’無効ã«ã™ã‚‹" +#465# "フレームレートを表示" +#466# "表示形å¼ã«ã‚ˆã£ã¦ãƒ•ãƒ¬ãƒ¼ãƒ ãƒ¬ãƒ¼ãƒˆã‚’変更ã™ã‚‹:" -//Rom Browser Tab -#480# "最近開ã„ãŸãƒ­ãƒ ãƒ•ã‚¡ã‚¤ãƒ«ã®è¡¨ç¤ºã™ã‚‹æ•°ï¼ˆæœ€å¤§10):" +//ROM Browser Tab +#480# "最近開ã„ãŸãƒ­ãƒ ãƒ•ã‚¡ã‚¤ãƒ«ã®è¡¨ç¤ºã™ã‚‹æ•°(0~10):" #481# "個" -#482# "最近開ã„ãŸãƒ­ãƒ ãƒ•ã‚©ãƒ«ãƒ€ã®è¡¨ç¤ºã™ã‚‹æ•°ï¼ˆæœ€å¤§10):" +#482# "最近開ã„ãŸãƒ­ãƒ ãƒ•ã‚©ãƒ«ãƒ€ã®è¡¨ç¤ºã™ã‚‹æ•°(0~10):" #483# "個" #484# "ロムブラウザを使用ã™ã‚‹(&U)" #485# "サブフォルダも検索(&S)" @@ -217,22 +245,29 @@ #489# "<- 削除" #490# "上ã¸" #491# "下ã¸" +#492# "ロムブラウザを自動更新ã™ã‚‹" //Advanced Options #500# "ã“ã“ã§ã®å¤‰æ›´ã¯ã€æ–°ã—ãロムを開ãã‹ç¾åœ¨ã®ãƒ­ãƒ ã‚’リセットã™ã‚‹ã¾ã§å映ã•ã‚Œã¾ã›ã‚“" #501# "デフォルト設定:" #502# "CPUコアスタイル(&C):" -#503# "自己修正コード処ç†æ–¹æ³•(&M):" -#504# "メモリー拡張パック(&E):" +#503# "自己書æ›ã‚³ãƒ¼ãƒ‰å‡¦ç†æ–¹æ³•(&M):" +#504# "メモリサイズ(&E):" #505# "アドãƒãƒ³ã‚¹ãƒ–ロックリンク(&A):" #506# "ロムを開ã„ãŸã‚‰ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã‚’開始ã™ã‚‹(&O)" #507# "RDBファイルã‹ã‚‰è¨­å®šã‚’読ã¿è¾¼ã‚€(&R)" #508# "クイックセーブを圧縮ã—ã¦ä¿å­˜ã™ã‚‹(&Z)" +#509# "デãƒãƒƒã‚¬ã‚’有効ã«ã™ã‚‹" +#510# "キャッシュ" +#511# "PI DMA" +#512# "Start Changed" +#513# "プロテクトメモリー" +#514# "TLB割り当ã¦è§£é™¤" -//Rom Options +//ROM Options #520# "CPUコアスタイル(&C):" -#521# "自己修正コード処ç†æ–¹æ³•(&M):" -#522# "メモリー拡張パック(&E):" +#521# "自己書æ›ã‚³ãƒ¼ãƒ‰å‡¦ç†æ–¹æ³•(&M):" +#522# "メモリサイズ(&E):" #523# "アドãƒãƒ³ã‚¹ãƒ–ロックリンク(&A):" #524# "セーブタイプ(&S):" #525# "カウンターファクター(&F):" @@ -243,6 +278,13 @@ #530# "SPãƒãƒƒã‚¯(&P)" #531# "デフォルト設定" #532# "RSPオーディオシグナル" +#533# "オーディオタイï¾ï¾ï½¸ï¾žã®ä¿®æ­£" +#534# "関数検索方法:" +#535# "カスタム自己書æ›æ–¹æ³•" +#536# "オーディオã«åŒæœŸ" +#537# "AIカウント/ãƒã‚¤ãƒˆ" +#538# "32bitエンジン" +#539# "DP割り込ã¿é…延" //Core Styles #540# "インタプリタ" @@ -256,10 +298,16 @@ #563# "ãƒã‚§ãƒƒã‚¯ãƒ¡ãƒ¢ãƒªãƒ¼&キャッシュ" #564# "ãƒã‚§ãƒ³ã‚¸ãƒ¡ãƒ¢ãƒªãƒ¼&キャッシュ" #565# "高度ãªãƒã‚§ãƒƒã‚¯ãƒ¡ãƒ¢ãƒªãƒ¼" +#566# "キャッシュ上ã®ã‚³ãƒ¼ãƒ‰ã‚’クリア" + +//Function Lookup memthod +#570# "物ç†æ¤œç´¢ãƒ†ãƒ¼ãƒ–ル" +#571# "仮想検索テーブル" +#572# "メモリã®å¤‰æ›´" //RDRAM Size -#580# "使用ã—ãªã„" -#581# "使用ã™ã‚‹" +#580# "4MB" +#581# "8MB" //Advanced Block Linking #600# "ON" @@ -267,36 +315,65 @@ //Save Type #620# "自動検出" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "Flashram" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "ファイルã®é–¢é€£ä»˜ã‘(&F):" -//Rom Notes +//ROM Notes #660# "ロム情報(&R):" #661# "コア情報(&C):" #662# "プラグイン情報(&P):" +// Accelerator Selector +#680# "CPUã®çŠ¶æ…‹:" +#681# "メニュー項目:" +#682# "ç¾åœ¨ã®ã‚­ãƒ¼:" +#683# "æ–°è¦ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã®é¸æŠž:" +#684# "ç¾åœ¨ã®å‰²ã‚Šå½“ã¦:" +#685# "割り当ã¦" +#686# "削除" +#687# "ã™ã¹ã¦ãƒªã‚»ãƒƒãƒˆ" +#688# "ゲームを実行ã—ã¦ãªã„時" +#689# "ゲーム実行中" +#690# "ゲーム実行中 (ウィンドウ時)" +#691# "ゲーム実行中 (フルスクリーン時)" + +// Frame Rate Option +#700# "垂直割り込ã¿/秒" +#701# "ディスプレイリスト/秒" +#702# "パーセント" + +// Increase speed +#710# "スピードを上ã’ã‚‹" +#711# "スピードを下ã’ã‚‹" + +//Bottom page buttons +#720# "ã“ã®é …ç›®ã®ãƒªã‚»ãƒƒãƒˆ" +#721# "ã™ã¹ã¦ãƒªã‚»ãƒƒãƒˆ" +#722# "é©ç”¨" + /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title +//ROM Info Title #800# "ロム情報" -//Rom Info Text +//ROM Info Text #801# "ロムå:" #802# "ファイルå:" #803# "ä¿å­˜å ´æ‰€:" #804# "ロムサイズ:" -#805# "カートリッジID:" +#805# "カートリッジID:" #806# "製造元:" #807# "国情報:" #808# "CRC1:" #809# "CRC2:" #810# "CICãƒãƒƒãƒ—:" +#811# "MD5:" /********************************************************************************* * Cheats * @@ -316,11 +393,6 @@ #1009# "クリア" #1010# "ãƒãƒ¼ãƒˆæƒ…å ±(&I):" #1011# "DBã«è¿½åŠ " -#1022# "ãƒãƒ¼ãƒˆã®è¿½åŠ " -#1023# "クリア" -#1024# "<アドレス> <値>" -#1025# "オプション:" -#1026# "<値> <ラベル>" //Code extension #1012# "コードエクステンション" @@ -335,16 +407,33 @@ #1019# "" #1020# "ã‹ã‚‰" #1021# "情報:" +#1022# "ãƒãƒ¼ãƒˆã®è¿½åŠ " +#1023# "クリア" +#1024# "<アドレス> <値>" +#1025# "オプション:" +#1026# "<値> <ラベル>" //Edit Cheat #1027# "ãƒãƒ¼ãƒˆç·¨é›†" #1028# "ãƒãƒ¼ãƒˆæ›´æ–°" +#1029# "ãƒãƒ¼ãƒˆãŒå¤‰æ›´ã•ã‚Œã¦ã„ã¾ã™ãŒæ›´æ–°ã—ã¾ã™ã‹?" +#1030# "ãƒãƒ¼ãƒˆãŒæ›´æ–°ã•ã‚Œã¦ã„ã¾ã™" //Cheat Popup Menu #1040# "ãƒãƒ¼ãƒˆã®è¿½åŠ (&A)..." #1041# "編集(&E)" #1042# "削除(&D)" +// short-cut editor +#1100# "ショートカットキーã®ãƒªã‚»ãƒƒãƒˆ" +#1101# "ショートカットキーをリセットã—ã¾ã™ã‹? + +ã“ã®å¤‰æ›´ã¯å–り消ã—ã§ãã¾ã›ã‚“。" +#1102# "ファイルメニュー" +#1103# "システムメニュー" +#1104# "オプション" +#1105# "セーブスロット" + /********************************************************************************* * Messages * *********************************************************************************/ @@ -379,8 +468,8 @@ ロムã¨ãƒ­ãƒ è¨­å®šã‚’確èªã—ã¦ä¸‹ã•ã„。" #2010# "セーブファイルを開ãã®ã«å¤±æ•—" -#2011# "Eepromã‚’é–‹ãã®ã«å¤±æ•—" -#2012# "Flashramã‚’é–‹ãã®ã«å¤±æ•—" +#2011# "EEPROMã‚’é–‹ãã®ã«å¤±æ•—" +#2012# "Flash RAMã‚’é–‹ãã®ã«å¤±æ•—" #2013# "Mempakã‚’é–‹ãã®ã«å¤±æ•—" #2014# "Zip圧縮ファイルを開ãã®ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ Zipファイルã¯ç ´æã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ @@ -389,7 +478,7 @@ Zipファイルã¯ç ´æã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ アプリケーションをå†ã‚¹ã‚¿ãƒ¼ãƒˆã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。" #2015# "ファイルを開ãã®ã«å¤±æ•—" #2016# "Zipファイルを開ã時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿ" -#2017# "読ã¿è¾¼ã¾ã‚ŒãŸãƒ­ãƒ ã¯æœ‰åŠ¹ãªNintendo64ロムã§ã¯ã‚ã‚Šã¾ã›ã‚“。 +#2017# "読ã¿è¾¼ã¾ã‚ŒãŸãƒ­ãƒ ã¯æœ‰åŠ¹ãªNintendo 64ロムã§ã¯ã‚ã‚Šã¾ã›ã‚“。 GoodN64ã§ãƒ­ãƒ ã‚’確èªã—ã¦è¦‹ã¦ä¸‹ã•ã„。" #2018# "ä¸æ˜Žãªå›½æƒ…å ±" @@ -436,3 +525,28 @@ GoodN64ã§ãƒ­ãƒ ã‚’確èªã—ã¦è¦‹ã¦ä¸‹ã•ã„。" #2042# "ãƒãƒ¼ãƒˆã®å‰Šé™¤" #2043# "åŒã˜åå‰ãŒã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚" #2044# "ãƒãƒ¼ãƒˆã®æ•°ãŒ1ã¤ã®ãƒ­ãƒ ã«è¨­å®šã§ãる最大数を超ãˆã¾ã—ãŸã€‚" +#2045# "プラグインã®åˆæœŸåŒ–中" +#2046# "メニュー項目ã«å‰²ã‚Šå½“ã¦ã‚‹ä»®æƒ³ã‚­ãƒ¼ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。" +#2047# "キーを割り当ã¦ã‚‹ãƒ¡ãƒ‹ãƒ¥ãƒ¼é …ç›®ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。" +#2048# "ショートカットキーã¯ã™ã§ã«åˆ¥ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼é …ç›®ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" +#2049# "削除ã™ã‚‹ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆã‚­ãƒ¼ãŒé¸æŠžã•ã‚Œã¦ã„ã¾ã›ã‚“。" +#2050# "ロムã®èª­ã¿è¾¼ã¿å®Œäº†ã€ã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³é–‹å§‹ã®å¾…機中" +#2051# "Project64ベータを使用ã§ãã‚‹ã®ã¯ãƒ¡ãƒ³ãƒãƒ¼ã®ã¿ã§ã™ã€‚ + +pj64.netã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ãŠæŒã¡ã®å ´åˆã¯ã“ã®ã‚¨ãƒ©ãƒ¼ãŒè¡¨ç¤ºã•ã‚Œã‚‹ã“ã¨ã¯ã‚ã‚Šã¾ã›ã‚“!! +サイト上ã‹ã‚‰å•ã„åˆã‚ã›ã‚’ã—ã¦ãã ã•ã„。" +#2052# "プログラムエラー" +#2053# "7zファイル中ã«ãƒ•ã‚¡ã‚¤ãƒ«åを見ã¤ã‘ã‚‹ã“ã¨ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" +#2054# "低レベルグラフィックスを使用ã™ã‚‹" +#2055# "低レベルグラフィックスã¯é€šå¸¸ã®ä½¿ç”¨ã«ã¯å‘ã„ã¦ã„ã¾ã›ã‚“!!! +ã“ã®æ©Ÿèƒ½ã¯ã€ã‚²ãƒ¼ãƒ ã‚’éŠã¶ãŸã‚ã§ã¯ãªãã€ãƒ†ã‚¹ãƒˆç›®çš„㧠+使用ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚ + +LLE GFXを使用ã—ã¾ã™ã‹?" +#2056# "ãƒã‚¤ãƒ¬ãƒ™ãƒ«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’使用ã™ã‚‹" +#2057# "ãƒã‚¤ãƒ¬ãƒ™ãƒ«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’使用ã™ã‚‹ã«ã¯ã‚µãƒ¼ãƒ‰ãƒ‘ーティ製㮠+プラグインãŒå¿…è¦ã§ã™!!! +ãƒã‚¤ãƒ¬ãƒ™ãƒ«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã«å¯¾å¿œã—ãŸã‚µãƒ¼ãƒ‰ãƒ‘ーティ製プラグインを +使用ã—ãªã„å ´åˆã¯ã‚µã‚¦ãƒ³ãƒ‰ãŒå‡ºåŠ›ã•ã‚Œã¾ã›ã‚“。 + +ãƒã‚¤ãƒ¬ãƒ™ãƒ«ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªã‚’使用ã—ã¾ã™ã‹?" diff --git a/Lang/Lithuanian.pj.Lang b/Lang/Lithuanian.pj.Lang index e590210cb..942a8134a 100644 --- a/Lang/Lithuanian.pj.Lang +++ b/Lang/Lithuanian.pj.Lang @@ -14,7 +14,7 @@ #8 # "Data" #9 # "Aplankyti tinklapá" #10 # "ROM'ø duombazë (.rdb)" -#11 # "Cheat kodø failas (.cht)" +#11 # "Cheat Kodø Failas (.cht)" #12 # "Iðplëstinë ROM'ø informacija (.rdx)" //About INI title @@ -133,9 +133,9 @@ #286# "Redaguoti cheat'us CHT faile pasirinktam þaidimui" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Failo pavadinimas" #301# "Vidinis pavadinimas" #302# "GoodN64 pavadinimas" @@ -156,7 +156,7 @@ #317# "Þaidëjai" #318# "Jëgos atgalinis ryðys" -//Select Rom +//Select ROM #320# "Nustatyti ROM'ø aplankà" //Messages @@ -204,7 +204,7 @@ #462# "Pa&slëpti nustatymus patyrusiems" #463# "P&risiminti pasirinktus cheat'us" -//Rom Browser Tab +//ROM Browser Tab #480# "&Prisimenamø ROM'ø skaièius (0-10)" #481# "ROM'ai" #482# "Prisimenamø ROM'ø &aplankø skaièius (0-10)" @@ -229,7 +229,7 @@ #507# "&Naudoti nustatymus ið RDB vietoj ðiø nustatymø pagal nutylëjimà" #508# "Suspausti greito iðsaugojimo failà naudojant &Zip" -//Rom Options +//ROM Options #520# "CPU &branduolio stilius:" #521# "&Savæs-mod. branduolio metodas:" #522# "At&minties dydis:" @@ -267,15 +267,15 @@ //Save Type #620# "Naudoti pirmà naudotà tipà" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbyte SRAM" -#624# "128kbyte FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Intergration Tab #640# "Failø susiejimas:" -//Rom Notes +//ROM Notes #660# "ROM'o &statusas:" #661# "&Branduolio pastaba:" #662# "&Plugin'o pastaba:" @@ -283,10 +283,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title +//ROM Info Title Title #800# "ROM'o informacija" -//Rom Info Text +//ROM Info Text #801# "ROM'o pavadinimas" #802# "Failo pavadinimas" #803# "Vieta" @@ -373,15 +373,15 @@ Patikrinkite ROM'à ir ROM'o nustatymus." Patikrinkite ROM'à ir ROM'o nustatymus." #2010# "Nepavyko atidaryti iðsaugojimo failo" #2011# "Nepavyko atidaryti EEPROM" -#2012# "Nepavyko atidaryti FlashRAM" -#2013# "Nepavyko atidaryti MemPak" +#2012# "Nepavyko atidaryti flash RAM" +#2013# "Nepavyko atidaryti mempak" #2014# "Bandymas atidaryti zip failà nepavyko. ZIP failas neegzistuoja arba sugadintas - patikrinkite kelià ir failà. Jums gali reikëti perkrauti programà" #2015# "Bandymas atidaryti failà nepavyko." #2016# "Bandant atidaryti zip failà, ávyko klaida." -#2017# "Uþkrautas failas yra nepanaðus á tinkamà Nintendo64 ROM'à. +#2017# "Uþkrautas failas yra nepanaðus á tinkamà Nintendo 64 ROM'à. Patikrinkite Jûsø ROM'us naudojant GoodN64." #2018# "Neþinoma ðalis" diff --git a/Lang/Norwegian.pj.Lang b/Lang/Norwegian.pj.Lang index 489305502..1a6935333 100644 --- a/Lang/Norwegian.pj.Lang +++ b/Lang/Norwegian.pj.Lang @@ -14,8 +14,8 @@ #8 # "Dato" #9 # "Forfatterens Hjemmeside" #10 # "ROM Database (Project64.rdb)" -#11 # "Cheat kode fil (Project64.cht)" -#12 # "Utvidet Rom Info (Project64.rdx)" +#11 # "Cheat Kode Fil (Project64.cht)" +#12 # "Utvidet ROM Info (Project64.rdx)" //About INI title #20 # "Om INI Filene" @@ -26,11 +26,11 @@ //File Menu #100# "&Fil" #101# "&Ã…pne ROM" -#102# "Rom &info...." +#102# "ROM &info...." #103# "Start &emulering" #104# "&Stopp emulering" #105# "&Velg ROM mappe..." -#106# "&Oppdater Rom Liste" +#106# "&Oppdater ROM Liste" #107# "Siste &ROMs" #108# "Siste ROM &mapper" #109# "&Avslutt" @@ -89,12 +89,12 @@ //Pop up Menu #210# "Kjør Spill" -#211# "Rom informasjon" +#211# "ROM informasjon" #212# "Endre spillets innstillinger" #213# "Endre koder" // Menu Descriptions -#250# "Hente frem et N64 rom image" +#250# "Hente frem et N64 ROM image" #251# "Vis informasjon om den lastede ROM'en" #252# "Start emulering av den lastede ROM'en" #253# "Stopp emulering av den lastede ROM'en" @@ -133,9 +133,9 @@ #286# "Rediger kodene i CHT for valgte spill" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Fil navn" #301# "Internt navn" #302# "GoodN64 navn" @@ -156,7 +156,7 @@ #317# "Spillere" #318# "Kraftig respons" -//Select Rom +//Select ROM #320# "Velg ROM mappe for browseren" //Messages @@ -200,11 +200,11 @@ //Options Dialog #460# "&Paus emulering nÃ¥r vindu er inaktivt?" -#461# "&GÃ¥ til fullskjerm nÃ¥r en rom er sartet" +#461# "&GÃ¥ til fullskjerm nÃ¥r en ROM er sartet" #462# "&Skjul avanserte innstillinger" #463# "&Husk valgte koder for spill" -//Rom Browser Tab +//ROM Browser Tab #480# "Antall &ROMs som blir husket (maks 10):" #481# "ROMs" #482# "Antall ROM &mapper som blir husket (maks 10):" @@ -231,7 +231,7 @@ De vil ta effekt nÃ¥r ROM'en er resatt eller en ny er startet." #507# "Alltid %overskriv standard innstillinger med dem fra ini?" #508# "Automatisk %pakking av hurtig lagringer?" -//Rom Options +//ROM Options #520# "R%4300i kjerne" #521# "Be&handling av selv-mod kode:" #522# "&RDRAM størrelse:" @@ -269,15 +269,15 @@ De vil ta effekt nÃ¥r ROM'en er resatt eller en ny er startet." //Save Type #620# "bruk den første brukte lagrings typen" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbyte SRAM" -#624# "128kbyte FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Integration Tab #640# "Filtyper som skal assosieres med Project 64:" -//Rom Notes +//ROM Notes #660# "&ROM status:" #661# "&Kjerne notat:" #662# "&Plugin notat:" @@ -285,10 +285,10 @@ De vil ta effekt nÃ¥r ROM'en er resatt eller en ny er startet." /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title +//ROM Info Title #800# "ROM informasjon" -//Rom Info Text +//ROM Info Text #801# "Internt navn:" #802# "Fil navn:" #803# "Sted:" @@ -379,8 +379,8 @@ Sjekk at du har i allefall én kompatibel plugin fil i plugin mappen." Sjekk ROM'en og dens innstillinger." #2010# "Mislykte i Ã¥ Ã¥pne lagrings fil" #2011# "Mislykte i Ã¥ Ã¥pne EEPROM" -#2012# "Mislykte i Ã¥ Ã¥pne FlashRAM" -#2013# "Mislykte i Ã¥ Ã¥pne MemPak" +#2012# "Mislykte i Ã¥ Ã¥pne flash RAM" +#2013# "Mislykte i Ã¥ Ã¥pne mempak" #2014# "Forsøk pÃ¥ Ã¥ Ã¥pne zip fil mislyktes. Trolig en korrupt zip fil - prøv Ã¥ unzippe ROM'en manuelt." diff --git a/Lang/Polish.pj.Lang b/Lang/Polish.pj.Lang index 5813df683..42906f7cb 100644 --- a/Lang/Polish.pj.Lang +++ b/Lang/Polish.pj.Lang @@ -1,4 +1,4 @@ -/********************************************************************************* +/********************************************************************************* * Meta Information * *********************************************************************************/ //About DLL @@ -8,13 +8,13 @@ #4 # "11.07.2005" // Date //About DLL Dialog -#5 # "Wybrany jêzyk" +#5 # "Wybrany jêzyk" #6 # "Autor" #7 # "Wersja" #8 # "Data" -#9 # "OdwiedŸ stronê domow¹" -#10 # "Baza danych romów (.RDB)" -#11 # "Plik kodów (.CHT)" +#9 # "OdwiedŸ stronê domow¹" +#10 # "Baza danych romów (.RDB)" +#11 # "Plik kodów (.CHT)" #12 # "Rozszerzona informacja o romach (.RDX)" //About INI title @@ -25,47 +25,47 @@ *********************************************************************************/ //File Menu #100# "&Plik" -#101# "&Otwórz rom" +#101# "&Otwórz ROM" #102# "&Informacje o romie...." -#103# "Rozpocznij emulacjê" -#104# "&Zakoñcz emulacjê" -#105# "Wybierz folder docelowy romów..." -#106# "Odœwie¿ listê romów" +#103# "Rozpocznij emulacjê" +#104# "&Zakoñcz emulacjê" +#105# "Wybierz folder docelowy romów..." +#106# "OdÅ“wie¿ listê romów" #107# "Ostatnio otwierane romy" -#108# "Foldery ostatnio otwieranych romów" -#109# "&Wyjœcie" +#108# "Foldery ostatnio otwieranych romów" +#109# "&WyjÅ“cie" //System Menu #120# "&System" #121# "&Reset" #122# "&Pauza" -#123# "Generuj bitmapê" +#123# "Generuj bitmapê" #124# "Limit FPS" #125# "&Zapisz" #126# "Zapisz jako..." -#127# "&Przywróæ" -#128# "Za³aduj..." +#127# "&Przywróæ" +#128# "Za³aduj..." #129# "Slot stanu g&ry" #130# "Kody..." #131# "Przycisk GS" -#132# "Ponów" +#132# "Ponów" //Options Menu #140# "&Opcje" -#141# "&Pe³ny ekran" +#141# "&Pe³ny ekran" #142# "&Zawsze na &wierzchu" #143# "Konfiguruj plugin graficzny..." -#144# "Konfiguruj plugin dŸwiêkowy..." +#144# "Konfiguruj plugin dŸwiêkowy..." #145# "Konfiguruj plugin kontrolera..." #146# "Konfiguruj plugin RSP..." -#147# "Poka¿ zu¿ycie CPU w %" +#147# "Poka¿ zu¿ycie CPU w %" #148# "&Ustawienia..." //Debugger Menu #160# "&Debugger" //Language Menu -#175# "&Jêzyk" +#175# "&Jêzyk" //Help Menu #180# "Po&moc" @@ -75,7 +75,7 @@ #184# "&Strona domowa" //Current Save Slot menu -#190# "Domyœlny" +#190# "DomyÅ“lny" #191# "Slot 1" #192# "Slot 2" #193# "Slot 3" @@ -88,62 +88,62 @@ #200# "Slot 10" //Pop up Menu -#210# "Uruchom grê" +#210# "Uruchom grê" #211# "Informacje o romie" #212# "Edytuj ustawienia gry" #213# "Edytuj kody" // Menu Descriptions -#250# "Otwórz plik obrazu N64" -#251# "Wyœwietl informacje o za³adowanym obrazie gry" -#252# "Rozpocznij emulacjê za³adowanego obrazu gry" -#253# "Zakoñcz emulacjê za³adowanego obrazu gry" -#254# "Wybierz folder docelowy romów" -#255# "Odœwie¿ listê w przegl¹darce romów" +#250# "Otwórz plik obrazu N64" +#251# "WyÅ“wietl informacje o za³adowanym obrazie gry" +#252# "Rozpocznij emulacjê za³adowanego obrazu gry" +#253# "Zakoñcz emulacjê za³adowanego obrazu gry" +#254# "Wybierz folder docelowy romów" +#255# "OdÅ“wie¿ listê w przegl¹darce romów" #256# "Zamknij Project64" -#257# "Prze³aduj aktualny plik romu (prze³aduj wszystkie ustawienia)" -#258# "Zatrzymaj/ponów emulacjê aktualnie wybranego romu" -#259# "Generuj zrzut ekranowy wyœwietlanego obrazu" -#260# "Ograniczenie FPS do prêdkoœci skorygowanej z n64" -#261# "Stwórz szybki zapis aktualnego stanu gry" -#262# "Stwórz szybki zapis aktualnego stanu gry (wybór lokalizacji pliku)" -#263# "Za³aduj szybki zapis aktualnego stanu gry" -#264# "Wybierz szybki zapis do za³adowania" -#265# "W³¹cz/wy³¹cz kody Game shark" -#266# "Przycisk Game shark u¿yje specyficznych kodów GS" -#267# "PrzejdŸ do trybu pe³noekranowego" -#268# "Dostosuj okno tak aby by³o zawsze na wierzchu (powy¿ej innych okien)" -#269# "Zmieñ ustawienia wewnêtrzne pluginu graficznego" -#270# "Zmieñ ustawienia wewnêtrzne pluginu dŸwiêkowego" -#271# "Zmieñ ustawienia wewnêtrzne pluginu kontrolera (n.p. konfiguracja sterowania)" -#272# "Zmieñ ustawienia wewnêtrzne pluginu RSP" -#273# "Poka¿ zu¿ycie CPU przez emulator (z pominiêciem innych zasobów)" -#274# "Poka¿/zmieñ ustawienia Project64" -#275# "Poka¿ podrêcznik u¿ytkownika Project64" -#276# "Poka¿ FAQ Project64" +#257# "Prze³aduj aktualny plik romu (prze³aduj wszystkie ustawienia)" +#258# "Zatrzymaj/ponów emulacjê aktualnie wybranego romu" +#259# "Generuj zrzut ekranowy wyÅ“wietlanego obrazu" +#260# "Ograniczenie FPS do prêdkoÅ“ci skorygowanej z n64" +#261# "Stwórz szybki zapis aktualnego stanu gry" +#262# "Stwórz szybki zapis aktualnego stanu gry (wybór lokalizacji pliku)" +#263# "Za³aduj szybki zapis aktualnego stanu gry" +#264# "Wybierz szybki zapis do za³adowania" +#265# "W³¹cz/wy³¹cz kody Game shark" +#266# "Przycisk Game shark u¿yje specyficznych kodów GS" +#267# "PrzejdŸ do trybu pe³noekranowego" +#268# "Dostosuj okno tak aby by³o zawsze na wierzchu (powy¿ej innych okien)" +#269# "Zmieñ ustawienia wewnêtrzne pluginu graficznego" +#270# "Zmieñ ustawienia wewnêtrzne pluginu dŸwiêkowego" +#271# "Zmieñ ustawienia wewnêtrzne pluginu kontrolera (n.p. konfiguracja sterowania)" +#272# "Zmieñ ustawienia wewnêtrzne pluginu RSP" +#273# "Poka¿ zu¿ycie CPU przez emulator (z pominiêciem innych zasobów)" +#274# "Poka¿/zmieñ ustawienia Project64" +#275# "Poka¿ podrêcznik u¿ytkownika Project64" +#276# "Poka¿ FAQ Project64" #278# "O Project64 i jego autorach" -#277# "O autorach plików serwisowych" -#279# "Otwórz ten rom" -#280# "Wybierz ten folder jako folder romów" -#281# "Wybierz jêzyk dla Project64" -#282# "Wybierz lokalizacjê dla szybkiego zapisu" -#283# "Uruchom wybranê grê" +#277# "O autorach plików serwisowych" +#279# "Otwórz ten ROM" +#280# "Wybierz ten folder jako folder romów" +#281# "Wybierz jêzyk dla Project64" +#282# "Wybierz lokalizacjê dla szybkiego zapisu" +#283# "Uruchom wybranê grê" #284# "Informacje o wybranej grze" #285# "Edytuj ustawienia dla wybranej gry" #286# "Edytuj kody dla wybranej gry" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Nazwa pliku" -#301# "Nazwa wewnêtrzna" -#302# "Prawid³owa nazwa" +#301# "Nazwa wewnêtrzna" +#302# "Prawid³owa nazwa" #303# "Status" -#304# "Wielkoœæ romu" -#305# "Notes (sprzêt)" -#306# "Notes (domyœlne pluginy)" -#307# "Notes (u¿ytkownika)" +#304# "WielkoϾ romu" +#305# "Notes (sprzêt)" +#306# "Notes (domyÅ“lne pluginy)" +#307# "Notes (u¿ytkownika)" #308# "ID cartridge'a" #309# "Producent" #310# "Kraj" @@ -156,11 +156,11 @@ #317# "Graczy" #318# "Force Feedback" -//Select Rom -#320# "Wybierz folder romów" +//Select ROM +#320# "Wybierz folder romów" //Messages -#340# "Nieodpowiedni rom? U¿yj GoodN64 i sprawdŸ uaktualnienie RDB" +#340# "Nieodpowiedni ROM? U¿yj GoodN64 i sprawdŸ uaktualnienie RDB" /********************************************************************************* * Options * @@ -172,121 +172,121 @@ #401# "Wtyczki" #402# "Lokalizacje" #403# "Opcje" -#404# "Wybór romu" +#404# "Wybór romu" #405# "Zaawansowane" #406# "Ustawienia romu" -#407# "Powi¹¿ z..." +#407# "Powi¹¿ z..." #408# "Notes romu" //Plugin Dialog #420# "O..." #421# " Plugin RSP: " #422# " Plugin wideo (grafika): " -#423# " Plugin audio (dŸwiêk): " -#424# " Plugin wejœcia (kontroler): " +#423# " Plugin audio (dŸwiêk): " +#424# " Plugin wejÅ“cia (kontroler): " //Directory Dialog -#440# " Folder pluginów: " -#441# " Folder romów: " +#440# " Folder pluginów: " +#441# " Folder romów: " #442# " Automatyczne zapisy N64: " #443# " Aktualne zapisy: " #444# " Zrzuty ekranowe: " -#445# "Folder, z którego zosta³ otwarty ostatni rom." -#446# "Wybierz folder pluginów" -#447# "Wybierz folder romów" -#448# "Wybierz folder dla automatycznych zapisów" -#449# "Wybierz folder dla aktualnych zapisów" -#450# "Wybierz folder dla zrzutów ekranowych" +#445# "Folder, z którego zosta³ otwarty ostatni ROM." +#446# "Wybierz folder pluginów" +#447# "Wybierz folder romów" +#448# "Wybierz folder dla automatycznych zapisów" +#449# "Wybierz folder dla aktualnych zapisów" +#450# "Wybierz folder dla zrzutów ekranowych" //Options Dialog -#460# "Zatrzymaj emulacjê kiedy okno Project64 jest nieaktywne" -#461# "Po za³adowaniu romu przejdŸ do trybu pe³noekranowego" +#460# "Zatrzymaj emulacjê kiedy okno Project64 jest nieaktywne" +#461# "Po za³adowaniu romu przejdŸ do trybu pe³noekranowego" #462# "Ukryj zaawansowane opcje" -#463# "Zapamiêtaj wybrane kody" +#463# "Zapamiêtaj wybrane kody" -//Rom Browser Tab -#480# "Max. zapamiêtaj # romów (Max 10):" +//ROM Browser Tab +#480# "Max. zapamiêtaj # romów (Max 10):" #481# "romy" -#482# "Max. zapamiêtaj # folderów romów (Max 10):" +#482# "Max. zapamiêtaj # folderów romów (Max 10):" #483# "foldery" -#484# "U¿yj przegl¹darki romów" -#485# "U¿yj rekursji folderów" -#486# "Dostêpne informacje:" -#487# "Poka¿ wybrane:" +#484# "U¿yj przegl¹darki romów" +#485# "U¿yj rekursji folderów" +#486# "Dostêpne informacje:" +#487# "Poka¿ wybrane:" #488# "Dodaj ->" -#489# "<- Usuñ" -#490# "Góra" -#491# "Dó³" +#489# "<- Usuñ" +#490# "Góra" +#491# "Dó³" //Advanced Options -#500# "Wszystkie zmiany zostan¹ zaakceptowane po ponownym uruchomieniu romu." -#501# "Domyœlny rdzeñ" +#500# "Wszystkie zmiany zostan¹ zaakceptowane po ponownym uruchomieniu romu." +#501# "DomyÅ“lny rdzeñ" #502# "Rodzaj rdzenia CPU:" #503# "Metoda auto-mod kodu:" -#504# "Domyœlny rozmiar pamiêci:" -#505# "Zaawansowane ³¹czenie bloków:" -#506# "Rozpocz¹æ emulacjê kiedy rom jest otwarty?" -#507# "Zawsze nadpisywaæ domyœlne ustawienia z ini?" +#504# "DomyÅ“lny rozmiar pamiêci:" +#505# "Zaawansowane ³¹czenie bloków:" +#506# "Rozpocz¹æ emulacjê kiedy ROM jest otwarty?" +#507# "Zawsze nadpisywaæ domyÅ“lne ustawienia z ini?" #508# "Automatycznie kompresuj szybki zapis" -//Rom Options +//ROM Options #520# "Rodzaj rdzenia CPU:" #521# "Metoda auto-mod kodu:" -#522# "Rozmiar pamiêci:" -#523# "Zaawansowane ³¹czenie bloków:" -#524# "Domyœlny format zapisu:" -#525# "Wspó³czynnik przeciwnoœci:" -#526# "Du¿y bufor kompilacji" -#527# "U¿yj TLB" -#528# "Zarejestrój caching" -#529# "OpóŸnienie przerywania SI" +#522# "Rozmiar pamiêci:" +#523# "Zaawansowane ³¹czenie bloków:" +#524# "DomyÅ“lny format zapisu:" +#525# "Wspó³czynnik przeciwnoÅ“ci:" +#526# "Du¿y bufor kompilacji" +#527# "U¿yj TLB" +#528# "Zarejestrój caching" +#529# "OpóŸnienie przerywania SI" #530# "SP Hack" -#531# "Domyœlny" -#532# "Sygna³ dŸwiêku - RSP" +#531# "DomyÅ“lny" +#532# "Sygna³ dŸwiêku - RSP" //Core Styles #540# "Interpretator" #541# "Rekompiler" -#542# "Synchronizacja rdzeniów" +#542# "Synchronizacja rdzeniów" //Self Mod Methods #560# "Brak" #561# "Cache" -#562# "Ochrona pamiêci" -#563# "SprawdŸ pamiêæ & cache" -#564# "Zmieñ pamiêæ & cache" -#565# "SprawdŸ zaawansowan¹ pamiêæ" +#562# "Ochrona pamiêci" +#563# "SprawdŸ pamiêæ & cache" +#564# "Zmieñ pamiêæ & cache" +#565# "SprawdŸ zaawansowan¹ pamiêæ" //RDRAM Size #580# "4 MB" #581# "8 MB" //Advanced Block Linking -#600# "W³¹cz" -#601# "Wy³¹cz" +#600# "W³¹cz" +#601# "Wy³¹cz" //Save Type -#620# "Pierwszy u¿yty format" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "Flashram" +#620# "Pierwszy u¿yty format" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab -#640# "Powi¹¿ Project64 z:" +#640# "Powi¹¿ Project64 z:" -//Rom Notes +//ROM Notes #660# "Status romu:" -#661# "Notatki - rdzeñ:" +#661# "Notatki - rdzeñ:" #662# "Notatki - pluginy:" /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title +//ROM Info Title #800# "Informacje o romie" -//Rom Info Text +//ROM Info Text #801# "Nazwa romu:" #802# "Nazwa pliku:" #803# "Folder:" @@ -313,25 +313,25 @@ #1006# "Nazwa:" #1007# "Kod:" #1008# "Wstaw" -#1009# "Wyczyœæ" +#1009# "WyczyϾ" #1010# " Notes kodu: " #1011# "Dodaj do DB" #1022# "Dodaj kod" #1023# "Nowy kod" -#1024# " " +#1024# " " #1025# "Opcje:" -#1026# " " +#1026# " " //Code extension #1012# "Rozszerzenie kodu" -#1013# "Proszê o wybranie tej wielkoœci dla u¿ytkownika:" +#1013# "Proszê o wybranie tej wielkoÅ“ci dla u¿ytkownika:" #1014# "OK" #1015# "Anuluj" //Digital Value -#1016# "Iloœæ cyfr" -#1017# "Proszê o wybranie tej wielkoœci dla:" -#1018# "&Wielkoœæ" +#1016# "IloϾ cyfr" +#1017# "Proszê o wybranie tej wielkoÅ“ci dla:" +#1018# "&WielkoϾ" #1019# "z" #1020# "do" #1021# "&Notes:" @@ -343,84 +343,84 @@ //Cheat Popup Menu #1040# "Dodaj nowy kod..." #1041# "Edytuj" -#1042# "Usuñ" +#1042# "Usuñ" /********************************************************************************* * Messages * *********************************************************************************/ #2000# "*** PRZERWANIE OPERACJI CPU ***" #2001# "Wznowienie CPU" -#2002# "W trwa³ym zapêtleniu wyjœcie nie jest mo¿liwe. +#2002# "W trwa³ym zapêtleniu wyjÅ“cie nie jest mo¿liwe. Emulacja zostanie teraz wstrzymana. -SprawdŸ rom oraz ustawienia." -#2003# "Niepowodzenie przy przydzielaniu pamiêci" -#2004# "Domyœlny lub wybrany plugin graficzny jest nieodpowieni lub nie zosta³ wybrany. +SprawdŸ ROM oraz ustawienia." +#2003# "Niepowodzenie przy przydzielaniu pamiêci" +#2004# "DomyÅ“lny lub wybrany plugin graficzny jest nieodpowieni lub nie zosta³ wybrany. -SprawdŸ czy wszystkie pluginy w folderze pluginów s¹ kompatybilne." -#2005# "Domyœlny lub wybrany plugin dŸwiêkowy jest nieodpowieni lub nie zosta³ wybrany. +SprawdŸ czy wszystkie pluginy w folderze pluginów s¹ kompatybilne." +#2005# "DomyÅ“lny lub wybrany plugin dŸwiêkowy jest nieodpowieni lub nie zosta³ wybrany. -SprawdŸ czy wszystkie pluginy w folderze pluginów s¹ kompatybilne." -#2006# "Domyœlny lub wybrany plugin RSP jest nieodpowieni lub nie zosta³ wybrany. +SprawdŸ czy wszystkie pluginy w folderze pluginów s¹ kompatybilne." +#2006# "DomyÅ“lny lub wybrany plugin RSP jest nieodpowieni lub nie zosta³ wybrany. -SprawdŸ czy Project64 ma wprowadzon¹ odpowieni¹ œcie¿kê do folderu pluginów." -#2007# "Domyœlny lub wybrany plugin wejœcia jest nieodpowieni lub nie zosta³ wybrany. +SprawdŸ czy Project64 ma wprowadzon¹ odpowieni¹ Å“cie¿kê do folderu pluginów." +#2007# "DomyÅ“lny lub wybrany plugin wejÅ“cia jest nieodpowieni lub nie zosta³ wybrany. -SprawdŸ czy wszystkie pluginy w folderze pluginów s¹ kompatybilne." -#2008# "Niepowodzenie przy ³adowaniu pluginu:" -#2009# "Niepowodzenie przy ³adowaniu s³owa +SprawdŸ czy wszystkie pluginy w folderze pluginów s¹ kompatybilne." +#2008# "Niepowodzenie przy ³adowaniu pluginu:" +#2009# "Niepowodzenie przy ³adowaniu s³owa -SprawdŸ rom oraz ustawienia." +SprawdŸ ROM oraz ustawienia." #2010# "Niepowodzenie przy otwieraniu zapisu gry" -#2011# "Niepowodzenie przy otwieraniu Eeprom" -#2012# "Niepowodzenie przy otwieraniu Flashram" +#2011# "Niepowodzenie przy otwieraniu EEPROM" +#2012# "Niepowodzenie przy otwieraniu flash RAM" #2013# "Niepowodzenie przy otwieraniu mempak'u" -#2014# "Próba otwarcia pliku zip zakoñczona niepowodzeniem. -Brakuj¹cy lub uszkodzony plik zip - sprawdŸ lokalizacjê i plik. +#2014# "Próba otwarcia pliku zip zakoñczona niepowodzeniem. +Brakuj¹cy lub uszkodzony plik zip - sprawdŸ lokalizacjê i plik. Wymagany jest restart aplikacji." -#2015# "Próba otwarcia pliku zakoñczona niepowodzeniem." -#2016# "B³¹d wystêpuj¹cy podczas próby otwarcia pliku zip." -#2017# "Za³adowny plik wydaje siê nie byæ odpowiednim romem dla Nintendo64. +#2015# "Próba otwarcia pliku zakoñczona niepowodzeniem." +#2016# "B³¹d wystêpuj¹cy podczas próby otwarcia pliku zip." +#2017# "Za³adowny plik wydaje siê nie byæ odpowiednim romem dla Nintendo 64. -SprawdŸ twoje romy w GoodN64." +SprawdŸ twoje romy w GoodN64." #2018# "Nieznany kraj" #2019# "Nieznany chip Cic" #2020# "Nieznany format pliku" -#2021# "Nieznana akcja pamiêci +#2021# "Nieznana akcja pamiêci -Emulacja zosta³a zatrzymana." +Emulacja zosta³a zatrzymana." #2022# "Unhandled R4300i OpCode at" -#2023# "Wykonane zadanie nie zosta³o rozpoznane. +#2023# "Wykonane zadanie nie zosta³o rozpoznane. -SprawdŸ rom oraz ustawienia." -#2024# "Stan gry nie odpowiada za³adowanemu romowi. +SprawdŸ ROM oraz ustawienia." +#2024# "Stan gry nie odpowiada za³adowanemu romowi. -Zapisane lub za³adowane stany gry musz¹ byæ w 100 % zgodne z romami, -w praktyce REGION i WERSJA maj¹ byæ takie same. -Za³adowanie tego save'u mo¿e doprowadziæ do b³êdów zarówno w emulatorze jak i grze. +Zapisane lub za³adowane stany gry musz¹ byæ w 100 % zgodne z romami, +w praktyce REGION i WERSJA maj¹ byæ takie same. +Za³adowanie tego save'u mo¿e doprowadziæ do b³êdów zarówno w emulatorze jak i grze. -Czy aby na pewno chcesz kontynuowaæ ³adowanie?" -#2025# "B³¹d" -#2026# "Sekwencja praw autorskich nie jest dostêpna w LUT. Gra nie bêdzie dzia³aæ." +Czy aby na pewno chcesz kontynuowaæ ³adowanie?" +#2025# "B³¹d" +#2026# "Sekwencja praw autorskich nie jest dostêpna w LUT. Gra nie bêdzie dzia³aæ." #2027# "Uszkodzona kopia ochrony" #2028# "Przy zmianie pluginu Project64 wymagany jest reset romu. -Gdybyœ nie chcia³(a) straciæ ukoñczonego stanu gry, odpowiedz Nie i wykonaj zapis. +GdybyÅ“ nie chcia³(a) straciæ ukoñczonego stanu gry, odpowiedz Nie i wykonaj zapis. -Zmieniæ pluginy i uruchomiæ ponownie grê?" -#2029# "Zmieñ pluginy" -#2030# "Emulacja zakoñczona" -#2031# "Emulacja rozpoczêta" -#2032# "Brak danych do za³adowania zapisu gry" -#2033# "Za³adowano stan gry" +Zmieniæ pluginy i uruchomiæ ponownie grê?" +#2029# "Zmieñ pluginy" +#2030# "Emulacja zakoñczona" +#2031# "Emulacja rozpoczêta" +#2032# "Brak danych do za³adowania zapisu gry" +#2033# "Za³adowano stan gry" #2034# "Zapisano aktualny stan do" #2035# "Slot stanu gry" -#2036# "Zmiana bajtów obrazu" -#2037# "Zmieñ obraz N64" -#2038# "Za³adowano" -#2039# "£adowanie obrazu" -#2040# "Niemo¿liwe jest otwarcie tego romu, poniewa¿ pluginy nie s¹ w stanie go zainicjowaæ" -#2041# "Czy aby na pewno chcesz to usun¹æ?" -#2042# "Usuñ kod" -#2043# "Kod o podanej nazwie jest ju¿ w u¿yciu" -#2044# "Osi¹gn¹³eœ maksymaln¹ iloœæ kodów dostêpn¹ dla tej gry" \ No newline at end of file +#2036# "Zmiana bajtów obrazu" +#2037# "Zmieñ obraz N64" +#2038# "Za³adowano" +#2039# "£adowanie obrazu" +#2040# "Niemo¿liwe jest otwarcie tego romu, poniewa¿ pluginy nie s¹ w stanie go zainicjowaæ" +#2041# "Czy aby na pewno chcesz to usun¹æ?" +#2042# "Usuñ kod" +#2043# "Kod o podanej nazwie jest ju¿ w u¿yciu" +#2044# "Osi¹gn¹³eÅ“ maksymaln¹ iloϾ kodów dostêpn¹ dla tej gry" diff --git a/Lang/Russian.pj.Lang b/Lang/Russian.pj.Lang index 5efec6ef4..fc77e81a5 100644 --- a/Lang/Russian.pj.Lang +++ b/Lang/Russian.pj.Lang @@ -104,7 +104,7 @@ #257# "Перезагрузить текущую игру" #258# "ПриоÑтановить/продолжить текущую игру" #259# "Сохранить изображение на Ñкране в папку Ñо Ñкриншотами" -#260# "Ограничить количеÑтво кадров в Ñекунду до реальной ÑкороÑти Nintendo64" +#260# "Ограничить количеÑтво кадров в Ñекунду до реальной ÑкороÑти Nintendo 64" #261# "Сохранить текущее ÑоÑтоÑние игры на выбранный блок памÑти" #262# "Сохранить текущее ÑоÑтоÑние игры в выбранную папку" #263# "Возобновить Ñохраненное ÑоÑтоÑние игры" @@ -133,9 +133,9 @@ #286# "Редактировать Ñекретные коды Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ игры" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Ðазвание файла" #301# "Внутреннее имÑ" #302# "Ðазвание ÑоглаÑно GoodN64" @@ -156,7 +156,7 @@ #317# "Игроков" #318# "ВибрациÑ" -//Select Rom +//Select ROM #320# "Выбрать текущую папку Ñ Ð¸Ð³Ñ€Ð°Ð¼Ð¸" #340# "Плохой ROM? воÑпользуйтеÑÑŒ GoodN64 и поищите обновленные файлы поддержки" @@ -202,7 +202,7 @@ #462# "Спр&Ñтать дополнительные опции" #463# "&Помнить выбранные Ñекретные коды" -//Rom Browser Tab +//ROM Browser Tab #480# "&Игр в ÑпиÑке (до 10):" #481# "шт." #482# "&Папок в ÑпиÑке (до 10):" @@ -227,7 +227,7 @@ #507# "&ЗаменÑÑ‚ÑŒ выбранные опции опциÑми Ñ Ð±Ð°Ð·Ñ‹ данных" #508# "&ÐвтоматичеÑки компреÑÑовать Ñохраненки" -//Rom Options +//ROM Options #520# "&Тип Ñдра:" #521# "&Метод обработки кода:" #522# "&Размер памÑти:" @@ -265,15 +265,15 @@ //Save Type #620# "По умолчанию" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbytes SRAM" -#624# "128kbyte FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Integration Tab #640# "Объединить Ñ Project64:" -//Rom Notes +//ROM Notes #660# "&СоÑтоÑние игры:" #661# "ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ - &Ñдро:" #662# "ÐŸÑ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ - &плагин:" @@ -281,10 +281,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title +//ROM Info Title #800# "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± игре" -//Rom Info Text +//ROM Info Text #801# "Ðазвание ROMа:" #802# "Ðазвание файла:" #803# "Путь к файлу:" @@ -371,14 +371,14 @@ Проверьте игру и её опции." #2010# "Ðе удалоÑÑŒ открыть Ñохраненку" #2011# "Ðе удалоÑÑŒ открыть EEPROM" -#2012# "Ðе удалоÑÑŒ открыть FlashRAM" -#2013# "Ðе удалоÑÑŒ открыть MemPak" +#2012# "Ðе удалоÑÑŒ открыть flash RAM" +#2013# "Ðе удалоÑÑŒ открыть mempak" #2014# "Ðе удалоÑÑŒ открыть .zip-файл. Возможно .zip-файл Ñломан - проверьте файл и путь к нему." #2015# "Ðе удалоÑÑŒ открыть файл." #2016# "СлучилаÑÑŒ ошибка при открытии .zip-файла." -#2017# "Загруженный файл не ÑвлÑетÑÑ Ð´ÐµÐ¹Ñтвительным Nintendo64 ROMом. +#2017# "Загруженный файл не ÑвлÑетÑÑ Ð´ÐµÐ¹Ñтвительным Nintendo 64 ROMом. Проверьте ваши игры прграммой GoodN64." #2018# "ÐеизвеÑтный регион" diff --git a/Lang/Spanish.pj.Lang b/Lang/Spanish.pj.Lang index 10d4c2928..f3b3d5223 100644 --- a/Lang/Spanish.pj.Lang +++ b/Lang/Spanish.pj.Lang @@ -5,7 +5,7 @@ #1 # "Español" // LANGUAGE ID #2 # "MELERIX" // Author #3 # "2.2" // Version -#4 # "March, 2015" // Date +#4 # "April, 2015" // Date //About DLL Dialog #5 # "Lenguaje Actual" @@ -13,25 +13,25 @@ #7 # "Versión" #8 # "Fecha" #9 # "Visitar la Pagina Principal" -#10 # "Base de datos de ROMS (.RDB)" +#10 # "Base de datos de ROMs (.RDB)" #11 # "Archivo de Códigos de Trucos (.CHT)" -#12 # "Información Extendida del Rom (.RDX)" +#12 # "Información Extendida del ROM (.RDX)" //About INI title -#20 # "Acerca de los Archivos INI" +#20 # "Acerca de los Archivos de Configuración" /********************************************************************************* * Menu * *********************************************************************************/ //File Menu #100# "&Archivo" -#101# "&Abrir Rom" -#102# "&Info del Rom...." +#101# "&Abrir ROM" +#102# "&Info del ROM...." #103# "Iniciar Emulación" #104# "&Finalizar Emulación" #105# "Elegir Directorio de ROMs..." #106# "Actualizar Lista de ROMs" -#107# "Rom Reciente" +#107# "ROM Reciente" #108# "Directorio de ROMs Reciente" #109# "&Salir" @@ -41,11 +41,11 @@ #122# "&Pausar" #123# "Generar Bitmap" #124# "Limitar FPS" -#125# "&Guardar" +#125# "&Guardar Estado" #126# "Guardar Como..." -#127# "&Restaurar" +#127# "&Cargar Estado" #128# "Cargar..." -#129# "&Partida Guardada Actual" +#129# "&Estado Guardado Actual" #130# "Trucos..." #131# "Botón GS" #132# "C&ontinuar" @@ -55,12 +55,12 @@ //Options Menu #140# "&Opciones" #141# "&Pantalla Completa" -#142# "&Siempre Por Encima" +#142# "&Siempre por Encima" #143# "Configurar Plugin de Gráficos..." #144# "Configurar Plugin de Audio..." #145# "Configurar Plugin de Control..." #146# "Configurar Plugin de RSP..." -#147# "Mostrar uso del CPU %" +#147# "Mostrar Uso de CPU" #148# "&Ajustes..." //Debugger Menu @@ -71,13 +71,13 @@ //Help Menu #180# "Ayuda" -#181# "Acerca de los Archivos &INI" -#182# "&Acerca de Project 64" +#181# "Acerca de los Archivos de Conf&iguración" +#182# "&Acerca de Project64" #183# "&Foro de Soporte" #184# "&Pagina Principal" //Current Save Slot menu -#190# "Predeterminado" +#190# "Predeterminada" #191# "Ranura 1" #192# "Ranura 2" #193# "Ranura 3" @@ -91,13 +91,13 @@ //Pop up Menu #210# "Jugar Juego" -#211# "Información del Rom" +#211# "Información del ROM" #212# "Editar Ajustes del Juego" #213# "Editar Trucos" -#214# "Plugin GFX" +#214# "Plugin Gráfico" //Alternate Name to save Slot -#220# "Predeterminado" +#220# "Ranura de Guardado - Predeterminada" #221# "Ranura de Guardado - 1" #222# "Ranura de Guardado - 2" #223# "Ranura de Guardado - 3" @@ -110,56 +110,56 @@ #230# "Ranura de Guardado - 10" // Menu Descriptions -#250# "Abrir una imagen rom de N64" -#251# "Mostrar Información acerca de la imagen cargada" -#252# "Iniciar Emulación de la imagen rom cargada" -#253# "Detener Emulación de la imagen rom cargada" -#254# "Seleccionar Directorio de Roms" -#255# "Actualizar la lista Actual de ROMs en el Navegador de ROMs" +#250# "Abrir una imagen ROM de N64" +#251# "Mostrar información acerca de la imagen cargada" +#252# "Iniciar emulación de la imagen ROM cargada" +#253# "Detener emulación de la imagen ROM cargada" +#254# "Seleccionar directorio de ROMs" +#255# "Actualizar la lista actual de ROMs en el navegador de ROMs" #256# "Salir de esta aplicación" -#257# "Reiniciar la imagen rom actual (recarga cualquier cambio de ajustes)" -#258# "Pausar/Reanudar emulación del rom en ejecución actual" -#259# "Generar una imagen Bitmap de la Pantalla actual" +#257# "Reiniciar la imagen ROM actual (recarga cualquier cambio de ajustes)" +#258# "Pausar/reanudar emulación del ROM en ejecución actual" +#259# "Generar una imagen bitmap de la pantalla actual" #260# "Limitar FPS a la velocidad correcta del N64" -#261# "Crear una instantánea del sistema actual para guardado rápido" -#262# "Crear una instantánea del sistema actual seleccionando la ubicación del archivo" -#263# "Cargar una instantánea de guardado rápido" -#264# "Elegir un archivo de guardado instantáneo para cargar" -#265# "Activar/Desactivar trucos Game shark" -#266# "El Botón Game shark es usado con trucos específicos" -#267# "Cambiar emulación de modo ventana a pantalla completa" +#261# "Guardar el estado de sistema actual" +#262# "Guardar el estado de sistema actual en una ubicación de archivo seleccionada" +#263# "Cargar el estado de sistema guardado" +#264# "Elegir un estado de sistema guardado para cargar" +#265# "Activar/desactivar trucos GameShark" +#266# "El botón GameShark es usado con trucos específicos." +#267# "Cambiar emulación de ventana a modo pantalla completa." #268# "Hacer que la ventana quede por encima las demás ventanas" -#269# "Cambiar ajustes dentro del plugin de Gráficos" -#270# "Cambiar ajustes dentro del plugin de Audio" -#271# "Cambiar ajustes dentro del plugin de Control (es decir definir las teclas)" +#269# "Cambiar ajustes dentro del plugin de gráficos" +#270# "Cambiar ajustes dentro del plugin de audio" +#271# "Cambiar ajustes dentro del plugin de control (es decir definir las teclas)" #272# "Cambiar ajustes dentro del plugin de RSP" -#273# "Mostrar uso del CPU del emulador dividido sobre diferentes recursos" -#274# "Ver/Cambiar ajustes para esta aplicación" -#275# "Ver Manual para la aplicación" +#273# "Mostrar uso de CPU del emulador dividido sobre diferentes recursos" +#274# "Ver/cambiar ajustes para esta aplicación" +#275# "Ver manual para la aplicación" #276# "Ver FAQ para la aplicación" -#278# "Acerca de la aplicación y Autores" -#277# "Acerca de los Autores de los archivos de soporte" -#279# "Abrir esta imagen ROM abierta previamente" -#280# "Elegir este directorio como tu directorio de roms" -#281# "Cambiar Aplicación para usar este lenguaje" -#282# "Elegir esta ubicación de guardado rápido" +#278# "Acerca de la aplicación y autores" +#277# "Acerca de los autores de los archivos de soporte" +#279# "Abrir esta imagen ROM previamente abierta" +#280# "Elegir este directorio como tu directorio de ROMs" +#281# "Cambiar aplicación para usar este lenguaje" +#282# "Elegir esta ubicación de guardado para los estados guardados" #283# "Jugar juego seleccionado" #284# "Información acerca del juego seleccionado" -#285# "Editar Ajustes para el juego seleccionado" +#285# "Editar ajustes para el juego seleccionado" #286# "Editar trucos para el juego seleccionado" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Nombre del Archivo" #301# "Nombre Interno" #302# "Nombre Correcto" #303# "Estado" -#304# "Tamaño del Rom" -#305# "Notas (Nucleo)" +#304# "Tamaño del ROM" +#305# "Notas (núcleo)" #306# "Notas (plugins predeterminados)" -#307# "Notas (Usuario)" +#307# "Notas (usuario)" #308# "ID del Cartucho" #309# "Fabricante" #310# "País" @@ -173,11 +173,11 @@ #318# "Retroalimentación de Fuerza" #319# "Formato del Archivo" -//Select Rom -#320# "Seleccionar Directorio actual de Roms" +//Select ROM +#320# "Seleccionar directorio de ROMs actual" //Messages -#340# "ROM Dañado? Usa GoodN64 y comprueba por un INI actualizado" +#340# "ROM Dañado? Usa GoodN64 y comprueba por una RDB actualizada" /********************************************************************************* * Options * @@ -189,7 +189,7 @@ #401# "Plugins" #402# "Directorios" #403# "Opciones" -#404# "Selección de Rom" +#404# "Selección de ROM" #405# "Avanzado" #406# "Ajustes Generales" #407# "Integración de Shell" @@ -200,45 +200,46 @@ //Plugin Dialog #420# "Acerca de" -#421# " plugin de RSP (reality signal processor): " -#422# " plugin de Vídeo (gráficos): " -#423# " plugin de Audio (sonido) : " -#424# " plugin de Entrada (mando): " -#425# "Usar GFX de Alto Nivel?" -#426# "Usar Audio de Alto Nivel?" +#421# " Plugin de RSP (Reality Signal Processor): " +#422# " Plugin de Vídeo (gráficos): " +#423# " Plugin de Audio (sonido) : " +#424# " Plugin de Entrada (mando): " +#425# "Gráficos HLE" +#426# "Audio HLE" #427# "** Usar Plugin de Sistema **" //Directory Dialog -#440# " Directorio de Plugins:: " -#441# " Directorio de Roms: " -#442# " Guardados Automáticos de N64: " -#443# " Guardados Instantáneos: " -#444# " Capturas de Pantalla: " -#445# "Ultima Carpeta de la cual un rom fue abierto." +#440# " Directorio de Plugins: " +#441# " Directorio de ROMs: " +#442# " Directorio de guardados nativos de N64: " +#443# " Directorio de estados guardados: " +#444# " Directorio de capturas de pantalla: " +#445# "Última carpeta de la cual un ROM fue abierto." #446# "Seleccionar directorio de plugins" -#447# "Seleccionar directorio de roms" -#448# "Seleccionar directorio de guardados automáticos" -#449# "Seleccionar directorio de guardados instantáneos" +#447# "Seleccionar directorio de ROMs" +#448# "Seleccionar directorio de guardados nativos de N64" +#449# "Seleccionar directorio de estados guardados" #450# "Seleccionar directorio de capturas de pantalla" -#451# " Directorio de Texturas: " -#452# "Seleccionar directorio de paquetes de texturas" +#451# " Directorio de paquete de texturas: " +#452# "Seleccionar directorio de paquete de texturas" //Options Dialog -#460# "Pausar emulación cuando la ventana no este activa?" -#461# "Al cargar un ROM ir a pantalla completa" -#462# "Ocultar Ajustes Avanzados" +#460# "Pausar emulación cuando la ventana no este activa" +#461# "Entrar en modo de pantalla completa al cargar un ROM" +#462# "Ocultar ajustes avanzados" #463# "Recordar trucos seleccionados" -#464# "Desactivar Protector de Pantalla cuando un rom esté en ejecución" -#465# "Mostrar Frecuencia de Cuadros" -#466# "Cambiar Tipo de Frecuencia de Cuadros" +#464# "Desactivar protector de pantalla cuando se esté en ejecutando un ROM" +#465# "Mostrar velocidad" +#466# "Velocidad de la pantalla:" +#467# "Comprobar si Project64 ya está en ejecución" -//Rom Browser Tab -#480# "Máx # de Roms Recordados (Máx 10):" -#481# "roms" -#482# "Máx # de Directorios de Roms Recordados (Máx 10):" +//ROM Browser Tab +#480# "Máx # de ROMs recordados (0-10):" +#481# "ROMs" +#482# "Máx # de directorios de ROMs recordados (0-10):" #483# "directorios" -#484# "Usar Navegador de Roms" -#485# "Usar recursión de Directorio" +#484# "Usar navegador de ROMs" +#485# "Usar recursión de directorio" #486# "Campos disponibles:" #487# "Mostrar campos en este orden:" #488# "Agregar ->" @@ -248,58 +249,62 @@ #492# "Actualizar navegador automáticamente" //Advanced Options -#500# "La mayoría de estos cambios no tendrán efecto hasta que un nuevo rom sea abierto o el rom actual sea reiniciado." +#500# "La mayoría de estos cambios no tendrán efecto hasta que un nuevo ROM sea abierto o el ROM actual sea reiniciado." #501# "Predeterminados del Núcleo" #502# "Estilo de núcleo del CPU:" -#503# "Método de código Self-mod:" -#504# "Tamaño Predeterminado de Memoria:" -#505# "Vinculación Avanzada de Bloques:" -#506# "Iniciar Emulación cuando el rom sea abierto?" -#507# "Siempre sobrescribir ajustes predeterminados con los del ini?" -#508# "Comprimir automáticamente guardados instantáneos" -#509# "Habilitar Depurador" +#503# "Métodos self mod:" +#504# "Tamaño de memoria predeterminado:" +#505# "Vinculación avanzada de bloques" +#506# "Iniciar emulación cuando el ROM sea abierto" +#507# "Siempre sustituir los ajustes predeterminados con los de la RDB" +#508# "Comprimir automáticamente estados guardados" +#509# "Habilitar depurador" #510# "Caché" #511# "PI DMA" -#512# "Inicio Cambiado" -#513# "Proteger Memoria" -#514# "TLB Unmapping" +#512# "Inicio cambiado" +#513# "Proteger memoria" +#514# "TLB no mapeado" -//Rom Options +//ROM Options #520# "Estilo de núcleo del CPU:" -#522# "Tamaño de Memoria:" -#523# "Vinculación Avanzada de Bloques:" -#524# "Tipo de Guardado predeterminado:" -#525# "Factor de Contador:" -#526# "Buffer de Compilación Ampliado" +#521# "Frecuencia de actualización de VI:" +#522# "Tamaño de memoria:" +#523# "Vinculación avanzada de bloques" +#524# "Tipo de guardado predeterminado:" +#525# "Factor de contador:" +#526# "Buffer de compilación ampliado" #527# "Usar TLB" #528# "Registrar almacenamiento en caché" -#529# "Demorar Interrupción SI" -#530# "Hack SP" +#529# "Demorar interrupción SI" +#530# "SP Rápido" #531# "Predeterminado" -#532# "Señal de Audio RSP" -#533# "Tiempo de Audio Fijo" -#534# "Método de Función de búsqueda:" -#535# "Método Personalizado Self Mod" -#536# "Sincronizar usando Audio" +#532# "Señal de audio RSP" +#533# "Tiempo de audio fijo" +#534# "Método de función de búsqueda:" +#535# "Método self mod personalizado" +#536# "Sincronizar usando audio" +#537# "Contador de AI por byte" +#538# "Motor de 32-bit" +#539# "Demorar interrupción DP" //Core Styles #540# "Interpretador" #541# "Recompilador" -#542# "Sincronizar Núcleos" +#542# "Sincronizar núcleos" //Self Mod Methods #560# "Ninguno" #561# "Caché" -#562# "Proteger Memoria" -#563# "Comprobar Memoria y Caché" -#564# "Cambia Memoria y Caché" -#565# "Comprobar Avance de Memoria" -#566# "Limpiar Código en Caché" +#562# "Proteger memoria" +#563# "Comprobar memoria y caché" +#564# "Cambia memoria y caché" +#565# "Comprobar avance de memoria" +#566# "Limpiar código en caché" -//Function Lookup memthod -#570# "Tabla Física de Búsqueda" -#571# "Tabla Virtual de Búsqueda" -#572# "Cambiar Memoria" +//Function Lookup method +#570# "Tabla física de búsqueda" +#571# "Tabla virtual de búsqueda" +#572# "Cambiar memoria" //RDRAM Size #580# "4 MB" @@ -310,54 +315,61 @@ #601# "Apagado" //Save Type -#620# "Usar Primer Tipo de Guardado Usado" -#621# "4Kbit Eeprom" -#622# "16Kbit Eeprom" -#623# "32Kbytes SRAM" -#624# "Flashram" +#620# "Usar primer tipo de guardado usado" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "Asociación de extensión de archivo:" -//Rom Notes -#660# "Estado del Rom:" -#661# "Nota del Núcleo:" -#662# "Nota del Plugin:" +//ROM Notes +#660# "Estado del ROM:" +#661# "Nota del núcleo:" +#662# "Nota del plugin:" // Accelerator Selector #680# "Estado del CPU:" -#681# "Elemento del Menú" -#682# "Teclas Actuales:" -#683# "Seleccionar Nueva Tecla de Atajo:" -#684# "Actualmente Asignado a:" +#681# "Elemento del menú" +#682# "Teclas actuales:" +#683# "Seleccionar nueva tecla de atajo:" +#684# "Actualmente asignado a:" #685# "Asignar" #686# "Remover" #687# "Reiniciar Todo" #688# "Juego no se está jugando" #689# "Jugando Juego" -#690# "Jugando Juego (ventana)" -#691# "Jugando Juego (Pantalla Completa)" +#690# "Jugando Juego (en ventana)" +#691# "Jugando Juego (pantalla completa)" +#692# "Detectar Tecla" // Frame Rate Option -#700# "Interrupciones Verticales por segundo" -#701# "Mostrar Listas por segundo" -#702# "Porcentaje de Velocidad" +#700# "Interrupciones verticales por segundo" +#701# "Mostrar listas por segundo" +#702# "Porcentaje de velocidad completa" // Increase speed #710# "Incrementar Velocidad del Juego" #711# "Disminuir Velocidad del Juego" +//Bottom page buttons +#720# "Reiniciar Página" +#721# "Reiniciar Todo" +#722# "Aplicar" +#723# "Cerrar" + /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title -#800# "Información del Rom" +//ROM Info Title +#800# "Información del ROM" -//Rom Info Text +//ROM Info Text #801# "Nombre del ROM:" -#802# "Nombre del Archivo:" +#802# "Nombre del archivo:" #803# "Ubicación:" -#804# "Tamaño del Rom:" +#804# "Tamaño del ROM:" #805# "ID del Cartucho:" #806# "Fabricante:" #807# "País:" @@ -388,7 +400,7 @@ //Code extension #1012# "Extensiones de Código" #1013# "Por favor elige un valor a ser usado para:" -#1014# "OK" +#1014# "Bien" #1015# "Cancelar" //Digital Value @@ -405,18 +417,18 @@ #1026# " " //Edit Cheat -#1027# "Editar Truco" -#1028# "Actualizar Truco" -#1029# "El Truco ha sido cambiado, quieres actualizar?" -#1030# "Truco Actualizado" +#1027# "Editar Truco" +#1028# "Actualizar Truco" +#1029# "El Truco ha sido cambiado.\n\nQuieres actualizar?" +#1030# "Truco actualizado" //Cheat Popup Menu -#1040# "Añadir Nuevo Truco..." -#1041# "Editar" +#1040# "Añadir Nuevo Truco..." +#1041# "Editar" #1042# "Borrar" -// short cut editor -#1100# "Reiniciar Accesos Directos" +// short-cut editor +#1100# "Reiniciar accesos directos" #1101# "Estás seguro de que quieres reiniciar los accesos directos?\n\nEsta acción no se puede deshacer." #1102# "Menú de Archivo" #1103# "Menú de Sistema" @@ -429,58 +441,58 @@ #2000# "*** CPU PAUSADO ***" #2001# "CPU Reanudado" #2002# "En un bucle permanente que no se puede salir. \nLa Emulación ahora se detendrá. \n\nComprueba el ROM y los Ajustes del ROM." -#2003# "Error al asignar Memoria" +#2003# "Error al asignar memoria" #2004# "El plugin predeterminado o seleccionado de vídeo falta o es invalido. \n\nNecesitas entrar en Ajustes y seleccionar un plugin de vídeo (gráficos).\nComprueba que tengas al menos un archivo de plugin compatible en tu carpeta de plugins." #2005# "El plugin predeterminado o seleccionado de audio falta o es invalido. \n\nNecesitas entrar en Ajustes y seleccionar un plugin de audio (sonido).\nComprueba que tengas al menos un archivo de plugin compatible en tu carpeta de plugins." -#2006# "El plugin predeterminado o seleccionado de RSP falta o es invalido. \n\nNecesitas entrar en Ajustes y seleccionar un plugin RSP.\nComprueba que tengas al menos un archivo de plugin compatible en tu carpeta de plugins." +#2006# "El plugin predeterminado o seleccionado de RSP falta o es invalido. \n\nNecesitas entrar en Ajustes y seleccionar un plugin RSP (Reality Signal Processor).\nComprueba que tengas al menos un archivo de plugin compatible en tu carpeta de plugins." #2007# "El plugin predeterminado o seleccionado de entrada falta o es invalido. \n\nNecesitas entrar en Ajustes y seleccionar un plugin de vídeo (gráficos).\nComprueba que tengas al menos un archivo de plugin compatible en tu carpeta de plugins." #2008# "Error al cargar plugin:" -#2009# "Error al cargar palabra\n\nComprueba el ROM y los Ajustes del ROM." -#2010# "Error al abrir el Archivo de Guardado" -#2011# "Error al abrir Eeprom" -#2012# "Error al abrir Flashram" +#2009# "Error al cargar palabra\n\nComprueba el ROM y los ajustes del ROM." +#2010# "Error al abrir el archivo de guardado" +#2011# "Error al abrir EEPROM" +#2012# "Error al abrir flash RAM" #2013# "Error al abrir mempak" #2014# "Intento de abrir el archivo zip fallido. \n\nProbablemente un archivo zip corrupto - prueba descomprimir el ROM manualmente." #2015# "Intento de abrir el archivo fallido." #2016# "Ocurrió un error cuando se intentaba abrir el archivo zip." -#2017# "El archivo cargado no parece ser un ROM de Nintendo64 valido. \n\nComprueba tus ROMs con GoodN64." +#2017# "El archivo cargado no parece ser un ROM de N64 valido. \n\nComprueba tus ROMs con GoodN64." #2018# "País desconocido" #2019# "Chip CIC desconocido" #2020# "Formato de archivo desconocido" #2021# "Acción de memoria desconocida\n\nEmulación detenida" #2022# "OpCode R4300i no manejado en" -#2023# "Ejecutando desde un espacio no-mapeado.\n\nComprueba el ROM y los Ajustes del ROM." -#2024# "La partida guardada no parece coincidir con el ROM en ejecución. \n\nLas Partidas Guardadas deben ser guardadas y cargadas entre ROMs 100% idénticos, \nen particular la REGION y VERSION necesita ser la misma. \nCargar esta partida es probable que cause al juego y/o al emulador se bloquee. \n\nEstas seguro de que quieres continuar cargando?" +#2023# "Ejecutando desde un espacio no-mapeado.\n\nComprueba el ROM y los ajustes del ROM." +#2024# "Este estado guardado no parece coincidir con el ROM en ejecución. \n\nLos estados deben ser guardados y cargados entre ROMs 100% idénticos. \nEn particular la REGION y VERSION necesita ser la misma. \nCargar esta estado es probable que cause al juego y/o al emulador se bloquee. \n\nEstás seguro de que quieres continuar cargando?" #2025# "Error" -#2026# "Secuencia de Copyright no encontrada en el LUT. El Juego ya no funcionara." +#2026# "Secuencia de copyright no encontrada en el LUT. El Juego ya no funcionara." #2027# "Falla en la Protección de Copia" -#2028# "Cambiar un plugin requiere que Project64 reinicie un ROM en ejecución. \nSi no quieres perder tu posición, responde No y guarda una partida primero. \n\nCambiar plugins y reiniciar juego ahora?" +#2028# "Cambiar un plugin requiere que Project64 reinicie un ROM en ejecución. \nSi no quieres perder tu posición, responde No y guarda el estado actual primero. \n\nCambiar plugins y reiniciar el ROM ahora?" #2029# "Cambiar Plugins" #2030# "Emulación finalizada" #2031# "Emulación iniciada" -#2032# "Imposible cargar partida guardada" -#2033# "Cargada la partida guardada" -#2034# "Guardar partida actual en" -#2035# "Ranura de partida guardada" -#2036# "Imagen de Intercambio de Byte" +#2032# "Imposible cargar estado" +#2033# "Estado cargado" +#2034# "Guardar estado actual en" +#2035# "Ranura de estado" +#2036# "Imagen de intercambio de byte" #2037# "Eligiendo imagen de N64" #2038# "Cargada" #2039# "Cargando imagen" -#2040# "No se puede abrir un rom porque los plugins no se han inicializado correctamente" -#2041# "Estas seguro de que realmente quieres borrar esto?" -#2042# "Borrar Truco" -#2043# "El Nombre del Truco ya esta en uso" -#2044# "Haz Alcanzado la cantidad Máxima de trucos para este rom" -#2045# "Inicializando el Plug-in" -#2046# "No has seleccionado una tecla virtual para asignarla al elemento del menú" -#2047# "Necesitas seleccionar un elemento del menú para asignarle esta tecla a" -#2048# "El Acceso directo ya está asignado a otro elemento del menú" -#2049# "Ningún acceso directo ha sido seleccionado para ser removido" -#2050# "Rom Cargada. Esperando por la emulación para iniciar." -#2051# "project64 beta es solo para miembros.\n\nsi tienes una cuenta en pj64.net, no deberías estar viendo este error!!\npor favor contacta con nosotros en el sitio" +#2040# "No se puede abrir un ROM porque los plugins no se han inicializado correctamente." +#2041# "Estás seguro de que realmente quieres borrar esto?" +#2042# "Borrar Truco" +#2043# "El nombre del truco ya está en uso." +#2044# "Haz alcanzado la cantidad máxima de trucos para este ROM." +#2045# "Inicializando el plugin" +#2046# "No has seleccionado una tecla virtual para asignarla al elemento del menú." +#2047# "Necesitas seleccionar un elemento del menú al cual asignarle esta tecla." +#2048# "El acceso directo ya está asignado a otro elemento del menú." +#2049# "Ningún acceso directo ha sido seleccionado para ser removido." +#2050# "ROM cargada. Esperando por la emulación para iniciar." +#2051# "Project64 beta es solo para miembros.\n\nSi tienes una cuenta en pj64.net, no deberías estar viendo este error!!\nPor favor contacta con nosotros en el sitio." #2052# "Error del Programa" #2053# "Fallo al encontrar el nombre de archivo en archivo 7z" -#2054# "Usar Gráficos de Bajo Nivel " -#2055# "Los Gráficos de Bajo Nivel no son para uso general!!!\nEs aconsejable que tu solo uses esto para pruebas, no para jugar algún juego con ello\n\nCambiar a LLE GFX?" -#2056# "Usar Audio de Alto Nivel" -#2057# "El Audio de Alto nivel requiere un plugin de terceros!!!\nSi no usas un plugin de terceros que soporte audio de alto nivel entonces no oirás ningún sonido.\n\nUsar audio de alto nivel?" +#2054# "Gráficos de Emulación de Bajo Nivel" +#2055# "Los Gráficos LLE no son para uso general!!!\nEs aconsejable que tu solo uses esto para pruebas, y no para jugar juegos.\n\nCambiar a Gráficos LLE?" +#2056# "Audio de Emulación de Alto Nivel" +#2057# "El Audio HLE requiere un plugin de terceros!!!\nSi no usas un plugin de audio terceros que soporte HLE, no oirás ningún sonido.\n\nCambiar a Audio HLE?" diff --git a/Lang/Swedish.pj.Lang b/Lang/Swedish.pj.Lang index 14176e8de..6f0f8ab7e 100644 --- a/Lang/Swedish.pj.Lang +++ b/Lang/Swedish.pj.Lang @@ -15,7 +15,7 @@ #9 # "Besök Hemsidan" #10 # "ROM Databas (.RDB)" #11 # "Fusk fil (.CHT)" -#12 # "Rom Information (.RDX)" +#12 # "ROM Information (.RDX)" //About INI title #20 # "Om INI filer" @@ -71,6 +71,8 @@ #180# "&Hjälp" #181# "Om &INI Filer" #182# "&Om Project 64" +#183# "Support &Forum" +#184# "&Hemsida" //Current Save Slot menu #190# "Standard" @@ -131,17 +133,17 @@ #286# "Ändra fusk för valda N64 filen" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Fil Namn" #301# "Orginal Namn" #302# "Version Namn" #303# "Status" #304# "Fil Storlek" -#305# "Anteckningar (Kärna)" -#306# "Anteckningar (Standard plugins)" -#307# "Anteckningar (Användare)" +#305# "Anteckningar (kärna)" +#306# "Anteckningar (standard plugins)" +#307# "Anteckningar (användare)" #308# "Förpacknings ID" #309# "Tillverkare" #310# "Land" @@ -152,8 +154,9 @@ #315# "Släppnings Datum" #316# "Kategori" #317# "Spelare" +#318# "Tvinga Respons" -//Select Rom +//Select ROM #320# "Välj nuvarande fil katalog" //Messages @@ -201,7 +204,7 @@ #462# "Göm Avancerade Inställningar" #463# "Kom ihÃ¥g valda fusk" -//Rom Browser Tab +//ROM Browser Tab #480# "Max # av filer ihÃ¥gkomna (Max 10):" #481# "roms" #482# "Max # av fil kataloger ihÃ¥gkomna (Max 10):" @@ -226,7 +229,7 @@ #507# "Skriv alltid över standard inställningarna frÃ¥n INI filen?" #508# "Komprimera automatiskt direkt sparning" -//Rom Options +//ROM Options #520# "CPU Kärnans Typ:" #521# "Kod Metod:" #522# "Minnes Storlek:" @@ -239,6 +242,7 @@ #529# "Vänta Med SI Avbrytandet" #530# "SP Hack" #531# "Standard" +#532# "RSP Ljud Signal" //Core Styles #540# "Interpreter" @@ -263,15 +267,15 @@ //Save Type #620# "Använd Första sparnings typ" -#621# "4kbit Eeprom" -#622# "16kbit Eeprom" -#623# "32kbytes SRAM" -#624# "Flashram" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbytes SRAM" +#624# "Flash RAM" //Shell Integration Tab #640# "Fil typ association:" -//Rom Notes +//ROM Notes #660# "N64 Filens Status:" #661# "Kärna Anteckning:" #662# "Plugin Anteckning:" @@ -279,10 +283,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title -#800# "Rom Information" +//ROM Info Title +#800# "ROM Information" -//Rom Info Text +//ROM Info Text #801# "N64 Filens Namn:" #802# "Fil typ Namn:" #803# "Plats:" @@ -368,8 +372,8 @@ Kolla sÃ¥ att du Ã¥tminstÃ¥nde har en kompatible plugin i din plugin katalog." Verify ROM and ROM Settings." #2010# "Misslyckade öppna den sparade filen" -#2011# "Misslyckade öppna Eeprom" -#2012# "Misslyckade öppna Flashram" +#2011# "Misslyckade öppna EEPROM" +#2012# "Misslyckade öppna flash RAM" #2013# "Misslyckade öppna mempak" #2014# "Försök att öppna zip filen misslyckades. Saknad eller korrupt zip fil - kolla katalog och fil. @@ -381,7 +385,7 @@ Du kanske mÃ¥ste starta om programmet." Verifiera dina N64 filer with GoodN64." #2018# "Okänt land" -#2019# "Okänt Cic Chip" +#2019# "Okänt CIC chip" #2020# "Okänt fil format" #2021# "Okänt minnes aktion @@ -418,24 +422,5 @@ Byta plugin och starta om nu?" #2040# "Kan inte öppna filen pÃ¥ grund av att grafik pluginen inte är helt OK" #2041# "Är du säker pÃ¥ att du vill ta bort det?" #2042# "Borttagna fusk" -#2043# "Fuskets namn används redan" +#2043# "Fuskets namn används redan" #2044# "Du har nÃ¥t max antalet av fusk för detta spelet" - -//Nytt i 1.6 -/**************************************** **************************************** * -* Menu -**************************************** **************************************** */ -//Help Menu -#183# "Support &Forum" -#184# "&Hemsida" - -/**************************************** **************************************** * -* Rom Browser * -**************************************** **************************************** */ -//Rom Browser Fields -#318# "Tvinga Respons" - -/**************************************** **************************************** * -* Options * -**************************************** **************************************** */ -#532# "RSP Ljud Signal" diff --git a/Lang/T-Chinese.pj.Lang b/Lang/T-Chinese.pj.Lang deleted file mode 100644 index d78ea28f2..000000000 --- a/Lang/T-Chinese.pj.Lang +++ /dev/null @@ -1,425 +0,0 @@ -/********************************************************************************* -* Meta Information * -*********************************************************************************/ -//About DLL -#1 # "å°ç£ç¹é«”中文" // LANGUAGE ID -#2 # "YoshiAdol" // Author -#3 # "1.5.0.0" // Version -#4 # "2002-10-12" // Date - -//About DLL Dialog -#5 # "GUI 翻譯 (.pj.Lang)" -#6 # "製作者" -#7 # "版本" -#8 # "日期" -#9 # "作者首é " -#10 # "ROM 資料庫 (Project64.rdb)" -#11 # "金手指檔案 (Project64.cht)" -#12 # "ROM資訊 (Project64.rdx)" - -//About INI title -#20 # "Project64ç¾åœ¨ä½¿ç”¨çš„INI作者" - -/********************************************************************************* -* Menu * -*********************************************************************************/ -//File Menu -#100# "檔案(&F)" -#101# "é–‹å•ŸROM(&O)." -#102# "ROM資訊(&I)" -#103# "開始模擬(&S)" -#104# "çµæŸæ¨¡æ“¬(&E)" -#105# "é¸æ“‡ROMç€è¦½è³‡æ–™å¤¾(&S)" -#106# "é‡æ–°æ•´ç†(&R)" -#107# "最近開啟的ROM(&E)" -#108# "最近開啟的資料夾(&F)" -#109# "離開(&X)" - -//System Menu -#120# "系統(&S)" -#121# "é‡ç½®ROM(&R)" -#122# "æš«åœ(&P)" -#123# "抓圖(&N)" -#124# "速度é™åˆ¶(&E)" -#125# "儲存隨時記憶進度(&S)" -#126# "儲存進度至檔案(&A)..." -#127# "載入隨時記憶進度(&O)" -#128# "由檔案讀å–進度(&L)..." -#129# "é¸æ“‡é€²åº¦ä½¿ç”¨ç·¨è™Ÿ(&T)" -#130# "金手指(&C)" -#131# "GS金手指(&B)" -#132# "繼續(&R)" - -//Options Menu -#140# "設定(&O)" -#141# "全螢幕(&F)" -#142# "最上層顯示(&T)" -#143# "視訊外掛程å¼è¨­å®š(&V)..." -#144# "音效外掛程å¼è¨­å®š(&A)..." -#145# "控制器外掛程å¼è¨­å®š(&I)..." -#146# "RSP外掛程å¼è¨­å®š(&R)..." -#147# "顯示CPU使用率(&S)" -#148# "進階設定(&T)" - -//Debugger Menu -#160# "除錯(&D)" - -//Language Menu -#175# "語言é¸æ“‡(&L)" - -//Help Menu -#180# "說明(&H)" -#181# "關於INI檔案(&F)" -#182# "關於Project64(&A)" - -//Current Save Slot menu -#190# "é è¨­ &D(.pj)" -#191# "檔案 &1 (.pj1)" -#192# "檔案 &2 (.pj2)" -#193# "檔案 &3 (.pj3)" -#194# "檔案 &4 (.pj4)" -#195# "檔案 &5 (.pj5)" -#196# "檔案 &6 (.pj6)" -#197# "檔案 &7 (.pj7)" -#198# "檔案 &8 (.pj8)" -#199# "檔案 &9 (.pj9)" -#200# "檔案 1&0 (.pj0)" - -//Pop up Menu -#210# "開始éŠæˆ²(&P)" -#211# "ROM資訊(&O)" -#212# "修改ROM設定(&T)" -#213# "編輯金手指(&C)" - -// Menu Descriptions -#250# "é–‹å•ŸN64 ROM檔(å¯èƒ½ä½¿ç”¨ZIP檔ï¼ï¼‰" -#251# "顯示目å‰åŸ·è¡Œçš„ROM資訊" -#252# "開始模擬載入的ROM檔" -#253# "åœæ­¢æ¨¡æ“¬è¼‰å…¥çš„ROM檔" -#254# "更改ç€è¦½ROM的資料夾" -#255# "é‡æ–°æ•´ç†ROM資料夾(è‹¥ROM檔案有變更時,è«‹é‡æ–°æ•´ç†)" -#256# "離開Project64" -#257# "é‡æ–°å•Ÿå‹•ROM並且將設定生效" -#258# "æš«åœ/繼續模擬ROM(å¯ä»¥ä½¿ç”¨éµç›¤ä¸Šçš„Pauseéµ!)" -#259# "抓å–éŠæˆ²ç•«é¢(經由外掛程å¼)" -#260# "é™åˆ¶æ¨¡æ“¬é€Ÿåº¦æ­£ç¢ºçš„顯示速度(較高速的電腦若ä¸é¸å–å¯èƒ½é€Ÿåº¦æœƒéŽå¿«)" -#261# "將目å‰ç‹€æ…‹å­˜è‡³Project64設定的隨時記憶檔(系統\é¸æ“‡é€²åº¦ä½¿ç”¨ç·¨è™Ÿ)" -#262# "將目å‰ç‹€æ…‹å­˜è‡³Project64記憶檔(å¯ä½¿ç”¨ä»»ä½•æª”å)" -#263# "讀å–Project64設定的隨時記憶檔" -#264# "讀å–Project64記憶檔(任何檔å)" -#265# "é¸æ“‡æˆ–增加金手指給目å‰åŸ·è¡Œçš„ROM使用" -#266# "使用一個按鈕來執行金手指" -#267# "將會é‡è¦–窗模å¼è®Šæ›´åˆ°å…¨èž¢å¹•æ¨¡å¼(按Escéµè¿”回)" -#268# "ä¿æŒProject64在最上層" -#269# "開啟視訊(顯示)外掛程å¼è¨­å®š" -#270# "開啟音效(音樂)外掛程å¼è¨­å®š" -#271# "開啟控制器(æ–æ¡¿)外掛程å¼è¨­å®š" -#272# "é–‹å•ŸRSP外掛程å¼è¨­å®š" -#273# "顯示或關閉CPU使用率" -#274# "Project64的進階設定(外掛程å¼è«‹åœ¨æ­¤é¸æ“‡)" -#275# "é–‹å•ŸProject64的使用者手冊" -#276# "é–‹å•ŸProject64éŠæˆ²è¨­å®šèªªæ˜Ž" -#277# "關於此應用程å¼åŠä½œè€…" -#278# "關於作者與感è¬" -#279# "讀å–最近開啟的ROM" -#280# "使用最近ç€è¦½çš„資料夾" -#281# "é¸æ“‡ä¸åŒçš„語言" -#282# "é¸æ“‡ä¸åŒçš„進度檔" -#283# "讀å–並開始模擬這個ROM" -#284# "顯示這個ROM資訊" -#285# "編輯這個ROM設定在RDB檔案" -#286# "編輯這個ROM的金手指" - -/********************************************************************************* -* Rom Browser * -*********************************************************************************/ -//Rom Browser Fields -#300# "檔案å稱" -#301# "內部å稱" -#302# "éŠæˆ²å稱" -#303# "狀態" -#304# "ROM大å°" -#305# "é‡è¦è¨˜éŒ„" -#306# "外掛程å¼è¨˜éŒ„" -#307# "使用者記錄" -#308# "縮寫" -#309# "製作公å¸" -#310# "版本å€åŸŸ" -#311# "開發者" -#312# "CRC1" -#313# "CRC2" -#314# "CIC 片" -#315# "發行日期" -#316# "é¡žåž‹" -#317# "玩家數目" - -//Select Rom -#320# "é¸æ“‡ç€è¦½ROM的資料夾" - -//Messages -#340# "無法使用的ROM,請使用GoodN64檢查新的RDB檔" - -/********************************************************************************* -* Options * -*********************************************************************************/ -//Options Title -#400# "Project64 設定" - -//Tabs -#401# "外掛程å¼" -#402# "資料夾" -#403# "設定" -#404# "ROMç€è¦½é¸é …" -#405# "進階設定" -#406# "ROMé¸é …" -#407# "關連" -#408# "ROM 紀錄" - -//Plugin Dialog -#420# "關於" -#421# "&Reality Signal Processor plugin" -#422# "視訊(顯示)外掛程å¼(&V)" -#423# "音效(音樂)外掛程å¼(&A)" -#424# "控制器(æ–æ¡¿)外掛程å¼(&I)" - -//Directory Dialog -#440# "外掛程å¼è³‡æ–™å¤¾(&P)" -#441# "ROM資料夾(&R)" -#442# "N64存檔資料夾(&N)" -#443# "Project64隨時記憶檔資料夾(&T)" -#444# "抓å–圖片資料夾(&S)" -#445# "使用最後開啟的ROM資料夾(&L)" -#446# "é¸æ“‡æ‚¨å­˜æ”¾å¤–掛程å¼çš„資料夾" -#447# "é¸æ“‡æ‚¨å­˜æ”¾ROM檔的資料夾" -#448# "é¸æ“‡æ‚¨å­˜æ”¾N64存檔的資料夾" -#449# "é¸æ“‡æ‚¨å­˜æ”¾Project64隨時記憶檔的資料夾" -#450# "é¸æ“‡æ‚¨æ¬²æŠ“å–圖片的資料夾" - -//Options Dialog -#460# "當Projectä¸æ˜¯ä½¿ç”¨è¦–窗時暫åœ(&P)" -#461# "讀å–éŠæˆ²å¾Œè‡ªå‹•åˆ‡æ›è‡³å…¨èž¢å¹•(&F)" -#462# "éš±è—進階設定(推薦!) (&H)" -#463# "記憶æ¯å€‹éŠæˆ²æ‰€é¸æ“‡çš„金手指(&R)" - -//Rom Browser Tab -#480# "最近開啟的ROM記憶數目(&N) (0-10)" -#481# "個紀錄" -#482# "最近開啟的資料夾記憶數目(&F) (0-10)" -#483# "資紀錄" -#484# "使用ROMç€è¦½å™¨(&B)" -#485# "功能表循環(&D)" -#486# "å¯ä½¿ç”¨çš„(&A)" -#487# "顯示出的(&S)" -#488# "增加(A)->" -#489# "<- 移除(&R)" -#490# "上(&U)" -#491# "下(&D)" - -//Advanced Options -#500# "這些設定åªä½¿ç”¨åœ¨RDB檔沒有正確åŠå…·é«”的設定時, -è‹¥RDB檔已經設定,則下列設定無效" -#501# "核心設定(&D)" -#502# "核心模擬模å¼(&C):" -#503# "內部修正方å¼(&S):" -#504# "記憶容é‡å¤§å°(&M):" -#505# "進階å€å¡Šé€£çµ(&A):" -#506# "éŠæˆ²è®€å–後立å³é–‹å§‹æ¨¡æ“¬(&T)" -#507# "覆寫這些設定在RDB檔(&O)" -#508# "自動將隨時存檔壓縮æˆZip檔(ä¸å£“縮速度較快)" - -//Rom Options -#520# "核心模擬模å¼(&C):" -#521# "內置記憶方å¼(&S):" -#522# "記憶容é‡å¤§å°(&M):" -#523# "進階å€å¡Šé€£çµ(&A):" -#524# "存檔類型(&V):" -#525# "最高速度é™åˆ¶(&F):" -#526# "較大的緩è¡è¨˜æ†¶é«”(&L)" -#527# "é å®šè¦ä½¿ç”¨TLB(&T)" -#528# "éš±è—登記(&R)" -#529# "延緩SI中斷(&I)" -#530# "SP Hack(&H)" -#531# "* 使用é è¨­" - -//Core Styles -#540# "直譯器" -#541# "é‡è­¯å™¨" -#542# "åŒæ™‚å•Ÿå‹•" - -//Self Mod Methods -#560# "ç„¡" -#561# "éš±è—" -#562# "安全記憶體" -#563# "檢查記憶體並隱è—" -#564# "æ›´æ›è¨˜æ†¶é«”並隱è—" -#565# "檢查進階記憶體" - -//RDRAM Size -#580# "4 MB" -#581# "8 MB" - -//Advanced Block Linking -#600# "é–‹å•Ÿ" -#601# "關閉" - -//Save Type -#620# "* 使用第一個類型" -#621# "4åƒä½å…ƒ EEPROM" -#622# "16åƒä½å…ƒ EEPROM" -#623# "32åƒä½å…ƒ SRAM" -#624# "128åƒä½å…ƒ å‹•æ…‹RAM" - -//Shell Intergration Tab -#640# "檔案與Project64連çµ" - -//Rom Notes -#660# "狀態(&S):" -#661# "é‡è¦è¨˜éŒ„(&C):" -#662# "外掛程å¼è¨˜éŒ„(&P):" - -/********************************************************************************* -* ROM Information * -*********************************************************************************/ -//Rom Info Title Title -#800# "ROM資訊" - -//Rom Info Text -#801# "內部å稱" -#802# "檔案å稱" -#803# "ä½ç½®" -#804# "大å°" -#805# "縮寫" -#806# "製作公å¸" -#807# "版本å€åŸŸ" -#808# "CRC1" -#809# "CRC2" -#810# "CIC 片" - -/********************************************************************************* -* Cheats * -*********************************************************************************/ -//Cheat List -#1000# "金手指" -#1001# "金手指:" -#1002# "說明: " -#1003# "é¸æ“‡å…¨éƒ¨" -#1004# "全部å–消é¸æ“‡(&U)" - -//Add Cheat -#1005# "新增金手指" -#1006# "å稱:" -#1007# "金手指碼:" -#1008# "æ’å…¥" -#1009# "清除" -#1010# " 金手指說明:" -#1011# "新增到 DB" -#1022# "新增金手指" -#1023# "建立新金手指" -#1024# "<ä½å€> <數值>" -#1025# "設定:" -#1026# "<數值> <標籤>" - -//Code extension -#1012# "編碼延長" -#1013# "è«‹é¸æ“‡ä¸€å€‹æ•¸å€¼ä½¿ç”¨:" -#1014# "確定" -#1015# "å–消" - -//Digital Value -#1016# "數ä½é‡" -#1017# "è«‹é¸æ“‡ä¸€å€‹æ•¸å€¼:" -#1018# "(&V)" -#1019# "給" -#1020# "到" -#1021# "說明(&N):" - -//Edit Cheat -#1027# "編輯金手指" -#1028# "更新金手指" - -//Cheat Popup Menu -#1040# "建立新金手指..." -#1041# "編輯..." -#1042# "刪除" - -/********************************************************************************* -* Messages * -*********************************************************************************/ -#2000# "æš«åœ" -#2001# "繼續" -#2002# "在無法改變的å€åŸŸå…§ä¸èƒ½é€€å‡º, -模擬å³å°‡åœæ­¢ - -Verify ROM and ROM Settings." -#2003# "記憶體分é…失敗" -#2004# "é è¨­çš„視訊外掛程å¼æª”案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有一個以上å¯ä½¿ç”¨çš„視訊外掛檔案在你的視訊外掛資料夾裡" -#2005# "é è¨­çš„音效外掛程å¼æª”案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有一個以上å¯ä½¿ç”¨çš„音效外掛檔案在你的音效外掛資料夾裡" -#2006# "é è¨­çš„RPS外掛程å¼æª”案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有正確的安è£Project64並且å«æœ‰å¤–掛程å¼" -#2007# "é è¨­çš„控制器外掛程å¼æª”案ä¸å­˜åœ¨æˆ–無法使用 - -請確定您有一個以上å¯ä½¿ç”¨çš„控制器外掛檔案在你的控制器外掛資料夾裡" -#2008# "無法讀å–外掛:" -#2009# "ç„¡æ³•è®€å– - -ROM驗證和設定" -#2010# "無法開啟隨時記憶檔" -#2011# "無法開啟EEPROM" -#2012# "無法開啟動態RAM" -#2013# "無法開啟MemPak" -#2014# "無法開啟此ZIP檔 -請檢查此ZIP檔中是å¦å«æœ‰æ­£ç¢ºçš„ROM - -ä½ å¯èƒ½éœ€è¦é‡æ–°é–‹å•Ÿé€™å€‹ç¨‹å¼" -#2015# "開啟檔案時發生錯誤" -#2016# "當嘗試開啟ZIP檔時發生錯誤" -#2017# "這個檔案並ä¸æ˜¯N64çš„ROM檔 - -請使用GoodROM檢查這個ROM" -#2018# "未知的國家" -#2019# "未知的CIC 片" -#2020# "未知的檔案格å¼" -#2021# "未知的記憶動作 - -模擬çµæŸ" -#2022# "無法開啟核心碼" -#2023# "執行並無法映射空間 - -請檢查ROM檔和ROM設定" -#2024# "這個存檔並ä¸é©ç”¨æ–¼é€™å€‹ROM - -隨時記憶存檔必須100%的來自這個ROM -(包括ROM的版本å€åŸŸ) -讀å–這個存檔å¯èƒ½æœƒå°Žè‡´éŒ¯èª¤ - -確定è¦ç¹¼çºŒè®€å–嗎?" -#2025# "應用程å¼æˆ–核心錯誤" -#2026# "版權åºåˆ—並未在LUT中找到, éŠæˆ²ç„¡æ³•é•·ä¹…執行" -#2027# "複製ä¿è­·å¤±æ•—" -#2028# "改變外掛程å¼å¿…é ˆé‡æ–°å•Ÿå‹•ä»¥åŸ·è¡Œçš„ROM -å‡ä½¿æ‚¨éœ€è¦å­˜æª”,è«‹é¸æ“‡å–消,存檔後å†åŸ·è¡Œé‡æ–°èµ·å‹• - -ç¾åœ¨æ›´æ”¹å¤–掛程å¼ä¸¦é‡æ–°å•Ÿå‹•éŠæˆ²ï¼Ÿ?" -#2029# "更改外掛程å¼" -#2030# "模擬çµæŸ" -#2031# "模擬開始" -#2032# "ä¸èƒ½è®€å–存檔" -#2033# "讀å–進度:" -#2034# "儲存進度:" -#2035# "讀å–隨時進度檔" -#2036# "Byteswapping ROM" -#2037# "請等候所é¸æ“‡çš„ROM" -#2038# "讀å–完æˆ" -#2039# "正在讀å–ROM" -#2040# "您ä¸èƒ½é–‹å•Ÿæ­¤ROM,å¯èƒ½æ˜¯å¤–掛程å¼(視訊,音效,控制器,RSP)ä¸æ”¯æ´" -#2041# "您確定以è¦åˆªé™¤é€™å€‹é‡‘手指?" -#2042# "刪除Cheat" -#2043# "金手指å稱已經使用,請使用其他的" -#2044# "您的金手指數目以到é”最大值,您將無法å†æ·»åŠ é‡‘手指" - - diff --git a/Lang/Ukrainian.pj.Lang b/Lang/Ukrainian.pj.Lang index e07f1ecac..1f1651af7 100644 --- a/Lang/Ukrainian.pj.Lang +++ b/Lang/Ukrainian.pj.Lang @@ -104,7 +104,7 @@ #257# "Перезавантажити поточну гру" #258# "Призупинити/відновити поточну гру" #259# "Зберегти Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° екрані у папку зі Ñкріншотами" -#260# "Обмежити кількіÑÑ‚ÑŒ кадрів за Ñекунду до дійÑної швидкоÑÑ‚Ñ– Nintendo64" +#260# "Обмежити кількіÑÑ‚ÑŒ кадрів за Ñекунду до дійÑної швидкоÑÑ‚Ñ– Nintendo 64" #261# "Зберегти поточний Ñтан гри на обраний блок пам'ÑÑ‚Ñ–" #262# "Зберегти поточний Ñтан гри в обрану папку" #263# "Відновити збережений Ñтан гри" @@ -133,9 +133,9 @@ #286# "Редагувати Ñекретні коди Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¾Ñ— гри" /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields #300# "Ðазва файлу" #301# "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð½Ð°Ð·Ð²Ð°" #302# "Ðазва згідно GoodN64" @@ -156,7 +156,7 @@ #317# "Гравців" #318# "ВібраціÑ" -//Select Rom +//Select ROM #320# "Обрати поточну папку з іграми" #340# "Поганий ROM? ÑкориÑтайтеÑÑ GoodN64 та пошукайте оновлені файли підтримки" @@ -202,7 +202,7 @@ #462# "&Приховати додаткові опції" #463# "Пам'Ñтати &обрані Ñекретні коди" -//Rom Browser Tab +//ROM Browser Tab #480# "КількіÑÑ‚ÑŒ &ігор у ÑпиÑку (до 10):" #481# "шт." #482# "КількіÑÑ‚ÑŒ &папок у ÑпиÑку (до 10):" @@ -227,7 +227,7 @@ #507# "Замінювати &обрані опції опціÑми з бази даних" #508# "&Ðвтоматично компреÑувати збережені Ñтани" -//Rom Options +//ROM Options #520# "&Тип Ñдра:" #521# "&Метод обробки коду:" #522# "&Розмір пам'ÑÑ‚Ñ–:" @@ -265,15 +265,15 @@ //Save Type #620# "Обирає програма" -#621# "4kbit EEPROM" -#622# "16kbit EEPROM" -#623# "32kbytes SRAM" -#624# "128kbyte FlashRAM" +#621# "4-kbit EEPROM" +#622# "16-kbit EEPROM" +#623# "32-kbyte SRAM" +#624# "128-kbyte flash RAM" //Shell Integration Tab #640# "Поєднати з Project64:" -//Rom Notes +//ROM Notes #660# "&Стан гри:" #661# "Ðотатки - &Ñдро:" #662# "Ðотатки - &плагіни:" @@ -281,10 +281,10 @@ /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title +//ROM Info Title #800# "Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ гру" -//Rom Info Text +//ROM Info Text #801# "Ðазва ROMу:" #802# "Ðазва файлу:" #803# "ШлÑÑ… до файлу:" @@ -371,14 +371,14 @@ Перевірте гру та Ñ—Ñ— опції." #2010# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñтан" #2011# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ EEPROM" -#2012# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ FlashRAM" -#2013# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ MemPak" +#2012# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ flash RAM" +#2013# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ mempak" #2014# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ .zip-файл. Можливо .zip-файл зламано - перевірте файл та шлÑÑ… до нього." #2015# "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл." #2016# "СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° при відкритті .zip-файлу." -#2017# "Завантажений файл не Ñ” дійÑним Nintendo64 ROMом. +#2017# "Завантажений файл не Ñ” дійÑним Nintendo 64 ROMом. Перевірте ваші ігри прграмою GoodN64." #2018# "Ðевідомий регіон" diff --git a/Plugin/Input/Jabo_DInput.dll b/Plugin/Input/Jabo_DInput.dll deleted file mode 100644 index 09b12a034..000000000 Binary files a/Plugin/Input/Jabo_DInput.dll and /dev/null differ diff --git a/Project64.vs2013.sln b/Project64.vs2013.sln index efd9aed01..32b6005d2 100644 --- a/Project64.vs2013.sln +++ b/Project64.vs2013.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.21005.1 +VisualStudioVersion = 12.0.31101.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "3rd Party", "3rd Party", "{AA8F7F8E-5377-4911-859D-8A8817B0DB26}" EndProject @@ -12,6 +12,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Source\Common\Common.vcxproj", "{B4A4B994-9111-42B1-93C2-6F1CA8BC4421}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Project64", "Source\Project64\Project64.vcxproj", "{7E534C8E-1ACE-4A88-8807-39A11ED4DA18}" + ProjectSection(ProjectDependencies) = postProject + {FD617E80-9E40-4138-85DA-B94633972E6A} = {FD617E80-9E40-4138-85DA-B94633972E6A} + EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RSP", "Source\RSP\RSP.vcxproj", "{A7ED562C-63F3-4B7E-B6B3-2CF7848752E1}" EndProject @@ -125,12 +128,12 @@ Global {3326E128-33AF-422C-BB7C-67CC6B915610} = {AA8F7F8E-5377-4911-859D-8A8817B0DB26} {4BC6906B-213E-40D7-9FC7-1A93E228393D} = {AA8F7F8E-5377-4911-859D-8A8817B0DB26} {731BD205-2826-4631-B7AF-117658E88DBC} = {AA8F7F8E-5377-4911-859D-8A8817B0DB26} + {A4D13408-A794-4199-8FC7-4A9A32505005} = {9FE699A5-41C3-4441-92AB-639B3D77DE26} {93447136-FACD-4740-8F35-FC46FB4A9E82} = {1379F817-7E3D-4F58-9C22-7E364E46E842} {427F1DCD-3BED-4010-9322-077A4C06D871} = {1379F817-7E3D-4F58-9C22-7E364E46E842} {93CFEDF3-9A75-4484-B169-D9D8074F5AC2} = {1379F817-7E3D-4F58-9C22-7E364E46E842} {05B9CB11-12D1-47CD-8E4A-88E12162119B} = {1379F817-7E3D-4F58-9C22-7E364E46E842} {25A25249-C284-4C5A-8DC2-26FC3EB13703} = {1379F817-7E3D-4F58-9C22-7E364E46E842} - {A4D13408-A794-4199-8FC7-4A9A32505005} = {9FE699A5-41C3-4441-92AB-639B3D77DE26} {462C2608-182F-452C-944F-AF201E19300B} = {9FE699A5-41C3-4441-92AB-639B3D77DE26} {2DADDAA5-0F57-46ED-A974-747908DDC7F3} = {9FE699A5-41C3-4441-92AB-639B3D77DE26} EndGlobalSection diff --git a/PropertySheets/Debug.props b/PropertySheets/Debug.props index b2812cc1e..cefd72359 100644 --- a/PropertySheets/Debug.props +++ b/PropertySheets/Debug.props @@ -1,32 +1,32 @@ - - - - - <_ProjectFileVersion>12.0.21005.1 - - - - _DEBUG;DEBUG;%(PreprocessorDefinitions) - Disabled - Default - false - Neither - false - false - false - EnableFastChecks - true - MultiThreadedDebug - - - - - - _DEBUG;DEBUG;%(PreprocessorDefinitions) - - - _DEBUG;DEBUG;%(PreprocessorDefinitions) - - - + + + + + <_ProjectFileVersion>12.0.21005.1 + + + + _DEBUG;DEBUG;%(PreprocessorDefinitions) + Disabled + Default + false + Neither + false + false + false + EnableFastChecks + true + MultiThreadedDebug + + + + + + _DEBUG;DEBUG;%(PreprocessorDefinitions) + + + _DEBUG;DEBUG;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/PropertySheets/Debug.vsprops b/PropertySheets/Debug.vsprops index 12da0c6e3..3e94c6fdb 100644 --- a/PropertySheets/Debug.vsprops +++ b/PropertySheets/Debug.vsprops @@ -1,4 +1,4 @@ - + + - - - <_ProjectFileVersion>12.0.21005.1 - - - - MinSpace - Default - false - Size - false - false - false - NDEBUG;%(PreprocessorDefinitions) - false - MultiThreaded - - - - - - NDEBUG;%(PreprocessorDefinitions) - - - NDEBUG;%(PreprocessorDefinitions) - - - + + + + <_ProjectFileVersion>12.0.21005.1 + + + + MinSpace + Default + false + Size + false + false + false + NDEBUG;%(PreprocessorDefinitions) + false + MultiThreaded + + + + + + NDEBUG;%(PreprocessorDefinitions) + + + NDEBUG;%(PreprocessorDefinitions) + + + \ No newline at end of file diff --git a/PropertySheets/Release.vsprops b/PropertySheets/Release.vsprops index 61b6f3b2d..3cd19af07 100644 --- a/PropertySheets/Release.vsprops +++ b/PropertySheets/Release.vsprops @@ -1,4 +1,4 @@ - + - - - - - - - - <_ProjectFileVersion>12.0.21005.1 - - - + + + + + + + + + <_ProjectFileVersion>12.0.21005.1 + + + \ No newline at end of file diff --git a/PropertySheets/Win32.Debug.vsprops b/PropertySheets/Win32.Debug.vsprops index 1d669a6e6..3842f0408 100644 --- a/PropertySheets/Win32.Debug.vsprops +++ b/PropertySheets/Win32.Debug.vsprops @@ -1,4 +1,4 @@ - + - - - - - - - - <_ProjectFileVersion>12.0.21005.1 - - - + + + + + + + + + <_ProjectFileVersion>12.0.21005.1 + + + \ No newline at end of file diff --git a/PropertySheets/Win32.Release.vsprops b/PropertySheets/Win32.Release.vsprops index 36310c7ed..df71c8921 100644 --- a/PropertySheets/Win32.Release.vsprops +++ b/PropertySheets/Win32.Release.vsprops @@ -1,4 +1,4 @@ - + - - - $(SolutionDir)bin\$(Configuration)\ - $(SolutionDir)build\$(Configuration)\$(ProjectName)\ - *.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean) - false - false - false - true - - - $(SolutionDir)bin\$(Configuration)\lib\ - - - - WIN32;_WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions) - - - MachineX86 - - - - $(SolutionDir) - $(ROOT)Source\ - - - - $(ROOT) - - - $(SRC) - - - - - - $(IntDir)BuildLog.htm - - - true - $(OutDir)$(ProjectName).bsc - - - .\;..\;..\3rd Party;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - false - false - false - false - true - true - Async - Default - false - Default - false - true - NotSet - Precise - false - false - - true - true - false - false - Use - StdAfx.h - $(IntDir)$(TargetName).pch - false - - $(IntDir) - $(IntDir) - $(IntDir)vc90.pdb - false - $(IntDir) - - $(IntDir) - Level4 - false - true - ProgramDatabase - Cdecl - Default - false - false - false - false - false - Prompt - - - $(OutDir)$(ProjectName).lib - true - true - false - - - true - false - - - false - false - /IGNORE:4199 /OPT:ICF=3 %(AdditionalOptions) - NotSet - true - $(IntDir)$(TargetFileName).intermediate.manifest - false - - advapi32.dll;userenv.dll;shell32.dll;shlwapi.dll;ws2_32.dll;version.dll;wtsapi32.dll;%(DelayLoadDLLs) - false - 1 - true - - $(TargetDir)pdb/$(TargetName).pdb - true - $(TargetDir)map/$(TargetName).map - false - 0 - 0 - 0 - 0 - - - false - false - true - true - - false - false - false - false - - false - false - $(TargetDir)lib/$(TargetName).lib - false - DefaultThreadingAttribute - Default - PromptImmediately - false - - - .;$(SRC);$(SRC)\3rd Party;%(AdditionalIncludeDirectories) - false - false - 3 - false - true - Unsigned - true - true - $(IntDir)%(Filename).tlb - %(Filename)_h.h - - %(Filename)_i.c - %(Filename)_p.c - All - false - false - false - false - false - true - NotSet - - - 0x0000 - false - false - $(IntDir)%(Filename).res - - - $(IntDir)$(TargetFileName).embed.manifest - true - false - false - false - - - $(IntDir)$(TargetFileName).embed.manifest.res - - - true - true - $(TargetDir)$(TargetName).xml - - - + + + + $(SolutionDir)bin\$(Configuration)\ + $(SolutionDir)build\$(Configuration)\$(ProjectName)\ + *.obj;*.ilk;*.tlb;*.tli;*.tlh;*.tmp;*.rsp;*.pgc;*.pgd;*.meta;$(TargetPath);$(ExtensionsToDeleteOnClean) + false + false + false + true + + + $(SolutionDir)bin\$(Configuration)\lib\ + + + + WIN32;_WIN32;_WINDOWS;WIN32_LEAN_AND_MEAN;%(PreprocessorDefinitions) + + + MachineX86 + + + + $(SolutionDir) + $(ROOT)Source\ + + + + $(ROOT) + + + $(SRC) + + + + + + $(IntDir)BuildLog.htm + + + true + $(OutDir)$(ProjectName).bsc + + + .\;..\;..\3rd Party;%(AdditionalIncludeDirectories) + _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + false + false + false + false + true + true + Async + Default + false + Default + false + true + NoExtensions + Precise + false + false + + true + true + false + false + Use + StdAfx.h + $(IntDir)$(TargetName).pch + false + + $(IntDir) + $(IntDir) + $(IntDir)vc90.pdb + false + $(IntDir) + + $(IntDir) + Level4 + false + true + ProgramDatabase + Cdecl + Default + false + false + false + false + false + Prompt + + + $(OutDir)$(ProjectName).lib + true + true + false + + + true + false + + + false + false + /IGNORE:4199 /OPT:ICF=3 %(AdditionalOptions) + NotSet + true + $(IntDir)$(TargetFileName).intermediate.manifest + false + + advapi32.dll;userenv.dll;shell32.dll;shlwapi.dll;ws2_32.dll;version.dll;wtsapi32.dll;%(DelayLoadDLLs) + false + 1 + true + + $(TargetDir)pdb/$(TargetName).pdb + true + $(TargetDir)map/$(TargetName).map + false + 0 + 0 + 0 + 0 + + + false + false + true + true + + false + false + false + false + + false + false + $(TargetDir)lib/$(TargetName).lib + false + DefaultThreadingAttribute + Default + PromptImmediately + false + Windows + + + + .;$(SRC);$(SRC)\3rd Party;%(AdditionalIncludeDirectories) + false + false + 3 + false + true + Unsigned + true + true + $(IntDir)%(Filename).tlb + %(Filename)_h.h + + %(Filename)_i.c + %(Filename)_p.c + All + false + false + false + false + false + true + NotSet + + + 0x0000 + false + false + $(IntDir)%(Filename).res + + + $(IntDir)$(TargetFileName).embed.manifest + true + false + false + false + + + $(IntDir)$(TargetFileName).embed.manifest.res + + + true + true + $(TargetDir)$(TargetName).xml + + + \ No newline at end of file diff --git a/PropertySheets/Win32.vsprops b/PropertySheets/Win32.vsprops index 8548eafc5..b586673a8 100644 --- a/PropertySheets/Win32.vsprops +++ b/PropertySheets/Win32.vsprops @@ -1,4 +1,4 @@ - + + 0) { + if (NoOfSpaces > 0) + { stdstr_f SpaceBuffer(_T("%*c"),NoOfSpaces,' '); do { SizeToRead = end - Pos; if (SizeToRead > fIS_MvSize) { SizeToRead = fIS_MvSize; } - if (SizeToRead > 0) { + if (SizeToRead > 0) + { m_File.Seek(SizeToRead * -1,CFileBase::current); WritePos = m_File.GetPosition(); memset(Data,0,sizeof(Data)); @@ -47,9 +49,12 @@ void CIniFileBase::fInsertSpaces ( int Pos, int NoOfSpaces ) m_File.Seek(WritePos,CFileBase::begin); } } while (SizeToRead > 0); - } if (NoOfSpaces < 0) { + } + if (NoOfSpaces < 0) + { int ReadPos = Pos + (NoOfSpaces * -1); int WritePos = Pos; + do { SizeToRead = end - ReadPos; if (SizeToRead > fIS_MvSize) { SizeToRead = fIS_MvSize; } @@ -60,6 +65,7 @@ void CIniFileBase::fInsertSpaces ( int Pos, int NoOfSpaces ) ReadPos += SizeToRead; WritePos += SizeToRead; } while (SizeToRead > 0); + m_File.Seek(WritePos,CFileBase::begin); stdstr_f SpaceBuffer(_T("%*c"),(NoOfSpaces * -1),' '); m_File.Write(SpaceBuffer.c_str(),(ULONG)SpaceBuffer.length()); @@ -81,10 +87,12 @@ int CIniFileBase::GetStringFromFile ( char * & String, char * &Data, int & MaxDa DataSize = m_File.Read(&Data[DataSize],MaxDataSize); } - for (;;) { + for (;;) + { int count; - for (count = ReadPos; count < DataSize; count ++) { + for (count = ReadPos; count < DataSize; count ++) + { if (Data[count] == '\n') { int len = (count - ReadPos) + 1; @@ -103,7 +111,9 @@ int CIniFileBase::GetStringFromFile ( char * & String, char * &Data, int & MaxDa } DataSize -= ReadPos; ReadPos = 0; - } else { + } + else + { //Increase buffer size int NewMaxDataSize = MaxDataSize + BufferIncrease; char * NewBuffer = new char[NewMaxDataSize]; @@ -159,13 +169,17 @@ void CIniFileBase::SaveCurrentSection ( void ) if (m_File.GetLength() < (int)strlen(m_LineFeed)) { sprintf(SectionName.get(),"[%s]%s",m_CurrentSection.c_str(),m_LineFeed); - } else { + } + else + { sprintf(SectionName.get(),"%s[%s]%s",m_LineFeed,m_CurrentSection.c_str(),m_LineFeed); } m_File.Write(SectionName.get(),(int)strlen(SectionName.get())); m_CurrentSectionFilePos = m_File.GetPosition(); m_SectionsPos.insert(FILELOC::value_type(m_CurrentSection,m_CurrentSectionFilePos)); - } else { + } + else + { //increase/decrease space needed int NeededBufferLen = 0; { @@ -197,8 +211,7 @@ void CIniFileBase::SaveCurrentSection ( void ) do { result = GetStringFromFile(Input,Data,MaxDataSize,DataSize,ReadPos); if (result <= 1) { continue; } - if (strlen(CleanLine(Input)) <= 1 || - Input[0] != '[') + if (strlen(CleanLine(Input)) <= 1 || Input[0] != '[') { EndPos = ((m_File.GetPosition() - DataSize) + ReadPos); @@ -270,7 +283,9 @@ bool CIniFileBase::MoveToSectionNameData ( LPCSTR lpSectionName, bool ChangeCurr } m_File.Seek(iter->second,CFileBase::begin); bFoundSection = true; - } else { + } + else + { m_File.Seek(m_lastSectionSearch, CFileBase::begin); //long Fpos; @@ -287,7 +302,7 @@ bool CIniFileBase::MoveToSectionNameData ( LPCSTR lpSectionName, bool ChangeCurr //We Only care about sections char * CurrentSection = Input; - if(m_lastSectionSearch == 0 && !memcmp(CurrentSection, pUTF8, 3)) + if (m_lastSectionSearch == 0 && !memcmp(CurrentSection, pUTF8, 3)) { CurrentSection += 3; } @@ -301,14 +316,18 @@ bool CIniFileBase::MoveToSectionNameData ( LPCSTR lpSectionName, bool ChangeCurr m_lastSectionSearch = (m_File.GetPosition() - DataSize) + ReadPos; m_SectionsPos.insert(FILELOC::value_type(CurrentSection,m_lastSectionSearch)); - if (_stricmp(lpSectionName,CurrentSection) != 0) { + if (_stricmp(lpSectionName,CurrentSection) != 0) + { continue; } + if (ChangeCurrentSection) { m_CurrentSection = lpSectionName; m_CurrentSectionFilePos = m_lastSectionSearch; - } else { + } + else + { m_File.Seek(m_lastSectionSearch,CFileBase::begin); } bFoundSection = true; @@ -329,7 +348,7 @@ bool CIniFileBase::MoveToSectionNameData ( LPCSTR lpSectionName, bool ChangeCurr char * Value = &Pos[1]; char * Pos1 = Pos-1; - while(((*Pos1 == ' ') || (*Pos1 == '\t')) && (Pos1 > Input)) + while (((*Pos1 == ' ') || (*Pos1 == '\t')) && (Pos1 > Input)) { Pos1--; } @@ -348,38 +367,39 @@ const char * CIniFileBase::CleanLine ( char * const Line ) char * Pos = Line; //Remove any comment from the line - while (Pos != NULL) + while (Pos != NULL) { Pos = strchr(Pos,'/'); - if (Pos != NULL) + if (Pos != NULL) { - if (Pos[1] == '/') + if (Pos[1] == '/') { - if(Pos > Line) + if (Pos > Line) { char * Pos_1 = Pos-1; - if(Pos_1[0] != ':') + if (Pos_1[0] != ':') { - Pos[0] = 0; + Pos[0] = 0; } else - Pos += 1; + Pos += 1; } else { - Pos[0] = 0; + Pos[0] = 0; } } else { - Pos += 1; + Pos += 1; } } } //strip any spaces or line feeds from the end of the line - for (int count = (int)strlen(&Line[0]) - 1; count >= 0; count --) { + for (int count = (int)strlen(&Line[0]) - 1; count >= 0; count --) + { if (Line[count] != ' ' && Line[count] != '\r') { break; } Line[count] = 0; } @@ -421,13 +441,12 @@ void CIniFileBase::OpenIniFile(bool bCreate) bool CIniFileBase::IsEmpty() { - if(m_File.GetLength()==0) + if (m_File.GetLength() == 0) return true; - return false; } -bool CIniFileBase::IsFileOpen ( void ) +bool CIniFileBase::IsFileOpen ( void ) { return m_File.IsOpen(); } @@ -535,7 +554,9 @@ bool CIniFileBase::GetString ( LPCWSTR lpSectionName, LPCWSTR lpKeyName, LPCWSTR if (lpSectionName == NULL || wcslen(lpSectionName) == 0) { strSection = "default"; - } else { + } + else + { stdstr::fromTString(lpSectionName,strSection); } @@ -570,7 +591,9 @@ ULONG CIniFileBase::GetString ( LPCTSTR lpSectionName, LPCTSTR lpKeyName, LPCT if (lpSectionName == NULL || _tcslen(lpSectionName) == 0) { strSection = "default"; - } else { + } + else + { strSection = lpSectionName; } @@ -605,7 +628,9 @@ bool CIniFileBase::GetNumber ( LPCWSTR lpSectionName, LPCWSTR lpKeyName, ULONG n { stdstr::fromTString(lpSectionName,strSection); return GetNumber(strSection.c_str(),lpKeyName.c_str(),nDefault,Value); - } else { + } + else + { return GetNumber(NULL,lpKeyName.c_str(),nDefault,Value); } } @@ -660,7 +685,9 @@ void CIniFileBase::SaveString ( LPCTSTR lpSectionName, LPCTSTR lpKeyName, LPCTS if (lpSectionName == NULL || _tcslen(lpSectionName) == 0) { strSection = "default"; - } else { + } + else + { strSection = lpSectionName; } @@ -681,12 +708,16 @@ void CIniFileBase::SaveString ( LPCTSTR lpSectionName, LPCTSTR lpKeyName, LPCTS iter->second = lpString; m_CurrentSectionDirty = true; } - } else { + } + else + { m_CurrentSectionData.erase(iter); m_CurrentSectionDirty = true; } - } else { - if (lpString) + } + else + { + if (lpString) { m_CurrentSectionData.insert(KeyValueList::value_type(lpKeyName,lpString)); m_CurrentSectionDirty = true; @@ -707,6 +738,7 @@ void CIniFileBase::SaveNumber ( LPCTSTR lpSectionName, LPCTSTR lpKeyName, ULONG void CIniFileBase::FlushChanges (void) { + CGuard Guard(m_CS); SaveCurrentSection(); } @@ -744,20 +776,22 @@ void CIniFileBase::GetKeyList ( LPCTSTR lpSectionName, strlist &List ) } } -void CIniFileBase::GetKeyValueData ( LPCTSTR lpSectionName, KeyValueData & List ) +void CIniFileBase::GetKeyValueData ( LPCTSTR lpSectionName, KeyValueData & List ) { CGuard Guard(m_CS); if (!m_File.IsOpen()) { - return; + return; } - std::string strSection; + std::string strSection; if (lpSectionName == NULL || _tcslen(lpSectionName) == 0) { strSection = "default"; - } else { + } + else + { strSection = lpSectionName; } @@ -779,13 +813,15 @@ void CIniFileBase::GetKeyValueData ( LPCTSTR lpSectionName, KeyValueData & List if (Data) { delete [] Data; Data = NULL; } } -void CIniFileBase::ClearSectionPosList( long FilePos ) +void CIniFileBase::ClearSectionPosList( long FilePos ) { if (FilePos <= 0) { m_SectionsPos.clear(); m_lastSectionSearch = 0; - } else { + } + else + { FILELOC::iterator iter = m_SectionsPos.begin(); while (iter != m_SectionsPos.end()) { @@ -802,7 +838,7 @@ void CIniFileBase::ClearSectionPosList( long FilePos ) } -void CIniFileBase::GetVectorOfSections( SectionList & sections) +void CIniFileBase::GetVectorOfSections( SectionList & sections) { sections.clear(); diff --git a/Source/Common/Log Class.cpp b/Source/Common/Log Class.cpp index 6e6aff76b..b2c5f806f 100644 --- a/Source/Common/Log Class.cpp +++ b/Source/Common/Log Class.cpp @@ -11,7 +11,8 @@ CLog::CLog (void ) : { } -CLog::~CLog (void) { +CLog::~CLog (void) +{ } bool CLog::Open( LPCTSTR FileName, LOG_OPEN_MODE mode /* = Log_New */) @@ -43,8 +44,7 @@ bool CLog::Open( LPCTSTR FileName, LOG_OPEN_MODE mode /* = Log_New */) m_hLogFile.Seek(0,mode == Log_Append ? CFile::end : CFile::begin); #ifdef _UNICODE - - if(m_hLogFile.GetLength()==0) + if (m_hLogFile.GetLength() == 0) { WORD wUNICODE = 0xFEFF; @@ -93,7 +93,7 @@ void CLog::LogArgs(LPCTSTR Message, va_list & args ) Log(L"Invalid message format"); } - if(buffer) + if (buffer) delete [] buffer; #else char* buffer = NULL; @@ -110,7 +110,7 @@ void CLog::LogArgs(LPCTSTR Message, va_list & args ) Log("Invalid message format"); } - if(buffer) + if (buffer) delete [] buffer; #endif } @@ -185,7 +185,7 @@ void CLog::Log( LPCTSTR Message ) if (!m_hLogFile.Write(Data,dwRead)) { - //BreakPoint(__FILE__,__LINE__); + //BreakPoint(__FILEW__,__LINE__); break; } diff --git a/Source/Common/MemTest.cpp b/Source/Common/MemTest.cpp index 7eec4504e..8b70840bf 100644 --- a/Source/Common/MemTest.cpp +++ b/Source/Common/MemTest.cpp @@ -24,13 +24,15 @@ #define MB_SERVICE_NOTIFICATION 0x00200000L #endif -CMemList *MemList ( void ) { +CMemList *MemList ( void ) +{ static CMemList m_MemList; return &m_MemList; } -CMemList::CMemList() { +CMemList::CMemList() +{ MemList.clear(); hSemaphone = CreateSemaphore(NULL, 1,1, NULL); State = Initialized; @@ -51,11 +53,13 @@ CMemList::CMemList() { } } -CMemList::~CMemList() { +CMemList::~CMemList() +{ size_t ItemsLeft = MemList.size(); - if (ItemsLeft > 0) { - TCHAR path_buffer[_MAX_PATH], drive[_MAX_DRIVE] ,dir[_MAX_DIR]; - TCHAR fname[_MAX_FNAME],ext[_MAX_EXT], LogFileName[_MAX_PATH]; + if (ItemsLeft > 0) + { + TCHAR path_buffer[_MAX_PATH], drive[_MAX_DRIVE], dir[_MAX_DIR]; + TCHAR fname[_MAX_FNAME], ext[_MAX_EXT], LogFileName[_MAX_PATH]; memset(path_buffer, 0, sizeof(path_buffer)); memset(drive, 0, sizeof(drive)); @@ -68,21 +72,28 @@ CMemList::~CMemList() { _tsplitpath( path_buffer, drive, dir, fname, ext ); _tmakepath( LogFileName, drive, dir, fname, _T("leak.csv") ); - - + HANDLE hLogFile = INVALID_HANDLE_VALUE; do { - hLogFile = CreateFile(LogFileName,GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, - CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); - + hLogFile = CreateFile( + LogFileName, + GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, + NULL + ); if (hLogFile == INVALID_HANDLE_VALUE) { - if (GetLastError() == ERROR_SHARING_VIOLATION) { + if (GetLastError() == ERROR_SHARING_VIOLATION) + { TCHAR Msg[3000]; _stprintf(Msg,TEXT("%s\nCan not be opened for writing please close app using this file\n\nTry Again ?"),LogFileName); int Result = MessageBox(NULL,Msg,_T("Memory Leak"),MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND | MB_SERVICE_NOTIFICATION); - if (Result == IDNO) { + if (Result == IDNO) + { break; } } @@ -112,7 +123,8 @@ CMemList::~CMemList() { TCHAR Msg[3000]; _stprintf(Msg,TEXT("%s%s\n\nMemory Leaks detected\n\nOpen the Log File ?"),fname,ext); int Result = MessageBox(NULL,Msg,_T("Memory Leak"),MB_YESNO|MB_ICONQUESTION|MB_SETFOREGROUND| MB_SERVICE_NOTIFICATION); - if (Result == IDYES) { + if (Result == IDYES) + { ShellExecute(NULL,_T("open"),LogFileName,NULL,NULL,SW_SHOW); } } @@ -120,7 +132,7 @@ CMemList::~CMemList() { hSemaphone = NULL; State = NotInitialized; } - + void * CMemList::AddItem ( size_t size, char * filename, int line) { void *res = malloc(size); @@ -135,10 +147,12 @@ void * CMemList::AddItem ( size_t size, char * filename, int line) void CMemList::RecordAddItem ( void * ptr, size_t size, const char * filename, int line) { __try { - if (State == Initialized && hSemaphone != NULL) { + if (State == Initialized && hSemaphone != NULL) + { DWORD CurrentThread = GetCurrentThreadId(); DWORD Result = WaitForSingleObject(hSemaphone,CurrentThread != ThreadID ? 30000: 0); - if (Result != WAIT_TIMEOUT) { + if (Result != WAIT_TIMEOUT) + { ThreadID = CurrentThread; DEBUG_LOCATION info; @@ -166,17 +180,20 @@ void CMemList::Insert(void *res, DEBUG_LOCATION &info) void * CMemList::ReAllocItem ( void * ptr, size_t size, const char * filename, int line) { - void *res = realloc(ptr, size); - if (res == NULL) + void *res = realloc(ptr, size); + if (res == NULL) { return res; } - if (ptr != res) { + if (ptr != res) + { __try { - if (State == Initialized && hSemaphone != NULL) { + if (State == Initialized && hSemaphone != NULL) + { DWORD CurrentThread = GetCurrentThreadId(); DWORD Result = WaitForSingleObject(hSemaphone,CurrentThread != ThreadID ? 30000 : 0); - if (Result != WAIT_TIMEOUT) { + if (Result != WAIT_TIMEOUT) + { ThreadID = CurrentThread; //Add new pointer DEBUG_LOCATION info; @@ -206,22 +223,26 @@ void CMemList::Remove(void *ptr) { //remove old pointer MEMLIST_ITER item = MemList.find(ptr); - if (item != MemList.end()) { + if (item != MemList.end()) + { MemList.erase(ptr); } } -void CMemList::removeItem (void * ptr, bool bFree ) +void CMemList::removeItem (void * ptr, bool bFree ) { if (bFree) { free(ptr); } + __try { - if (State == Initialized && hSemaphone != NULL) { + if (State == Initialized && hSemaphone != NULL) + { DWORD CurrentThread = GetCurrentThreadId(); DWORD Result = WaitForSingleObject(hSemaphone,CurrentThread != ThreadID ? 30000 : 0); - if (Result != WAIT_TIMEOUT) { + if (Result != WAIT_TIMEOUT) + { ThreadID = CurrentThread; Remove(ptr); @@ -236,15 +257,18 @@ void CMemList::removeItem (void * ptr, bool bFree ) } } -void MemTest_AddLeak(char* Comment) { +void MemTest_AddLeak(char* Comment) +{ MemList()->AddItem(1,Comment,-1); } -void* MemTest_malloc (size_t size, char* filename, int line) { +void* MemTest_malloc (size_t size, char* filename, int line) +{ return MemList()->AddItem(size,filename,line); } -void* MemTest_realloc (void* ptr, size_t size, char* filename, int line) { +void* MemTest_realloc (void* ptr, size_t size, char* filename, int line) +{ return MemList()->ReAllocItem(ptr, size,filename,line); } diff --git a/Source/Common/Trace.cpp b/Source/Common/Trace.cpp index d0eb4d238..50276577b 100644 --- a/Source/Common/Trace.cpp +++ b/Source/Common/Trace.cpp @@ -2,12 +2,14 @@ BOOL TraceClosed = FALSE; -class CTraceLog { +class CTraceLog +{ std::vector m_Modules; CriticalSection m_CS; public: - CTraceLog() { + CTraceLog() + { } ~CTraceLog() { CloseTrace (); } @@ -54,8 +56,8 @@ void CTraceLog::CloseTrace ( void) for (int i = 0; i < (int)m_Modules.size(); i++ ) { - if(m_Modules[i]) - delete m_Modules[i]; + if(m_Modules[i]) + delete m_Modules[i]; } m_Modules.clear(); } @@ -102,7 +104,7 @@ void CTraceLog::WriteTrace ( TraceType Type, LPCTSTR Message) ); // show the debug level - if (Type == TraceNone) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("None : ")); } + if (Type == TraceNone) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("None : ")); } else if ((Type & TraceError) != 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Error : ")); } else if ((Type & TraceSettings) != 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Setting: ")); } else if ((Type & TraceGfxPlugin) != 0) { nPos += _stprintf(pBuffer+nPos,_T("%s"),_T("Gfx : ")); } diff --git a/Source/Common/path.cpp b/Source/Common/path.cpp index 02b21610a..151690d4e 100644 --- a/Source/Common/path.cpp +++ b/Source/Common/path.cpp @@ -924,11 +924,15 @@ BOOL CPath::FindNext() { // Found a directory UpDirectory(); - } else { + } + else + { SetNameExtension(""); } AppendDirectory(FindData.cFileName); - } else { + } + else + { // Found a file if (IsDirectory()) { @@ -1110,4 +1114,4 @@ void CPath::EnsureLeadingBackslash(stdstr& Directory) const stdstr temp =Directory; Directory.Format(_T("%c%s"),DIRECTORY_DELIMITER,temp.c_str()); } -} \ No newline at end of file +} diff --git a/Source/Common/std string.cpp b/Source/Common/std string.cpp index 83fb97a49..6fe620904 100644 --- a/Source/Common/std string.cpp +++ b/Source/Common/std string.cpp @@ -159,7 +159,9 @@ stdstr & stdstr::Trim (const char * chars2remove) if (pos != std::string::npos) { erase(0,pos); - } else { + } + else + { erase(begin(), end()); // make empty } @@ -167,7 +169,9 @@ stdstr & stdstr::Trim (const char * chars2remove) if (pos != std::string::npos) { erase(pos+1); - } else { + } + else + { erase(begin(), end()); // make empty } } diff --git a/Source/Glide64/3dmathSIMD.asm.cpp b/Source/Glide64/3dmathSIMD.asm.cpp index 5a9e136b0..1a876511b 100644 --- a/Source/Glide64/3dmathSIMD.asm.cpp +++ b/Source/Glide64/3dmathSIMD.asm.cpp @@ -42,18 +42,18 @@ segment .text extern "C" void __declspec(naked) DetectSIMD(int func, int * iedx, int * iecx) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp mov eax,[func] cpuid mov eax,[iedx] mov [eax],edx mov eax,[iecx] mov [eax],ecx - leave - ret - } -} + leave + ret + } +} /**************************************************************** ; @@ -65,8 +65,8 @@ extern "C" void __declspec(naked) TransformVectorSSE(float *src, float *dst, flo { __asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp mov ecx,[src] mov eax,[dst] @@ -91,17 +91,17 @@ extern "C" void __declspec(naked) TransformVectorSSE(float *src, float *dst, flo addps xmm0,xmm2 ; mat[0][2]*src[0]+mat[1][2]*src[1]+mat[2][2]*src[2] mat[0][1]*src[0]+mat[1][1]*src[1]+mat[2][1]*src[2] 0 mat[0][0]*src[0]+mat[1][0]*src[1]+mat[2][0]*src[2] movss [eax],xmm0 ; mat[0][0]*src[0]+mat[1][0]*src[1]+mat[2][0]*src[2] movhps [eax+4],xmm0 ; mat[0][2]*src[0]+mat[1][2]*src[1]+mat[2][2]*src[2] mat[0][1]*src[0]+mat[1][1]*src[1]+mat[2][1]*src[2] - leave - ret - } -} + leave + ret + } +} extern "C" void __declspec(naked) MulMatricesSSE(float m1[4][4],float m2[4][4],float r[4][4]) { __asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp mov eax,[r] mov ecx,[m1] @@ -204,17 +204,17 @@ extern "C" void __declspec(naked) MulMatricesSSE(float m1[4][4],float m2[4][4],f addps xmm4,xmm7 movaps [eax+48],xmm4 - leave - ret - } -} + leave + ret + } +} extern "C" void __declspec(naked) NormalizeVectorSSE (float *v) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp mov edx, [v] movaps xmm0, [edx] ; x y z 0 @@ -229,10 +229,10 @@ extern "C" void __declspec(naked) NormalizeVectorSSE (float *v) rsqrtps xmm0, xmm0 ; 1.0/sqrt(x*x+z*z+y*y) mulps xmm2, xmm0 ; x/sqrt(x*x+z*z+y*y) y/sqrt(x*x+z*z+y*y) z/sqrt(x*x+z*z+y*y) 0 movaps [edx], xmm2 - leave - ret - } -} + leave + ret + } +} /***************************************************************** ; @@ -243,8 +243,8 @@ extern "C" void __declspec(naked) NormalizeVectorSSE (float *v) float __declspec(naked) DotProductSSE3(register float *v1, register float *v2) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp mov eax,[v1] mov edx,[v2] @@ -253,10 +253,10 @@ float __declspec(naked) DotProductSSE3(register float *v1, register float *v2) haddps xmm0, xmm0 haddps xmm0, xmm0 ; movss eax, xmm0 - leave - ret - } -} + leave + ret + } +} /**************************************************************** ; @@ -267,8 +267,8 @@ float __declspec(naked) DotProductSSE3(register float *v1, register float *v2) extern "C" void __declspec(naked) TransformVector3DNOW(float *src, float *dst, float mat[4][4]) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp femms mov ecx,[src] @@ -296,16 +296,16 @@ extern "C" void __declspec(naked) TransformVector3DNOW(float *src, float *dst, f movq [eax],mm0 ; mat[0][1]*src[0]+mat[1][1]*src[1]+mat[2][1]*src[2] mat[0][0]*src[0]+mat[1][0]*src[1]+mat[2][0]*src[2] movd [eax+8],mm3 ; mat[0][2]*src[0]+mat[1][2]*src[1]+mat[2][2]*src[2] femms - leave - ret - } -} + leave + ret + } +} extern "C" void __declspec(naked) InverseTransformVector3DNOW(float *src, float *dst, float mat[4][4]) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp femms mov ecx,[src] @@ -333,16 +333,16 @@ extern "C" void __declspec(naked) InverseTransformVector3DNOW(float *src, float movq [eax],mm0 ; mat[1][0]*src[0]+mat[1][1]*src[1]+mat[1][2]*src[2] mat[0][0]*src[0]+mat[0][1]*src[1]+mat[0][2]*src[2] movd [eax+8],mm2 ; mat[2][0]*src[0]+mat[2][1]*src[1]+mat[2][2]*src[2] femms - leave - ret - } -} + leave + ret + } +} extern "C" void __declspec(naked) MulMatrices3DNOW(float m1[4][4],float m2[4][4],float r[4][4]) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp femms mov ecx,[m1] @@ -465,16 +465,16 @@ extern "C" void __declspec(naked) MulMatrices3DNOW(float m1[4][4],float m2[4][4 movq [eax+48],mm7 movq [eax+56],mm3 femms - leave - ret - } -} + leave + ret + } +} extern "C" float __declspec(naked) DotProduct3DNOW(register float *v1, register float *v2) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp femms mov edx,[v1] @@ -489,15 +489,15 @@ extern "C" float __declspec(naked) DotProduct3DNOW(register float *v1, register pfadd mm0,mm1 movd eax,mm0 femms - leave - ret - } -} + leave + ret + } +} extern "C" void __declspec(naked) NormalizeVector3DNOW(float *v) { _asm { - push ebp + push ebp mov ebp,esp femms mov edx,[v] @@ -521,7 +521,7 @@ extern "C" void __declspec(naked) NormalizeVector3DNOW(float *v) movq [edx],mm1 movq [edx+8],mm2 femms - leave - ret - } + leave + ret + } } diff --git a/Source/Glide64/Config.cpp b/Source/Glide64/Config.cpp index 2d240287a..9ad0b4750 100644 --- a/Source/Glide64/Config.cpp +++ b/Source/Glide64/Config.cpp @@ -1116,13 +1116,14 @@ void CALL DllConfig ( HWND hParent ) hostWindow = new wxWindow(); WXHWND hwnd = hParent; hostWindow->SetHWND(hwnd); - hostWindow->SubclassWin(hwnd); +// hostWindow->SubclassWin(hwnd); hostWindow->Disable(); #endif Glide64ConfigDialog* Glide64Config = new Glide64ConfigDialog(hostWindow, wxID_ANY, wxEmptyString); Glide64Config->ShowModal(); delete hostWindow; + hostWindow = NULL; } /*#ifndef _DEBUG @@ -1149,7 +1150,7 @@ void CloseConfig() } #ifdef __WINDOWS__ hostWindow->Enable(); - hostWindow->UnsubclassWin(); +// hostWindow->UnsubclassWin(); hostWindow->SetHWND(NULL); #endif mutexProcessDList->Unlock(); @@ -1306,5 +1307,31 @@ void CALL DllAbout ( HWND hParent ) // hostWindow->UnsubclassWin(); hostWindow->SetHWND(NULL); delete hostWindow; + hostWindow = NULL; #endif } + +void general_setting(short setting_ID, const char * name, unsigned int value) +{ + RegisterSetting( + setting_ID, + Data_DWORD_General, + name, + NULL, + value, + NULL + ); + return; +} +void game_setting(short setting_ID, const char * name, unsigned int value) +{ + RegisterSetting( + setting_ID, + Data_DWORD_Game, + name, + NULL, + value, + NULL + ); + return; +} diff --git a/Source/Glide64/Config.h b/Source/Glide64/Config.h index 9a3fd5c1f..f7d6b6639 100644 --- a/Source/Glide64/Config.h +++ b/Source/Glide64/Config.h @@ -286,4 +286,9 @@ enum { extern short Set_basic_mode, Set_texture_dir; +extern void + general_setting(short setting_ID, const char * name, unsigned int value); +extern void + game_setting(short setting_ID, const char * name, unsigned int value); + #endif // CONFIG_H diff --git a/Source/Glide64/Debugger.cpp b/Source/Glide64/Debugger.cpp index 8775524d4..46a9091e4 100644 --- a/Source/Glide64/Debugger.cpp +++ b/Source/Glide64/Debugger.cpp @@ -41,15 +41,6 @@ #include "Util.h" #include "Debugger.h" -/* - * required to include OpenGL library without errors - * Dependency on OpenGL in this module is limited to just `glGetError`. - */ -#ifdef _WIN32 -#include -#endif -#include - GLIDE64_DEBUGGER _debugger; #define SX(x) ((x)*rdp.scale_1024) @@ -76,7 +67,7 @@ GLIDE64_DEBUGGER _debugger; #define COL_GRID 0xFFFFFF80 int grid = 0; -static const char *tri_type[4] = { "TRIANGLE", "TEXRECT", "FILLRECT", "BACKGROUND" }; +static const char *tri_type[4] = { "TRIANGLE", "TEXRECT", "FILLRECT", "BACKGROUND" }; //Platform-specific stuff #ifndef __WINDOWS__ @@ -221,7 +212,7 @@ void debug_cacheviewer () { SX(x*64.0f), SY(512+64.0f*i), 1, 1, 0, 0, 0, 0, {0, 0, 0, 0} }, { SX(x*64.0f+64.0f*cache[x+y*16].scale_x), SY(512+64.0f*i), 1, 1, 255*cache[x+y*16].scale_x, 0, 0, 0, {0, 0, 0, 0} }, { SX(x*64.0f), SY(512+64.0f*i+64.0f*cache[x+y*16].scale_y), 1, 1, 0, 255*cache[x+y*16].scale_y, 0, 0, {0, 0, 0, 0} }, - { SX(x*64.0f+64.0f*cache[x+y*16].scale_x), SY(512+64.0f*i+64.0f*cache[x+y*16].scale_y), 1, 1, 255*cache[x+y*16].scale_x, 255*cache[x+y*16].scale_y, 0, 0, {0, 0, 0, 0} } + { SX(x*64.0f+64.0f*cache[x+y*16].scale_x), SY(512+64.0f*i+64.0f*cache[x+y*16].scale_y), 1, 1, 255*cache[x+y*16].scale_x, 255*cache[x+y*16].scale_y, 0, 0, {0, 0, 0, 0} } }; for (int i=0; i<4; i++) @@ -373,7 +364,7 @@ void debug_capture () { SX(704.0f), SY(221.0f), 1, 1, 0, 0, 0, 0, {0, 0, 0, 0} }, { SX(704.0f+256.0f*scx), SY(221.0f), 1, 1, 255*scx, 0, 255*scx, 0, {0, 0, 0, 0} }, { SX(704.0f), SY(221.0f+256.0f*scy), 1, 1, 0, 255*scy, 0, 255*scy, {0, 0, 0, 0} }, - { SX(704.0f+256.0f*scx), SY(221.0f+256.0f*scy), 1, 1, 255*scx, 255*scy, 255*scx, 255*scy, {0, 0, 0, 0} } + { SX(704.0f+256.0f*scx), SY(221.0f+256.0f*scy), 1, 1, 255*scx, 255*scy, 255*scx, 255*scy, {0, 0, 0, 0} } }; ConvertCoordsConvert (v, 4); VERTEX *varr[4] = { &v[0], &v[1], &v[2], &v[3] }; @@ -860,7 +851,7 @@ void debug_mouse () { cx, cy, 1, 1, 0, 0, 0, 0, {0, 0, 0, 0} }, { cx+32, cy, 1, 1, 255, 0, 0, 0, {0, 0, 0, 0} }, { cx, cy+32, 1, 1, 0, 255, 0, 0, {0, 0, 0, 0} }, - { cx+32, cy+32, 1, 1, 255, 255, 0, 0, {0, 0, 0, 0} } + { cx+32, cy+32, 1, 1, 255, 255, 0, 0, {0, 0, 0, 0} } }; ConvertCoordsKeep (v, 4); @@ -1005,7 +996,7 @@ void output (float x, float y, int scale, const char *fmt, ...) VERTEX v[4] = { { SX(x), SY(768-y), 1, 1, (float)c, r+16.0f, 0, 0, {0, 0, 0, 0} }, { SX(x+8), SY(768-y), 1, 1, c+8.0f, r+16.0f, 0, 0, {0, 0, 0, 0} }, { SX(x), SY(768-y-16), 1, 1, (float)c, (float)r, 0, 0, {0, 0, 0, 0} }, - { SX(x+8), SY(768-y-16), 1, 1, c+8.0f, (float)r, 0, 0, {0, 0, 0, 0} } + { SX(x+8), SY(768-y-16), 1, 1, c+8.0f, (float)r, 0, 0, {0, 0, 0, 0} } }; if (!scale) { @@ -1027,52 +1018,3 @@ void output (float x, float y, int scale, const char *fmt, ...) x+=8; } } - -static const char * GL_errors[7 + 1] = { - "GL_NO_ERROR", /* "There is no current error." */ - "GL_INVALID_ENUM", /* "Invalid parameter." */ - "GL_INVALID_VALUE", /* "Invalid enum parameter value." */ - "GL_INVALID_OPERATION", /* "Illegal call." */ - "GL_STACK_OVERFLOW", - "GL_STACK_UNDERFLOW", - "GL_OUT_OF_MEMORY", /* "Unable to allocate memory." */ - - "GL_UNKNOWN_ERROR" /* ??? */ -}; - -int grDisplayGLError(const char* message) -{ - GLenum status; - unsigned int error_index; - int failure; - - status = glGetError(); - failure = 1; - - if (status == GL_NO_ERROR) - error_index = failure = 0; - else - error_index = - (status < GL_INVALID_ENUM) /* to avoid underflow when subtracting */ - ? ( 7 ) /* our own, made-up "GL_UNKNOWN_ERROR" error */ - : (status - GL_INVALID_ENUM) + 1; - - if (error_index > 7) - error_index = 7; - -#if !0 -/* - * In most cases, we don't want to spam the screen to repeatedly say that - * there were no OpenGL errors yet, though sometimes one may need verbosity. - */ - if (failure == 0) - return (failure); -#endif - -#ifdef _WIN32 - MessageBoxA(NULL, message, GL_errors[error_index], MB_ICONERROR); -#else - fprintf(stderr, "%s\n%s\n\n", GL_errors[error_index], message); -#endif - return (failure); -} diff --git a/Source/Glide64/Debugger.h b/Source/Glide64/Debugger.h index f304d4eea..cc6b7444c 100644 --- a/Source/Glide64/Debugger.h +++ b/Source/Glide64/Debugger.h @@ -135,5 +135,3 @@ void debug_cacheviewer (); void debug_mouse (); void debug_keys (); void output (float x, float y, int scale, const char *fmt, ...); - -extern int grDisplayGLError( const char * message ); diff --git a/Source/Glide64/DepthBufferRender.cpp b/Source/Glide64/DepthBufferRender.cpp index e3d31548c..dd68a5235 100644 --- a/Source/Glide64/DepthBufferRender.cpp +++ b/Source/Glide64/DepthBufferRender.cpp @@ -87,7 +87,7 @@ static int left_z, left_dzdy; extern "C" int imul16(int x, int y); extern "C" int imul14(int x, int y); -extern "C" int idiv16(int x, int y); +extern int idiv16(int x, int y); __inline int iceil(int x) { diff --git a/Source/Glide64/FixedPoint.asm.cpp b/Source/Glide64/FixedPoint.asm.cpp index 69284ee7d..bd2d41d2b 100644 --- a/Source/Glide64/FixedPoint.asm.cpp +++ b/Source/Glide64/FixedPoint.asm.cpp @@ -35,49 +35,48 @@ ; ;****************************************************************/ +#if defined(_MSC_VER) && !defined(_STDINT) +typedef signed __int64 int64_t; +#else +#include +#endif + // (x * y) >> 16 extern "C" int __declspec(naked) imul16(int x, int y) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp mov eax, [x] mov edx, [y] imul edx shrd eax,edx,16 - leave - ret - } -} + leave + ret + } +} //(x * y) >> 14 extern "C" int __declspec(naked) imul14(int x, int y) { _asm { - push ebp - mov ebp,esp + push ebp + mov ebp,esp mov eax, [x] mov edx, [y] imul edx shrd eax,edx,14 - leave - ret - } -} + leave + ret + } +} -//(x << 16) / y -extern "C" int __declspec(naked) idiv16(int x, int y) +int idiv16(int x, int y) { - _asm { - push ebp - mov ebp,esp - mov eax, [x] - mov ebx, [y] - mov edx,eax - sar edx,16 - shl eax,16 - idiv ebx - leave - ret - } -} \ No newline at end of file + int64_t result; + const int64_t m = (int64_t)(x); + const int64_t n = (int64_t)(y); + + result = (m << 16) / n; + return (int)(result); +} diff --git a/Source/Glide64/Glide64.vcxproj b/Source/Glide64/Glide64.vcxproj index 667393cc2..4c87f0ee4 100644 --- a/Source/Glide64/Glide64.vcxproj +++ b/Source/Glide64/Glide64.vcxproj @@ -44,6 +44,8 @@ $(Root)Source\3rd Party\wx\lib\vc_lib;%(AdditionalLibraryDirectories) + Windows + Windows diff --git a/Source/Glide64/Main.cpp b/Source/Glide64/Main.cpp index ea4f83e02..174330771 100644 --- a/Source/Glide64/Main.cpp +++ b/Source/Glide64/Main.cpp @@ -623,18 +623,18 @@ void WriteSettings (bool saveEmulationSettings) SetSetting(Set_lodmode, settings.lodmode); SetSetting(Set_aspect, settings.aspectmode); - SetSetting(Set_fb_read_always, settings.frame_buffer&fb_ref ? 1 : 0l); - SetSetting(Set_fb_smart, settings.frame_buffer & fb_emulation ? 1 : 0l); - SetSetting(Set_fb_hires, settings.frame_buffer & fb_hwfbe ? 1 : 0l); - SetSetting(Set_fb_get_info, settings.frame_buffer & fb_get_info ? 1 : 0l); - SetSetting(Set_fb_render, settings.frame_buffer & fb_depth_render ? 1 : 0l); - SetSetting(Set_detect_cpu_write, settings.frame_buffer & fb_cpu_write_hack ? 1 : 0l); + SetSetting(Set_fb_read_always, settings.frame_buffer&fb_ref ? 1 : 0); + SetSetting(Set_fb_smart, settings.frame_buffer & fb_emulation ? 1 : 0); + SetSetting(Set_fb_hires, settings.frame_buffer & fb_hwfbe ? 1 : 0); + SetSetting(Set_fb_get_info, settings.frame_buffer & fb_get_info ? 1 : 0); + SetSetting(Set_fb_render, settings.frame_buffer & fb_depth_render ? 1 : 0); + SetSetting(Set_detect_cpu_write, settings.frame_buffer & fb_cpu_write_hack ? 1 : 0); if (settings.frame_buffer & fb_read_back_to_screen) SetSetting(Set_read_back_to_screen, 1); else if (settings.frame_buffer & fb_read_back_to_screen2) SetSetting(Set_read_back_to_screen, 2); else - SetSetting(Set_read_back_to_screen, 0l); + SetSetting(Set_read_back_to_screen, 0); } FlushSettings(); @@ -1578,90 +1578,90 @@ void CALL PluginLoaded (void) Set_texture_dir = FindSystemSettingId("Dir:Texture"); SetModuleName("Glide64"); - RegisterSetting(Set_CardId, Data_DWORD_General,"card_id",NULL,0l,NULL); - RegisterSetting(Set_Resolution, Data_DWORD_General,"resolution",NULL,7,NULL); - RegisterSetting(Set_vsync, Data_DWORD_General,"vsync",NULL,1,NULL); - RegisterSetting(Set_ssformat, Data_DWORD_General,"ssformat",NULL,1,NULL); - RegisterSetting(Set_ShowFps, Data_DWORD_General,"show_fps",NULL,0l,NULL); - RegisterSetting(Set_clock, Data_DWORD_General,"clock",NULL,0l,NULL); - RegisterSetting(Set_clock_24_hr, Data_DWORD_General,"clock_24_hr",NULL,0l,NULL); - RegisterSetting(Set_texenh_options, Data_DWORD_General,"texenh_options",NULL,0l,NULL); - RegisterSetting(Set_hotkeys, Data_DWORD_General,"hotkeys",NULL,1l,NULL); - RegisterSetting(Set_wrpResolution, Data_DWORD_General,"wrpResolution",NULL,0l,NULL); - RegisterSetting(Set_wrpVRAM, Data_DWORD_General,"wrpVRAM",NULL,0l,NULL); - RegisterSetting(Set_wrpFBO, Data_DWORD_General,"wrpFBO",NULL,0l,NULL); - RegisterSetting(Set_wrpAnisotropic, Data_DWORD_General,"wrpAnisotropic",NULL,0l,NULL); - RegisterSetting(Set_autodetect_ucode, Data_DWORD_General,"autodetect_ucode",NULL, 1,NULL); - RegisterSetting(Set_ucode, Data_DWORD_General,"ucode",NULL, 2,NULL); - RegisterSetting(Set_wireframe, Data_DWORD_General,"wireframe",NULL, 0l,NULL); - RegisterSetting(Set_wfmode, Data_DWORD_General,"wfmode",NULL, 1,NULL); - RegisterSetting(Set_logging, Data_DWORD_General,"logging",NULL, 0l,NULL); - RegisterSetting(Set_log_clear, Data_DWORD_General,"log_clear",NULL, 0l,NULL); - RegisterSetting(Set_run_in_window, Data_DWORD_General,"run_in_window",NULL, 0l,NULL); - RegisterSetting(Set_elogging, Data_DWORD_General,"elogging",NULL, 0l,NULL); - RegisterSetting(Set_filter_cache, Data_DWORD_General,"filter_cache",NULL, 0l,NULL); - RegisterSetting(Set_unk_as_red, Data_DWORD_General,"unk_as_red",NULL, 0l,NULL); - RegisterSetting(Set_log_unk, Data_DWORD_General,"log_unk",NULL, 0l,NULL); - RegisterSetting(Set_unk_clear, Data_DWORD_General,"unk_clear",NULL, 0l,NULL); - RegisterSetting(Set_ghq_fltr, Data_DWORD_General,"ghq_fltr",NULL, 0l,NULL); - RegisterSetting(Set_ghq_cmpr, Data_DWORD_General,"ghq_cmpr",NULL, 0l,NULL); - RegisterSetting(Set_ghq_enht, Data_DWORD_General,"ghq_enht",NULL, 0l,NULL); - RegisterSetting(Set_ghq_hirs, Data_DWORD_General,"ghq_hirs",NULL, 0l,NULL); - RegisterSetting(Set_ghq_enht_cmpr, Data_DWORD_General,"ghq_enht_cmpr",NULL, 0l,NULL); - RegisterSetting(Set_ghq_enht_tile, Data_DWORD_General,"ghq_enht_tile",NULL, 0l,NULL); - RegisterSetting(Set_ghq_enht_f16bpp, Data_DWORD_General,"ghq_enht_f16bpp",NULL, 0l,NULL); - RegisterSetting(Set_ghq_enht_gz, Data_DWORD_General,"ghq_enht_gz",NULL, 1L,NULL); - RegisterSetting(Set_ghq_enht_nobg, Data_DWORD_General,"ghq_enht_nobg",NULL, 0l,NULL); - RegisterSetting(Set_ghq_hirs_cmpr, Data_DWORD_General,"ghq_hirs_cmpr",NULL, 0l,NULL); - RegisterSetting(Set_ghq_hirs_tile, Data_DWORD_General,"ghq_hirs_tile",NULL, 0l,NULL); - RegisterSetting(Set_ghq_hirs_f16bpp, Data_DWORD_General,"ghq_hirs_f16bpp",NULL, 0l,NULL); - RegisterSetting(Set_ghq_hirs_gz, Data_DWORD_General,"ghq_hirs_gz",NULL, 1,NULL); - RegisterSetting(Set_ghq_hirs_altcrc, Data_DWORD_General,"ghq_hirs_altcrc",NULL, 1,NULL); - RegisterSetting(Set_ghq_cache_save, Data_DWORD_General,"ghq_cache_save",NULL, 1,NULL); - RegisterSetting(Set_ghq_cache_size, Data_DWORD_General,"ghq_cache_size",NULL, 0l,NULL); - RegisterSetting(Set_ghq_hirs_let_texartists_fly, Data_DWORD_General,"ghq_hirs_let_texartists_fly",NULL, 0l,NULL); - RegisterSetting(Set_ghq_hirs_dump, Data_DWORD_General,"ghq_hirs_dump",NULL, 0l,NULL); + general_setting(Set_CardId, "card_id", 0); + general_setting(Set_Resolution, "resolution", 7); + general_setting(Set_vsync, "vsync", 1); + general_setting(Set_ssformat, "ssformat", 1); + general_setting(Set_ShowFps, "show_fps", 0); + general_setting(Set_clock, "clock", 0); + general_setting(Set_clock_24_hr, "clock_24_hr", 0); + general_setting(Set_texenh_options, "texenh_options", 0); + general_setting(Set_hotkeys, "hotkeys", 1); + general_setting(Set_wrpResolution, "wrpResolution", 0); + general_setting(Set_wrpVRAM, "wrpVRAM", 0); + general_setting(Set_wrpFBO, "wrpFBO", 0); + general_setting(Set_wrpAnisotropic, "wrpAnisotropic", 0); + general_setting(Set_autodetect_ucode, "autodetect_ucode", 1); + general_setting(Set_ucode, "ucode", 2); + general_setting(Set_wireframe, "wireframe", 0); + general_setting(Set_wfmode, "wfmode", 1); + general_setting(Set_logging, "logging", 0); + general_setting(Set_log_clear, "log_clear", 0); + general_setting(Set_run_in_window, "run_in_window", 0); + general_setting(Set_elogging, "elogging", 0); + general_setting(Set_filter_cache, "filter_cache", 0); + general_setting(Set_unk_as_red, "unk_as_red", 0); + general_setting(Set_log_unk, "log_unk", 0); + general_setting(Set_unk_clear, "unk_clear", 0); + general_setting(Set_ghq_fltr, "ghq_fltr", 0); + general_setting(Set_ghq_cmpr, "ghq_cmpr", 0); + general_setting(Set_ghq_enht, "ghq_enht", 0); + general_setting(Set_ghq_hirs, "ghq_hirs", 0); + general_setting(Set_ghq_enht_cmpr, "ghq_enht_cmpr", 0); + general_setting(Set_ghq_enht_tile, "ghq_enht_tile", 0); + general_setting(Set_ghq_enht_f16bpp, "ghq_enht_f16bpp", 0); + general_setting(Set_ghq_enht_gz, "ghq_enht_gz", 1); + general_setting(Set_ghq_enht_nobg, "ghq_enht_nobg", 0); + general_setting(Set_ghq_hirs_cmpr, "ghq_hirs_cmpr", 0); + general_setting(Set_ghq_hirs_tile, "ghq_hirs_tile", 0); + general_setting(Set_ghq_hirs_f16bpp, "ghq_hirs_f16bpp", 0); + general_setting(Set_ghq_hirs_gz, "ghq_hirs_gz", 1); + general_setting(Set_ghq_hirs_altcrc, "ghq_hirs_altcrc", 1); + general_setting(Set_ghq_cache_save, "ghq_cache_save", 1); + general_setting(Set_ghq_cache_size, "ghq_cache_size", 0); + general_setting(Set_ghq_hirs_let_texartists_fly, "ghq_hirs_let_texartists_fly", 0); + general_setting(Set_ghq_hirs_dump, "ghq_hirs_dump", 0); - RegisterSetting(Set_alt_tex_size,Data_DWORD_Game,"alt_tex_size",NULL,0l,NULL); - RegisterSetting(Set_use_sts1_only,Data_DWORD_Game,"use_sts1_only",NULL,0l,NULL); - RegisterSetting(Set_force_calc_sphere,Data_DWORD_Game,"force_calc_sphere",NULL,0l,NULL); - RegisterSetting(Set_correct_viewport,Data_DWORD_Game,"correct_viewport",NULL,0l,NULL); - RegisterSetting(Set_increase_texrect_edge,Data_DWORD_Game,"increase_texrect_edge",NULL,0,NULL); - RegisterSetting(Set_decrease_fillrect_edge,Data_DWORD_Game,"decrease_fillrect_edge",NULL,0l,NULL); - RegisterSetting(Set_texture_correction,Data_DWORD_Game,"texture_correction",NULL,1,NULL); - RegisterSetting(Set_pal230,Data_DWORD_Game,"pal230",NULL,0l,NULL); - RegisterSetting(Set_stipple_mode,Data_DWORD_Game,"stipple_mode",NULL,2,NULL); + game_setting(Set_alt_tex_size, "alt_tex_size", 0); + game_setting(Set_use_sts1_only, "use_sts1_only", 0); + game_setting(Set_force_calc_sphere, "force_calc_sphere", 0); + game_setting(Set_correct_viewport, "correct_viewport", 0); + game_setting(Set_increase_texrect_edge, "increase_texrect_edge", 0); + game_setting(Set_decrease_fillrect_edge, "decrease_fillrect_edge", 0); + game_setting(Set_texture_correction, "texture_correction", 1); + game_setting(Set_pal230, "pal230", 0); + game_setting(Set_stipple_mode, "stipple_mode", 2); - RegisterSetting(Set_stipple_pattern,Data_DWORD_Game,"stipple_pattern",NULL,1041204192,NULL); - RegisterSetting(Set_force_microcheck,Data_DWORD_Game,"force_microcheck",NULL,0l,NULL); - RegisterSetting(Set_force_quad3d,Data_DWORD_Game,"force_quad3d",NULL,0l,NULL); - RegisterSetting(Set_clip_zmin,Data_DWORD_Game,"clip_zmin",NULL,0l,NULL); - RegisterSetting(Set_clip_zmax,Data_DWORD_Game,"clip_zmax",NULL,1,NULL); - RegisterSetting(Set_fast_crc,Data_DWORD_Game,"fast_crc",NULL,1,NULL); - RegisterSetting(Set_adjust_aspect,Data_DWORD_Game,"adjust_aspect",NULL,1,NULL); - RegisterSetting(Set_zmode_compare_less,Data_DWORD_Game,"zmode_compare_less",NULL,0l,NULL); - RegisterSetting(Set_old_style_adither,Data_DWORD_Game,"old_style_adither",NULL,0l,NULL); - RegisterSetting(Set_n64_z_scale,Data_DWORD_Game,"n64_z_scale",NULL,0l,NULL); - RegisterSetting(Set_optimize_texrect,Data_DWORD_Game,"optimize_texrect",NULL,1,NULL); - RegisterSetting(Set_ignore_aux_copy,Data_DWORD_Game,"ignore_aux_copy",NULL,(unsigned int)-1,NULL); - RegisterSetting(Set_hires_buf_clear,Data_DWORD_Game,"hires_buf_clear",NULL,1,NULL); - RegisterSetting(Set_fb_read_alpha,Data_DWORD_Game,"fb_read_alpha",NULL,0l,NULL); - RegisterSetting(Set_useless_is_useless,Data_DWORD_Game,"useless_is_useless",NULL,(unsigned int)-1,NULL); - RegisterSetting(Set_fb_crc_mode,Data_DWORD_Game,"fb_crc_mode",NULL,1,NULL); - RegisterSetting(Set_filtering,Data_DWORD_Game,"filtering",NULL,0l,NULL); - RegisterSetting(Set_fog,Data_DWORD_Game,"fog",NULL,1,NULL); - RegisterSetting(Set_buff_clear,Data_DWORD_Game,"buff_clear",NULL,1,NULL); - RegisterSetting(Set_swapmode,Data_DWORD_Game,"swapmode",NULL,1,NULL); - RegisterSetting(Set_aspect,Data_DWORD_Game,"aspect",NULL,0l,NULL); - RegisterSetting(Set_lodmode,Data_DWORD_Game,"lodmode",NULL,0l,NULL); + game_setting(Set_stipple_pattern, "stipple_pattern", 0x3E0F83E0); + game_setting(Set_force_microcheck, "force_microcheck", 0); + game_setting(Set_force_quad3d, "force_quad3d", 0); + game_setting(Set_clip_zmin, "clip_zmin", 0); + game_setting(Set_clip_zmax, "clip_zmax", 1); + game_setting(Set_fast_crc, "fast_crc", 1); + game_setting(Set_adjust_aspect, "adjust_aspect", 1); + game_setting(Set_zmode_compare_less, "zmode_compare_less", 0); + game_setting(Set_old_style_adither, "old_style_adither", 0); + game_setting(Set_n64_z_scale, "n64_z_scale", 0); + game_setting(Set_optimize_texrect, "optimize_texrect", 1); + game_setting(Set_ignore_aux_copy, "ignore_aux_copy", (unsigned int)-1); + game_setting(Set_hires_buf_clear, "hires_buf_clear", 1); + game_setting(Set_fb_read_alpha, "fb_read_alpha", 0); + game_setting(Set_useless_is_useless, "useless_is_useless", (unsigned int)-1); + game_setting(Set_fb_crc_mode, "fb_crc_mode", 1); + game_setting(Set_filtering, "filtering", 0); + game_setting(Set_fog, "fog", 1); + game_setting(Set_buff_clear, "buff_clear", 1); + game_setting(Set_swapmode, "swapmode", 1); + game_setting(Set_aspect, "aspect", 0); + game_setting(Set_lodmode, "lodmode", 0); - RegisterSetting(Set_fb_smart,Data_DWORD_Game,"fb_smart",NULL,0l,NULL); - RegisterSetting(Set_fb_hires,Data_DWORD_Game,"fb_hires",NULL,1,NULL); - RegisterSetting(Set_fb_read_always,Data_DWORD_Game,"fb_read_always",NULL,0l,NULL); - RegisterSetting(Set_read_back_to_screen,Data_DWORD_Game,"read_back_to_screen",NULL,0l,NULL); - RegisterSetting(Set_detect_cpu_write,Data_DWORD_Game,"detect_cpu_write",NULL,0l,NULL); - RegisterSetting(Set_fb_get_info,Data_DWORD_Game,"fb_get_info",NULL,0l,NULL); - RegisterSetting(Set_fb_render,Data_DWORD_Game,"fb_render",NULL,0,NULL); + game_setting(Set_fb_smart, "fb_smart", 1); + game_setting(Set_fb_hires, "fb_hires", 1); + game_setting(Set_fb_read_always, "fb_read_always", 0); + game_setting(Set_read_back_to_screen, "read_back_to_screen", 0); + game_setting(Set_detect_cpu_write, "detect_cpu_write", 0); + game_setting(Set_fb_get_info, "fb_get_info", 0); + game_setting(Set_fb_render, "fb_render", 1); } /****************************************************************** @@ -1890,10 +1890,6 @@ void CALL UpdateScreen (void) if (fullscreen && (*gfx.VI_ORIGIN_REG > width)) update_screen_count++; -#if defined(_DEBUG) || 0 - grDisplayGLError("UpdateScreen"); -#endif - #ifdef FPS // vertical interrupt has occurred, increment counter vi_count ++; diff --git a/Source/Glide64/Util.cpp b/Source/Glide64/Util.cpp index 76d186db2..4a9923697 100644 --- a/Source/Glide64/Util.cpp +++ b/Source/Glide64/Util.cpp @@ -909,7 +909,7 @@ __inline double interp3p(float a, float b, float c, double r1, double r2) { return (a)+(((b)+((c)-(b))*(r2))-(a))*(r1); } -/* +/* #define interp3p(a, b, c, r1, r2) \ (a+(((b)+((c)-(b))*(r2))-(a))*(r1)) */ @@ -1925,32 +1925,32 @@ void update () if (((rdp.flags & ZBUF_ENABLED) || rdp.zsrc == 1) && rdp.cycle_mode < 2) { - if (rdp.flags & ZBUF_COMPARE) + if (rdp.flags & ZBUF_COMPARE) { switch ((rdp.rm & 0xC00)>>10) { - case 0: - grDepthBiasLevel(0); - grDepthBufferFunction (settings.zmode_compare_less ? GR_CMP_LESS : GR_CMP_LEQUAL); - break; - case 1: - grDepthBiasLevel(-4); - grDepthBufferFunction (settings.zmode_compare_less ? GR_CMP_LESS : GR_CMP_LEQUAL); - break; - case 2: + case 0: + grDepthBiasLevel(0); + grDepthBufferFunction (settings.zmode_compare_less ? GR_CMP_LESS : GR_CMP_LEQUAL); + break; + case 1: + grDepthBiasLevel(-4); + grDepthBufferFunction (settings.zmode_compare_less ? GR_CMP_LESS : GR_CMP_LEQUAL); + break; + case 2: grDepthBiasLevel(settings.ucode == 7 ? -4 : 0); grDepthBufferFunction (GR_CMP_LESS); break; case 3: - // will be set dynamically per polygon - //grDepthBiasLevel(-deltaZ); + // will be set dynamically per polygon + //grDepthBiasLevel(-deltaZ); grDepthBufferFunction (GR_CMP_LEQUAL); break; - } + } } - else + else { - grDepthBiasLevel(0); - grDepthBufferFunction (GR_CMP_ALWAYS); + grDepthBiasLevel(0); + grDepthBufferFunction (GR_CMP_ALWAYS); } if (rdp.flags & ZBUF_UPDATE) @@ -1960,7 +1960,7 @@ void update () } else { - grDepthBiasLevel(0); + grDepthBiasLevel(0); grDepthBufferFunction (GR_CMP_ALWAYS); grDepthMask (FXFALSE); } diff --git a/Source/Glide64/Version.h b/Source/Glide64/Version.h index 957c6a06a..5cba9de90 100644 --- a/Source/Glide64/Version.h +++ b/Source/Glide64/Version.h @@ -23,7 +23,7 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 0 #define VERSION_REVISION 0 -#define VERSION_BUILD 3 +#define VERSION_BUILD 5 #define VER_FILE_DESCRIPTION_STR "Glide 64 for Project64" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD diff --git a/Source/Glide64/rdp.h b/Source/Glide64/rdp.h index d48a3358f..fff889af6 100644 --- a/Source/Glide64/rdp.h +++ b/Source/Glide64/rdp.h @@ -598,9 +598,9 @@ struct RDP_Base{ wxUint32 fill_color; wxUint32 prim_color; wxUint32 blend_color; - wxUint32 env_color; + wxUint32 env_color; wxUint32 SCALE; - wxUint32 CENTER; + wxUint32 CENTER; wxUint32 prim_lodmin, prim_lodfrac; wxUint16 prim_depth; wxUint16 prim_dz; diff --git a/Source/Glide64/ucode00.h b/Source/Glide64/ucode00.h index 52f71b401..e7f8a099b 100644 --- a/Source/Glide64/ucode00.h +++ b/Source/Glide64/ucode00.h @@ -879,7 +879,7 @@ static void uc0_setothermode_h() if (mask & 0x00300000) // cycle type { - rdp.cycle_mode = (wxUint8)((rdp.othermode_h & 0x00300000) >> 20); + rdp.cycle_mode = (wxUint8)((rdp.othermode_h & 0x00300000) >> 20); rdp.update |= UPDATE_ZBUF_ENABLED; FRDP ("cycletype: %d\n", rdp.cycle_mode); } @@ -942,7 +942,7 @@ static void uc0_setothermode_l() { rdp.zsrc = (rdp.othermode_l & 0x00000004) >> 2; FRDP ("z-src sel: %s\n", str_zs[rdp.zsrc]); - FRDP ("z-src sel: %08lx\n", rdp.zsrc); + FRDP ("z-src sel: %08lx\n", rdp.zsrc); rdp.update |= UPDATE_ZBUF_ENABLED; } diff --git a/Source/Glide64/ucode06.h b/Source/Glide64/ucode06.h index ad0dbe56a..29c5b7c3c 100644 --- a/Source/Glide64/ucode06.h +++ b/Source/Glide64/ucode06.h @@ -39,82 +39,82 @@ // STANDARD DRAWIMAGE - draws a 2d image based on the following structure -static float set_sprite_combine_mode () -{ - if (rdp.cycle_mode == 2) - { - rdp.tex = 1; - rdp.allow_combine = 0; - // Now actually combine ! +static float set_sprite_combine_mode () +{ + if (rdp.cycle_mode == 2) + { + rdp.tex = 1; + rdp.allow_combine = 0; + // Now actually combine ! GrCombineFunction_t color_source = GR_COMBINE_FUNCTION_LOCAL; if (rdp.tbuff_tex && rdp.tbuff_tex->info.format == GR_TEXFMT_ALPHA_INTENSITY_88) color_source = GR_COMBINE_FUNCTION_LOCAL_ALPHA; - cmb.tmu1_func = cmb.tmu0_func = color_source; - cmb.tmu1_fac = cmb.tmu0_fac = GR_COMBINE_FACTOR_NONE; - cmb.tmu1_a_func = cmb.tmu0_a_func = GR_COMBINE_FUNCTION_LOCAL; - cmb.tmu1_a_fac = cmb.tmu0_a_fac = GR_COMBINE_FACTOR_NONE; - cmb.tmu1_invert = cmb.tmu0_invert = FXFALSE; - cmb.tmu1_a_invert = cmb.tmu0_a_invert = FXFALSE; - } - - rdp.update |= UPDATE_COMBINE; - update (); - - rdp.allow_combine = 1; - - // set z buffer mode - float Z = 0.0f; - if ((rdp.othermode_l & 0x00000030) && rdp.cycle_mode < 2) - { - wxUint16 prim_dz = 0; - if (rdp.zsrc == 1) - { - Z = rdp.prim_depth; - prim_dz = rdp.prim_dz; - } - FRDP ("prim_depth = %d, prim_dz = %d\n", rdp.prim_depth, rdp.prim_dz); - Z = ScaleZ(Z); - - if (rdp.othermode_l & 0x00000400) - grDepthBiasLevel(rdp.prim_dz); - } - else - { - LRDP("z compare not used, using 0\n"); - } - - grCullMode (GR_CULL_DISABLE); - grFogMode (GR_FOG_DISABLE); - rdp.update |= UPDATE_CULL_MODE | UPDATE_FOG_ENABLED; - - if (rdp.cycle_mode == 2) - { - grColorCombine (GR_COMBINE_FUNCTION_SCALE_OTHER, - GR_COMBINE_FACTOR_ONE, - GR_COMBINE_LOCAL_NONE, - GR_COMBINE_OTHER_TEXTURE, - FXFALSE); - grAlphaCombine (GR_COMBINE_FUNCTION_SCALE_OTHER, - GR_COMBINE_FACTOR_ONE, - GR_COMBINE_LOCAL_NONE, - GR_COMBINE_OTHER_TEXTURE, - FXFALSE); - grAlphaBlendFunction (GR_BLEND_ONE, - GR_BLEND_ZERO, - GR_BLEND_ZERO, - GR_BLEND_ZERO); - if (rdp.othermode_l & 1) - { - grAlphaTestFunction (GR_CMP_GEQUAL); - grAlphaTestReferenceValue (0x80); - } - else - grAlphaTestFunction (GR_CMP_ALWAYS); - rdp.update |= UPDATE_ALPHA_COMPARE | UPDATE_COMBINE; - } - return Z; -} - + cmb.tmu1_func = cmb.tmu0_func = color_source; + cmb.tmu1_fac = cmb.tmu0_fac = GR_COMBINE_FACTOR_NONE; + cmb.tmu1_a_func = cmb.tmu0_a_func = GR_COMBINE_FUNCTION_LOCAL; + cmb.tmu1_a_fac = cmb.tmu0_a_fac = GR_COMBINE_FACTOR_NONE; + cmb.tmu1_invert = cmb.tmu0_invert = FXFALSE; + cmb.tmu1_a_invert = cmb.tmu0_a_invert = FXFALSE; + } + + rdp.update |= UPDATE_COMBINE; + update (); + + rdp.allow_combine = 1; + + // set z buffer mode + float Z = 0.0f; + if ((rdp.othermode_l & 0x00000030) && rdp.cycle_mode < 2) + { + wxUint16 prim_dz = 0; + if (rdp.zsrc == 1) + { + Z = rdp.prim_depth; + prim_dz = rdp.prim_dz; + } + FRDP ("prim_depth = %d, prim_dz = %d\n", rdp.prim_depth, rdp.prim_dz); + Z = ScaleZ(Z); + + if (rdp.othermode_l & 0x00000400) + grDepthBiasLevel(rdp.prim_dz); + } + else + { + LRDP("z compare not used, using 0\n"); + } + + grCullMode (GR_CULL_DISABLE); + grFogMode (GR_FOG_DISABLE); + rdp.update |= UPDATE_CULL_MODE | UPDATE_FOG_ENABLED; + + if (rdp.cycle_mode == 2) + { + grColorCombine (GR_COMBINE_FUNCTION_SCALE_OTHER, + GR_COMBINE_FACTOR_ONE, + GR_COMBINE_LOCAL_NONE, + GR_COMBINE_OTHER_TEXTURE, + FXFALSE); + grAlphaCombine (GR_COMBINE_FUNCTION_SCALE_OTHER, + GR_COMBINE_FACTOR_ONE, + GR_COMBINE_LOCAL_NONE, + GR_COMBINE_OTHER_TEXTURE, + FXFALSE); + grAlphaBlendFunction (GR_BLEND_ONE, + GR_BLEND_ZERO, + GR_BLEND_ZERO, + GR_BLEND_ZERO); + if (rdp.othermode_l & 1) + { + grAlphaTestFunction (GR_CMP_GEQUAL); + grAlphaTestReferenceValue (0x80); + } + else + grAlphaTestFunction (GR_CMP_ALWAYS); + rdp.update |= UPDATE_ALPHA_COMPARE | UPDATE_COMBINE; + } + return Z; +} + void uc6_sprite2d (); typedef struct DRAWIMAGE_t { @@ -135,23 +135,23 @@ typedef struct DRAWIMAGE_t { float scaleX; float scaleY; } DRAWIMAGE; - -typedef struct DRAWOBJECT_t { - float objX; - float objY; - float scaleW; - float scaleH; - short imageW; - short imageH; - - wxUint16 imageStride; - wxUint16 imageAdrs; - wxUint8 imageFmt; - wxUint8 imageSiz; - wxUint8 imagePal; - wxUint8 imageFlags; -} DRAWOBJECT; - + +typedef struct DRAWOBJECT_t { + float objX; + float objY; + float scaleW; + float scaleH; + short imageW; + short imageH; + + wxUint16 imageStride; + wxUint16 imageAdrs; + wxUint8 imageFmt; + wxUint8 imageSiz; + wxUint8 imagePal; + wxUint8 imageFlags; +} DRAWOBJECT; + void DrawHiresDepthImage (const DRAWIMAGE & d) { wxUint16 * src = (wxUint16*)(gfx.RDRAM+d.imagePtr); @@ -293,56 +293,56 @@ void DrawImage (DRAWIMAGE & d) if (d.imageW == 0 || d.imageH == 0 || d.frameH == 0) return; int x_size, y_size, x_shift, y_shift, line; - // choose optimum size for the format/size - switch (d.imageSiz) - { + // choose optimum size for the format/size + switch (d.imageSiz) + { case 0: if (rdp.tlut_mode < 2) { y_size = 64; y_shift = 6; - } - else - { + } + else + { y_size = 32; y_shift = 5; - } + } x_size = 128; x_shift = 7; - line = 8; - break; + line = 8; + break; case 1: if (rdp.tlut_mode < 2) { y_size = 64; y_shift = 6; - } - else - { + } + else + { y_size = 32; y_shift = 5; - } + } x_size = 64; x_shift = 6; - line = 8; - break; + line = 8; + break; case 2: x_size = 64; y_size = 32; x_shift = 6; y_shift = 5; - line = 16; - break; + line = 16; + break; case 3: x_size = 32; y_size = 16; x_shift = 4; y_shift = 3; - line = 16; - break; - default: - FRDP("DrawImage. unknown image size: %d\n", d.imageSiz); - return; + line = 16; + break; + default: + FRDP("DrawImage. unknown image size: %d\n", d.imageSiz); + return; } if (rdp.ci_width == 512 && !no_dlist) //RE2 @@ -443,8 +443,8 @@ void DrawImage (DRAWIMAGE & d) rdp.tiles[0].lr_t = y_size-1; const float Z = set_sprite_combine_mode (); - if (rdp.cycle_mode == 2) - rdp.allow_combine = 0; + if (rdp.cycle_mode == 2) + rdp.allow_combine = 0; if (fullscreen) { @@ -453,7 +453,7 @@ void DrawImage (DRAWIMAGE & d) else if (d.scaleX == 1.0f && d.scaleY == 1.0f) grClipWindow (rdp.scissor.ul_x, rdp.scissor.ul_y, rdp.scissor.lr_x, rdp.scissor.lr_y); else - grClipWindow (rdp.scissor.ul_x, rdp.scissor.ul_y, min(rdp.scissor.lr_x, (wxUint32)((d.frameX+d.imageW/d.scaleX+0.5f)*rdp.scale_x)), min(rdp.scissor.lr_y, (wxUint32)((d.frameY+d.imageH/d.scaleY+0.5f)*rdp.scale_y))); + grClipWindow (rdp.scissor.ul_x, rdp.scissor.ul_y, min(rdp.scissor.lr_x, (wxUint32)((d.frameX+d.imageW/d.scaleX+0.5f)*rdp.scale_x)), min(rdp.scissor.lr_y, (wxUint32)((d.frameY+d.imageH/d.scaleY+0.5f)*rdp.scale_y))); rdp.update |= UPDATE_SCISSOR; } @@ -715,89 +715,89 @@ struct MAT2D { float BaseScaleX; float BaseScaleY; } mat_2d = {1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f}; - -static void uc6_read_background_data (DRAWIMAGE & d, bool bReadScale) -{ - wxUint32 addr = segoffset(rdp.cmd1) >> 1; - - d.imageX = (((wxUint16 *)gfx.RDRAM)[(addr+0)^1] >> 5); // 0 - d.imageW = (((wxUint16 *)gfx.RDRAM)[(addr+1)^1] >> 2); // 1 - d.frameX = ((short*)gfx.RDRAM)[(addr+2)^1] / 4.0f; // 2 - d.frameW = ((wxUint16 *)gfx.RDRAM)[(addr+3)^1] >> 2; // 3 - - d.imageY = (((wxUint16 *)gfx.RDRAM)[(addr+4)^1] >> 5); // 4 - d.imageH = (((wxUint16 *)gfx.RDRAM)[(addr+5)^1] >> 2); // 5 - d.frameY = ((short*)gfx.RDRAM)[(addr+6)^1] / 4.0f; // 6 - d.frameH = ((wxUint16 *)gfx.RDRAM)[(addr+7)^1] >> 2; // 7 - - d.imagePtr = segoffset(((wxUint32*)gfx.RDRAM)[(addr+8)>>1]); // 8,9 - d.imageFmt = ((wxUint8 *)gfx.RDRAM)[(((addr+11)<<1)+0)^3]; // 11 - d.imageSiz = ((wxUint8 *)gfx.RDRAM)[(((addr+11)<<1)+1)^3]; // | - d.imagePal = ((wxUint16 *)gfx.RDRAM)[(addr+12)^1]; // 12 - wxUint16 imageFlip = ((wxUint16 *)gfx.RDRAM)[(addr+13)^1]; // 13; - d.flipX = (wxUint8)imageFlip&0x01; - - if (bReadScale) - { - d.scaleX = ((short *)gfx.RDRAM)[(addr+14)^1] / 1024.0f; // 14 - d.scaleY = ((short *)gfx.RDRAM)[(addr+15)^1] / 1024.0f; // 15 - } - else - d.scaleX = d.scaleY = 1.0f; - - d.flipY = 0; - int imageYorig= ((int *)gfx.RDRAM)[(addr+16)>>1] >> 5; - rdp.last_bg = d.imagePtr; - - FRDP ("imagePtr: %08lx\n", d.imagePtr); - FRDP ("frameX: %f, frameW: %d, frameY: %f, frameH: %d\n", d.frameX, d.frameW, d.frameY, d.frameH); - FRDP ("imageX: %d, imageW: %d, imageY: %d, imageH: %d\n", d.imageX, d.imageW, d.imageY, d.imageH); - FRDP ("imageYorig: %d, scaleX: %f, scaleY: %f\n", imageYorig, d.scaleX, d.scaleY); - FRDP ("imageFmt: %d, imageSiz: %d, imagePal: %d, imageFlip: %d\n", d.imageFmt, d.imageSiz, d.imagePal, d.flipX); -} - -static void uc6_bg (bool bg_1cyc) -{ - static const char *strFuncNames[] = {"uc6:bg_1cyc", "uc6:bg_copy"}; - const char *strFuncName = bg_1cyc ? strFuncNames[0] : strFuncNames[1]; - if (rdp.skip_drawing) - { - FRDP("%s skipped\n", strFuncName); - return; - } - FRDP ("%s #%d, #%d\n", strFuncName, rdp.tri_n, rdp.tri_n+1); - - DRAWIMAGE d; - uc6_read_background_data(d, bg_1cyc); - - if (fb_hwfbe_enabled && FindTextureBuffer(d.imagePtr, d.imageW)) - { - DrawHiresImage(d); - return; - } - - if (settings.ucode == ucode_F3DEX2 || (settings.hacks&hack_PPL)) - { - if ( (d.imagePtr != rdp.cimg) && (d.imagePtr != rdp.ocimg) && d.imagePtr) //can't draw from framebuffer - DrawImage (d); - else - { - FRDP("%s skipped\n", strFuncName); - } - } - else - { - DrawImage (d); - } -} + +static void uc6_read_background_data (DRAWIMAGE & d, bool bReadScale) +{ + wxUint32 addr = segoffset(rdp.cmd1) >> 1; + + d.imageX = (((wxUint16 *)gfx.RDRAM)[(addr+0)^1] >> 5); // 0 + d.imageW = (((wxUint16 *)gfx.RDRAM)[(addr+1)^1] >> 2); // 1 + d.frameX = ((short*)gfx.RDRAM)[(addr+2)^1] / 4.0f; // 2 + d.frameW = ((wxUint16 *)gfx.RDRAM)[(addr+3)^1] >> 2; // 3 + + d.imageY = (((wxUint16 *)gfx.RDRAM)[(addr+4)^1] >> 5); // 4 + d.imageH = (((wxUint16 *)gfx.RDRAM)[(addr+5)^1] >> 2); // 5 + d.frameY = ((short*)gfx.RDRAM)[(addr+6)^1] / 4.0f; // 6 + d.frameH = ((wxUint16 *)gfx.RDRAM)[(addr+7)^1] >> 2; // 7 + + d.imagePtr = segoffset(((wxUint32*)gfx.RDRAM)[(addr+8)>>1]); // 8,9 + d.imageFmt = ((wxUint8 *)gfx.RDRAM)[(((addr+11)<<1)+0)^3]; // 11 + d.imageSiz = ((wxUint8 *)gfx.RDRAM)[(((addr+11)<<1)+1)^3]; // | + d.imagePal = ((wxUint16 *)gfx.RDRAM)[(addr+12)^1]; // 12 + wxUint16 imageFlip = ((wxUint16 *)gfx.RDRAM)[(addr+13)^1]; // 13; + d.flipX = (wxUint8)imageFlip&0x01; + + if (bReadScale) + { + d.scaleX = ((short *)gfx.RDRAM)[(addr+14)^1] / 1024.0f; // 14 + d.scaleY = ((short *)gfx.RDRAM)[(addr+15)^1] / 1024.0f; // 15 + } + else + d.scaleX = d.scaleY = 1.0f; + + d.flipY = 0; + int imageYorig= ((int *)gfx.RDRAM)[(addr+16)>>1] >> 5; + rdp.last_bg = d.imagePtr; + + FRDP ("imagePtr: %08lx\n", d.imagePtr); + FRDP ("frameX: %f, frameW: %d, frameY: %f, frameH: %d\n", d.frameX, d.frameW, d.frameY, d.frameH); + FRDP ("imageX: %d, imageW: %d, imageY: %d, imageH: %d\n", d.imageX, d.imageW, d.imageY, d.imageH); + FRDP ("imageYorig: %d, scaleX: %f, scaleY: %f\n", imageYorig, d.scaleX, d.scaleY); + FRDP ("imageFmt: %d, imageSiz: %d, imagePal: %d, imageFlip: %d\n", d.imageFmt, d.imageSiz, d.imagePal, d.flipX); +} + +static void uc6_bg (bool bg_1cyc) +{ + static const char *strFuncNames[] = {"uc6:bg_1cyc", "uc6:bg_copy"}; + const char *strFuncName = bg_1cyc ? strFuncNames[0] : strFuncNames[1]; + if (rdp.skip_drawing) + { + FRDP("%s skipped\n", strFuncName); + return; + } + FRDP ("%s #%d, #%d\n", strFuncName, rdp.tri_n, rdp.tri_n+1); + + DRAWIMAGE d; + uc6_read_background_data(d, bg_1cyc); + + if (fb_hwfbe_enabled && FindTextureBuffer(d.imagePtr, d.imageW)) + { + DrawHiresImage(d); + return; + } + + if (settings.ucode == ucode_F3DEX2 || (settings.hacks&hack_PPL)) + { + if ( (d.imagePtr != rdp.cimg) && (d.imagePtr != rdp.ocimg) && d.imagePtr) //can't draw from framebuffer + DrawImage (d); + else + { + FRDP("%s skipped\n", strFuncName); + } + } + else + { + DrawImage (d); + } +} static void uc6_bg_1cyc () -{ +{ uc6_bg(true); } - + static void uc6_bg_copy () -{ +{ uc6_bg(false); } @@ -997,67 +997,67 @@ static void uc6_draw_polygons (VERTEX v[4]) } } -static void uc6_read_object_data (DRAWOBJECT & d) -{ - wxUint32 addr = segoffset(rdp.cmd1) >> 1; - - d.objX = ((short*)gfx.RDRAM)[(addr+0)^1] / 4.0f; // 0 - d.scaleW = ((wxUint16 *)gfx.RDRAM)[(addr+1)^1] / 1024.0f; // 1 - d.imageW = ((short*)gfx.RDRAM)[(addr+2)^1] >> 5; // 2, 3 is padding - d.objY = ((short*)gfx.RDRAM)[(addr+4)^1] / 4.0f; // 4 - d.scaleH = ((wxUint16 *)gfx.RDRAM)[(addr+5)^1] / 1024.0f; // 5 - d.imageH = ((short*)gfx.RDRAM)[(addr+6)^1] >> 5; // 6, 7 is padding - - d.imageStride = ((wxUint16 *)gfx.RDRAM)[(addr+8)^1]; // 8 - d.imageAdrs = ((wxUint16 *)gfx.RDRAM)[(addr+9)^1]; // 9 - d.imageFmt = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+0)^3]; // 10 - d.imageSiz = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+1)^3]; // | - d.imagePal = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+2)^3]; // 11 - d.imageFlags = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+3)^3]; // | - - if (d.imageW < 0) - d.imageW = (short)rdp.scissor_o.lr_x - (short)d.objX - d.imageW; - if (d.imageH < 0) - d.imageH = (short)rdp.scissor_o.lr_y - (short)d.objY - d.imageH; - - FRDP ("#%d, #%d\n" - "objX: %f, scaleW: %f, imageW: %d\n" - "objY: %f, scaleH: %f, imageH: %d\n" - "size: %d, format: %d\n", rdp.tri_n, rdp.tri_n+1, - d.objX, d.scaleW, d.imageW, d.objY, d.scaleH, d.imageH, d.imageSiz, d.imageFmt); -} - -static void uc6_init_tile(const DRAWOBJECT & d) -{ - // SetTile () - TILE *tile = &rdp.tiles[0]; - tile->format = d.imageFmt; // RGBA - tile->size = d.imageSiz; // 16-bit - tile->line = d.imageStride; - tile->t_mem = d.imageAdrs; - tile->palette = d.imagePal; - tile->clamp_t = 1; - tile->mirror_t = 0; - tile->mask_t = 0; - tile->shift_t = 0; - tile->clamp_s = 1; - tile->mirror_s = 0; - tile->mask_s = 0; - tile->shift_s = 0; - - // SetTileSize () - rdp.tiles[0].ul_s = 0; - rdp.tiles[0].ul_t = 0; - rdp.tiles[0].lr_s = (d.imageW>0)?d.imageW-1:0; - rdp.tiles[0].lr_t = (d.imageH>0)?d.imageH-1:0; -} - +static void uc6_read_object_data (DRAWOBJECT & d) +{ + wxUint32 addr = segoffset(rdp.cmd1) >> 1; + + d.objX = ((short*)gfx.RDRAM)[(addr+0)^1] / 4.0f; // 0 + d.scaleW = ((wxUint16 *)gfx.RDRAM)[(addr+1)^1] / 1024.0f; // 1 + d.imageW = ((short*)gfx.RDRAM)[(addr+2)^1] >> 5; // 2, 3 is padding + d.objY = ((short*)gfx.RDRAM)[(addr+4)^1] / 4.0f; // 4 + d.scaleH = ((wxUint16 *)gfx.RDRAM)[(addr+5)^1] / 1024.0f; // 5 + d.imageH = ((short*)gfx.RDRAM)[(addr+6)^1] >> 5; // 6, 7 is padding + + d.imageStride = ((wxUint16 *)gfx.RDRAM)[(addr+8)^1]; // 8 + d.imageAdrs = ((wxUint16 *)gfx.RDRAM)[(addr+9)^1]; // 9 + d.imageFmt = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+0)^3]; // 10 + d.imageSiz = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+1)^3]; // | + d.imagePal = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+2)^3]; // 11 + d.imageFlags = ((wxUint8 *)gfx.RDRAM)[(((addr+10)<<1)+3)^3]; // | + + if (d.imageW < 0) + d.imageW = (short)rdp.scissor_o.lr_x - (short)d.objX - d.imageW; + if (d.imageH < 0) + d.imageH = (short)rdp.scissor_o.lr_y - (short)d.objY - d.imageH; + + FRDP ("#%d, #%d\n" + "objX: %f, scaleW: %f, imageW: %d\n" + "objY: %f, scaleH: %f, imageH: %d\n" + "size: %d, format: %d\n", rdp.tri_n, rdp.tri_n+1, + d.objX, d.scaleW, d.imageW, d.objY, d.scaleH, d.imageH, d.imageSiz, d.imageFmt); +} + +static void uc6_init_tile(const DRAWOBJECT & d) +{ + // SetTile () + TILE *tile = &rdp.tiles[0]; + tile->format = d.imageFmt; // RGBA + tile->size = d.imageSiz; // 16-bit + tile->line = d.imageStride; + tile->t_mem = d.imageAdrs; + tile->palette = d.imagePal; + tile->clamp_t = 1; + tile->mirror_t = 0; + tile->mask_t = 0; + tile->shift_t = 0; + tile->clamp_s = 1; + tile->mirror_s = 0; + tile->mask_s = 0; + tile->shift_s = 0; + + // SetTileSize () + rdp.tiles[0].ul_s = 0; + rdp.tiles[0].ul_t = 0; + rdp.tiles[0].lr_s = (d.imageW>0)?d.imageW-1:0; + rdp.tiles[0].lr_t = (d.imageH>0)?d.imageH-1:0; +} + static void uc6_obj_rectangle () { - LRDP ("uc6:obj_rectangle "); - DRAWOBJECT d; - uc6_read_object_data(d); - + LRDP ("uc6:obj_rectangle "); + DRAWOBJECT d; + uc6_read_object_data(d); + if (d.imageAdrs > 4096) { FRDP("tmem: %08lx is out of bounds! return\n", d.imageAdrs); @@ -1068,8 +1068,8 @@ static void uc6_obj_rectangle () LRDP("Texture was not loaded! return\n"); return; } - - uc6_init_tile(d); + + uc6_init_tile(d); float Z = set_sprite_combine_mode (); @@ -1123,10 +1123,10 @@ static void uc6_obj_rectangle () static void uc6_obj_sprite () { - LRDP ("uc6:obj_sprite "); - DRAWOBJECT d; - uc6_read_object_data(d); - uc6_init_tile(d); + LRDP ("uc6:obj_sprite "); + DRAWOBJECT d; + uc6_read_object_data(d); + uc6_init_tile(d); float Z = set_sprite_combine_mode (); @@ -1286,9 +1286,9 @@ static void uc6_DrawYUVImageToFrameBuffer(wxUint16 ul_x, wxUint16 ul_y, wxUint16 static void uc6_obj_rectangle_r () { - LRDP ("uc6:obj_rectangle_r "); - DRAWOBJECT d; - uc6_read_object_data(d); + LRDP ("uc6:obj_rectangle_r "); + DRAWOBJECT d; + uc6_read_object_data(d); if (d.imageFmt == 1 && (settings.hacks&hack_Ogre64)) //Ogre Battle needs to copy YUV texture to frame buffer { @@ -1300,8 +1300,8 @@ static void uc6_obj_rectangle_r () rdp.tri_n += 2; return; } - - uc6_init_tile(d); + + uc6_init_tile(d); float Z = set_sprite_combine_mode (); @@ -1554,9 +1554,9 @@ void uc6_sprite2d () return; } - const wxUint32 texsize = (d.imageW * d.imageH) << d.imageSiz >> 1; - const wxUint32 maxTexSize = rdp.tlut_mode < 2 ? 4096 : 2048; - + const wxUint32 texsize = (d.imageW * d.imageH) << d.imageSiz >> 1; + const wxUint32 maxTexSize = rdp.tlut_mode < 2 ? 4096 : 2048; + if (texsize > maxTexSize) { if (d.scaleX != 1) diff --git a/Source/GlideHQ/TxUtil.cpp b/Source/GlideHQ/TxUtil.cpp index 4e72cd8da..850adb6fb 100644 --- a/Source/GlideHQ/TxUtil.cpp +++ b/Source/GlideHQ/TxUtil.cpp @@ -1,1006 +1,1006 @@ -/* - * Texture Filtering - * Version: 1.0 - * - * Copyright (C) 2007 Hiroshi Morii All Rights Reserved. - * Email koolsmoky(at)users.sourceforge.net - * Web http://www.3dfxzone.it/koolsmoky - * - * this is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * this is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include "TxUtil.h" -#include "TxDbg.h" -#include +/* + * Texture Filtering + * Version: 1.0 + * + * Copyright (C) 2007 Hiroshi Morii All Rights Reserved. + * Email koolsmoky(at)users.sourceforge.net + * Web http://www.3dfxzone.it/koolsmoky + * + * this is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * this is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include "TxUtil.h" +#include "TxDbg.h" +#include #include - -/* - * External libraries - ******************************************************************************/ -TxLoadLib::TxLoadLib() -{ -#ifdef DXTN_DLL - if (!_dxtnlib) - _dxtnlib = LoadLibrary("dxtn"); - - if (_dxtnlib) { - if (!_tx_compress_dxtn) - _tx_compress_dxtn = (dxtCompressTexFuncExt)DLSYM(_dxtnlib, "tx_compress_dxtn"); - - if (!_tx_compress_fxt1) - _tx_compress_fxt1 = (fxtCompressTexFuncExt)DLSYM(_dxtnlib, "fxt1_encode"); - } -#else - _tx_compress_dxtn = tx_compress_dxtn; - _tx_compress_fxt1 = fxt1_encode; - -#endif -} - -TxLoadLib::~TxLoadLib() -{ -#ifdef DXTN_DLL - /* free dynamic library */ - if (_dxtnlib) - FreeLibrary(_dxtnlib); -#endif - -} - -fxtCompressTexFuncExt -TxLoadLib::getfxtCompressTexFuncExt() -{ - return _tx_compress_fxt1; -} - -dxtCompressTexFuncExt -TxLoadLib::getdxtCompressTexFuncExt() -{ - return _tx_compress_dxtn; -} - - -/* - * Utilities - ******************************************************************************/ -uint32 -TxUtil::checksumTx(uint8 *src, int width, int height, uint16 format) -{ - int dataSize = sizeofTx(width, height, format); - - /* for now we use adler32 if something else is better - * we can simply swtich later - */ - /* return (dataSize ? Adler32(src, dataSize, 1) : 0); */ - - /* zlib crc32 */ - return (dataSize ? crc32(crc32(0L, Z_NULL, 0), src, dataSize) : 0); -} - -int -TxUtil::sizeofTx(int width, int height, uint16 format) -{ - int dataSize = 0; - - /* a lookup table for the shifts would be better */ - switch (format) { - case GR_TEXFMT_ARGB_CMP_FXT1: - dataSize = (((width + 0x7) & ~0x7) * ((height + 0x3) & ~0x3)) >> 1; - break; - case GR_TEXFMT_ARGB_CMP_DXT1: - dataSize = (((width + 0x3) & ~0x3) * ((height + 0x3) & ~0x3)) >> 1; - break; - case GR_TEXFMT_ARGB_CMP_DXT3: - case GR_TEXFMT_ARGB_CMP_DXT5: - dataSize = ((width + 0x3) & ~0x3) * ((height + 0x3) & ~0x3); - break; - case GR_TEXFMT_ALPHA_INTENSITY_44: - case GR_TEXFMT_ALPHA_8: - case GR_TEXFMT_INTENSITY_8: - case GR_TEXFMT_P_8: - dataSize = width * height; - break; - case GR_TEXFMT_ARGB_4444: - case GR_TEXFMT_ARGB_1555: - case GR_TEXFMT_RGB_565: - case GR_TEXFMT_ALPHA_INTENSITY_88: - dataSize = (width * height) << 1; - break; - case GR_TEXFMT_ARGB_8888: - dataSize = (width * height) << 2; - break; - default: - /* unsupported format */ - DBG_INFO(80, L"Error: cannot get size. unsupported gfmt:%x\n", format); - ; - } - - return dataSize; -} - -#if 0 /* unused */ -uint32 -TxUtil::chkAlpha(uint32* src, int width, int height) -{ - /* NOTE: _src must be ARGB8888 - * return values - * 0x00000000: 8bit alpha - * 0x00000001: 1bit alpha - * 0xff000001: no alpha - */ - - int _size = width * height; - uint32 alpha = 0; - - __asm { - mov esi, dword ptr [src]; - mov ecx, dword ptr [_size]; - mov ebx, 0xff000000; - - tc1_loop: - mov eax, dword ptr [esi]; - add esi, 4; - - and eax, 0xff000000; - jz alpha1bit; - cmp eax, 0xff000000; - je alpha1bit; - jmp done; - - alpha1bit: - and ebx, eax; - dec ecx; - jnz tc1_loop; - - or ebx, 0x00000001; - mov dword ptr [alpha], ebx; - - done: - } - - return alpha; -} -#endif - -uint32 -TxUtil::checksum(uint8 *src, int width, int height, int size, int rowStride) -{ - /* Rice CRC32 for now. We can switch this to Jabo MD5 or - * any other custom checksum. - * TODO: use *_HIRESTEXTURE option. */ - - if (!src) return 0; - - return RiceCRC32(src, width, height, size, rowStride); -} - -uint64 -TxUtil::checksum64(uint8 *src, int width, int height, int size, int rowStride, uint8 *palette) -{ - /* Rice CRC32 for now. We can switch this to Jabo MD5 or - * any other custom checksum. - * TODO: use *_HIRESTEXTURE option. */ - /* Returned value is 64bits: hi=palette crc32 low=texture crc32 */ - - if (!src) return 0; - - uint64 crc64Ret = 0; - - if (palette) { - uint32 crc32 = 0, cimax = 0; - switch (size & 0xff) { - case 1: - if (RiceCRC32_CI8(src, width, height, size, rowStride, &crc32, &cimax)) { - crc64Ret = (uint64)RiceCRC32(palette, cimax + 1, 1, 2, 512); - crc64Ret <<= 32; - crc64Ret |= (uint64)crc32; - } - break; - case 0: - if (RiceCRC32_CI4(src, width, height, size, rowStride, &crc32, &cimax)) { - crc64Ret = (uint64)RiceCRC32(palette, cimax + 1, 1, 2, 32); - crc64Ret <<= 32; - crc64Ret |= (uint64)crc32; - } - } - } - if (!crc64Ret) { - crc64Ret = (uint64)RiceCRC32(src, width, height, size, rowStride); - } - - return crc64Ret; -} - -/* -** Computes Adler32 checksum for a stream of data. -** -** From the specification found in RFC 1950: (ZLIB Compressed Data Format -** Specification version 3.3) -** -** ADLER32 (Adler-32 checksum) This contains a checksum value of the -** uncompressed data (excluding any dictionary data) computed according to -** Adler-32 algorithm. This algorithm is a 32-bit extension and improvement -** of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 standard. -** -** Adler-32 is composed of two sums accumulated per byte: s1 is the sum of -** all bytes, s2 is the sum of all s1 values. Both sums are done modulo -** 65521. s1 is initialized to 1, s2 to zero. The Adler-32 checksum is stored -** as s2*65536 + s1 in most-significant-byte first (network) order. -** -** 8.2. The Adler-32 algorithm -** -** The Adler-32 algorithm is much faster than the CRC32 algorithm yet still -** provides an extremely low probability of undetected errors. -** -** The modulo on unsigned long accumulators can be delayed for 5552 bytes, -** so the modulo operation time is negligible. If the bytes are a, b, c, -** the second sum is 3a + 2b + c + 3, and so is position and order sensitive, -** unlike the first sum, which is just a checksum. That 65521 is prime is -** important to avoid a possible large class of two-byte errors that leave -** the check unchanged. (The Fletcher checksum uses 255, which is not prime -** and which also makes the Fletcher check insensitive to single byte -** changes 0 <-> 255.) -** -** The sum s1 is initialized to 1 instead of zero to make the length of -** the sequence part of s2, so that the length does not have to be checked -** separately. (Any sequence of zeroes has a Fletcher checksum of zero.) -*/ - -uint32 -TxUtil::Adler32(const uint8* data, int Len, uint32 dwAdler32) -{ -#if 1 - /* zlib adler32 */ - return adler32(dwAdler32, data, Len); -#else - register uint32 s1 = dwAdler32 & 0xFFFF; - register uint32 s2 = (dwAdler32 >> 16) & 0xFFFF; - int k; - - while (Len > 0) { - /* 5552 is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ - k = (Len < 5552 ? Len : 5552); - Len -= k; - while (k--) { - s1 += *data++; - s2 += s1; - } - /* 65521 is the largest prime smaller than 65536 */ - s1 %= 65521; - s2 %= 65521; - } - - return (s2 << 16) | s1; -#endif -} - -uint32 -TxUtil::Adler32(const uint8* src, int width, int height, int size, int rowStride) -{ - int i; - uint32 ret = 1; - uint32 width_in_bytes = width * size; - - for (i = 0; i < height; i++) { - ret = Adler32(src, width_in_bytes, ret); - src += rowStride; - } - - return ret; -} - -/* Rice CRC32 for hires texture packs */ -/* NOTE: The following is used in Glide64 to calculate the CRC32 - * for Rice hires texture packs. - * - * BYTE* addr = (BYTE*)(gfx.RDRAM + - * rdp.addr[rdp.tiles[tile].t_mem] + - * (rdp.tiles[tile].ul_t * bpl) + - * (((rdp.tiles[tile].ul_s<>1)); - * RiceCRC32(addr, - * rdp.tiles[tile].width, - * rdp.tiles[tile].height, - * (unsigned short)(rdp.tiles[tile].format << 8 | rdp.tiles[tile].size), - * bpl); - */ -uint32 -TxUtil::RiceCRC32(const uint8* src, int width, int height, int size, int rowStride) -{ - /* NOTE: bytes_per_width must be equal or larger than 4 */ - - uint32 crc32Ret = 0; - const uint32 bytes_per_width = ((width << size) + 1) >> 1; - - /*if (bytes_per_width < 4) return 0;*/ - - try { -#ifdef WIN32 - __asm { - push ebx; - push esi; - push edi; - - mov ecx, dword ptr [src]; - mov eax, dword ptr [height]; - mov edx, 0; - dec eax; - - loop2: - mov ebx, dword ptr [bytes_per_width]; - sub ebx, 4; - - loop1: - mov esi, dword ptr [ecx+ebx]; - xor esi, ebx; - rol edx, 4; - add edx, esi; - sub ebx, 4; - jge loop1; - - xor esi, eax; - add edx, esi; - add ecx, dword ptr [rowStride]; - dec eax; - jge loop2; - - mov dword ptr [crc32Ret], edx; - - pop edi; - pop esi; - pop ebx; - } -#else - asm volatile( - "pushl %%ebx \n" - "pushl %%esi \n" - "pushl %%edi \n" - - "movl %0, %%ecx \n" - "movl %1, %%eax \n" - "movl $0, %%edx \n" - "decl %%eax \n" - - "0: \n" - "movl %2, %%ebx \n" - "subl $4, %%ebx \n" - - "1: \n" - "movl (%%ecx,%%ebx), %%esi \n" - "xorl %%ebx, %%esi \n" - "roll $4, %%edx \n" - "addl %%esi, %%edx \n" - "subl $4, %%ebx \n" - "jge 1b \n" - - "xorl %%eax, %%esi \n" - "addl %%esi, %%edx \n" - "addl %3, %%ecx \n" - "decl %%eax \n" - "jge 0b \n" - - "movl %%edx, %4 \n" - - "popl %%edi \n" - "popl %%esi \n" - "popl %%ebx \n" - : - : "m"(src), "m"(height), "m"(bytes_per_width), "m"(rowStride), "m"(crc32Ret) - : "memory", "cc" - ); -#endif - } catch(...) { - DBG_INFO(80, L"Error: RiceCRC32 exception!\n"); - } - - return crc32Ret; -} - -boolean -TxUtil::RiceCRC32_CI4(const uint8* src, int width, int height, int size, int rowStride, - uint32* crc32, uint32* cimax) -{ - /* NOTE: bytes_per_width must be equal or larger than 4 */ - - uint32 crc32Ret = 0; - uint32 cimaxRet = 0; - const uint32 bytes_per_width = ((width << size) + 1) >> 1; - - /*if (bytes_per_width < 4) return 0;*/ - - /* 4bit CI */ - try { -#ifdef WIN32 - __asm { - push ebx; - push esi; - push edi; - - mov ecx, dword ptr [src]; - mov eax, dword ptr [height]; - mov edx, 0; - mov edi, 0; - dec eax; - - loop2: - mov ebx, dword ptr [bytes_per_width]; - sub ebx, 4; - - loop1: - mov esi, dword ptr [ecx+ebx]; - - cmp edi, 0x0000000f; - je findmax0; - - push ecx; - mov ecx, esi; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax8; - mov edi, ecx; - - findmax8: - mov ecx, esi; - shr ecx, 4; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax7; - mov edi, ecx; - - findmax7: - mov ecx, esi; - shr ecx, 8; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax6; - mov edi, ecx; - - findmax6: - mov ecx, esi; - shr ecx, 12; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax5; - mov edi, ecx; - - findmax5: - mov ecx, esi; - shr ecx, 16; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax4; - mov edi, ecx; - - findmax4: - mov ecx, esi; - shr ecx, 20; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax3; - mov edi, ecx; - - findmax3: - mov ecx, esi; - shr ecx, 24; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax2; - mov edi, ecx; - - findmax2: - mov ecx, esi; - shr ecx, 28; - and ecx, 0x0000000f; - cmp ecx, edi; - jb findmax1; - mov edi, ecx; - - findmax1: - pop ecx; - - findmax0: - xor esi, ebx; - rol edx, 4; - add edx, esi; - sub ebx, 4; - jge loop1; - - xor esi, eax; - add edx, esi; - add ecx, dword ptr [rowStride]; - dec eax; - jge loop2; - - mov dword ptr [crc32Ret], edx; - mov dword ptr [cimaxRet], edi; - - pop edi; - pop esi; - pop ebx; - } -#else - asm volatile( - "pushl %%ebx \n" - "pushl %%esi \n" - "pushl %%edi \n" - - "movl %0, %%ecx \n" - "movl %1, %%eax \n" - "movl $0, %%edx \n" - "movl $0, %%edi \n" - "decl %%eax \n" - - "0: \n" - "movl %2, %%ebx \n" - "subl $4, %%ebx \n" - - "1: \n" - "movl (%%ecx,%%ebx), %%esi \n" - - "cmpl $0x0000000f, %%edi \n" - "je 10f \n" - - "pushl %%ecx \n" - "movl %%esi, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 2f \n" - "movl %%ecx, %%edi \n" - - "2: \n" - "movl %%esi, %%ecx \n" - "shrl $4, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 3f \n" - "movl %%ecx, %%edi \n" - - "3: \n" - "movl %%esi, %%ecx \n" - "shrl $8, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 4f \n" - "movl %%ecx, %%edi \n" - - "4: \n" - "movl %%esi, %%ecx \n" - "shrl $12, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 5f \n" - "movl %%ecx, %%edi \n" - - "5: \n" - "movl %%esi, %%ecx \n" - "shrl $16, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 6f \n" - "movl %%ecx, %%edi \n" - - "6: \n" - "movl %%esi, %%ecx \n" - "shrl $20, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 7f \n" - "movl %%ecx, %%edi \n" - - "7: \n" - "movl %%esi, %%ecx \n" - "shrl $24, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 8f \n" - "movl %%ecx, %%edi \n" - - "8: \n" - "movl %%esi, %%ecx \n" - "shrl $28, %%ecx \n" - "andl $0x0000000f, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 9f \n" - "movl %%ecx, %%edi \n" - - "9: \n" - "popl %%ecx \n" - - "10: \n" - "xorl %%ebx, %%esi \n" - "roll $4, %%edx \n" - "addl %%esi, %%edx \n" - "subl $4, %%ebx \n" - "jge 1b \n" - - "xorl %%eax, %%esi \n" - "addl %%esi, %%edx \n" - "addl %3, %%ecx \n" - "decl %%eax \n" - "jge 0b \n" - - "movl %%edx, %4 \n" - "movl %%edi, %5 \n" - - "popl %%edi \n" - "popl %%esi \n" - "popl %%ebx \n" - : - : "m"(src), "m"(height), "m"(bytes_per_width), "m"(rowStride), "m"(crc32Ret), "m"(cimaxRet) - : "memory", "cc" - ); -#endif - } catch(...) { - DBG_INFO(80, L"Error: RiceCRC32 exception!\n"); - } - - *crc32 = crc32Ret; - *cimax = cimaxRet; - - return 1; -} - -boolean -TxUtil::RiceCRC32_CI8(const uint8* src, int width, int height, int size, int rowStride, - uint32* crc32, uint32* cimax) -{ - /* NOTE: bytes_per_width must be equal or larger than 4 */ - - uint32 crc32Ret = 0; - uint32 cimaxRet = 0; - const uint32 bytes_per_width = ((width << size) + 1) >> 1; - - /*if (bytes_per_width < 4) return 0;*/ - - /* 8bit CI */ - try { -#ifdef WIN32 - __asm { - push ebx; - push esi; - push edi; - - mov ecx, dword ptr [src]; - mov eax, dword ptr [height]; - mov edx, 0; - mov edi, 0; - dec eax; - - loop2: - mov ebx, dword ptr [bytes_per_width]; - sub ebx, 4; - - loop1: - mov esi, dword ptr [ecx+ebx]; - - cmp edi, 0x000000ff; - je findmax0; - - push ecx; - mov ecx, esi; - and ecx, 0x000000ff; - cmp ecx, edi; - jb findmax4; - mov edi, ecx; - - findmax4: - mov ecx, esi; - shr ecx, 8; - and ecx, 0x000000ff; - cmp ecx, edi; - jb findmax3; - mov edi, ecx; - - findmax3: - mov ecx, esi; - shr ecx, 16; - and ecx, 0x000000ff; - cmp ecx, edi; - jb findmax2; - mov edi, ecx; - - findmax2: - mov ecx, esi; - shr ecx, 24; - and ecx, 0x000000ff; - cmp ecx, edi; - jb findmax1; - mov edi, ecx; - - findmax1: - pop ecx; - - findmax0: - xor esi, ebx; - rol edx, 4; - add edx, esi; - sub ebx, 4; - jge loop1; - - xor esi, eax; - add edx, esi; - add ecx, dword ptr [rowStride]; - dec eax; - jge loop2; - - mov dword ptr [crc32Ret], edx; - mov dword ptr [cimaxRet], edi; - - pop edi; - pop esi; - pop ebx; - } -#else - asm volatile( - "pushl %%ebx \n" - "pushl %%esi \n" - "pushl %%edi \n" - - "movl %0, %%ecx \n" - "movl %1, %%eax \n" - "movl $0, %%edx \n" - "movl $0, %%edi \n" - "decl %%eax \n" - - "0: \n" - "movl %2, %%ebx \n" - "subl $4, %%ebx \n" - - "1: \n" - "movl (%%ecx,%%ebx), %%esi \n" - - "cmpl $0x000000ff, %%edi \n" - "je 6f \n" - - "pushl %%ecx \n" - "movl %%esi, %%ecx \n" - "andl $0x000000ff, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 2f \n" - "movl %%ecx, %%edi \n" - - "2: \n" - "movl %%esi, %%ecx \n" - "shrl $8, %%ecx \n" - "andl $0x000000ff, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 3f \n" - "movl %%ecx, %%edi \n" - - "3: \n" - "movl %%esi, %%ecx \n" - "shrl $16, %%ecx \n" - "andl $0x000000ff, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 4f \n" - "movl %%ecx, %%edi \n" - - "4: \n" - "movl %%esi, %%ecx \n" - "shrl $24, %%ecx \n" - "andl $0x000000ff, %%ecx \n" - "cmpl %%edi, %%ecx \n" - "jb 5f \n" - "movl %%ecx, %%edi \n" - - "5: \n" - "popl %%ecx \n" - - "6: \n" - "xorl %%ebx, %%esi \n" - "roll $4, %%edx \n" - "addl %%esi, %%edx \n" - "subl $4, %%ebx \n" - "jge 1b \n" - - "xorl %%eax, %%esi \n" - "addl %%esi, %%edx \n" - "addl %3, %%ecx \n" - "decl %%eax \n" - "jge 0b \n" - - "movl %%edx, %4 \n" - "movl %%edi, %5 \n" - - "popl %%edi \n" - "popl %%esi \n" - "popl %%ebx \n" - : - : "m"(src), "m"(height), "m"(bytes_per_width), "m"(rowStride), "m"(crc32Ret), "m"(cimaxRet) - : "memory", "cc" - ); -#endif - } catch(...) { - DBG_INFO(80, L"Error: RiceCRC32 exception!\n"); - } - - *crc32 = crc32Ret; - *cimax = cimaxRet; - - return 1; -} - -int -TxUtil::log2(int num) -{ - int i = 0; - -#if 1 - if (!num) return 0; -#ifdef WIN32 - __asm { - mov eax, dword ptr [num]; - bsr eax, eax; - mov dword ptr [i], eax; - } -#else - asm volatile( - "movl %0, %%eax \n" - "bsrl %%eax, %%eax \n" - "movl %%eax, %1 \n" - : - : "m"(num), "m"(i) - : "memory", "cc" - ); -#endif -#else - switch (num) { - case 1: return 0; - case 2: return 1; - case 4: return 2; - case 8: return 3; - case 16: return 4; - case 32: return 5; - case 64: return 6; - case 128: return 7; - case 256: return 8; - case 512: return 9; - case 1024: return 10; - case 2048: return 11; - } -#endif - - return i; -} - -int -TxUtil::grLodLog2(int w, int h) -{ - return (w >= h ? log2(w) : log2(h)); -} - -int -TxUtil::grAspectRatioLog2(int w, int h) -{ - return (w >= h ? log2(w/h) : -log2(h/w)); -} - -int -TxUtil::getNumberofProcessors() -{ - int numcore = 1; - - /* number of logical processors per physical processor */ - try { -#ifdef WIN32 -#if 1 - /* use win32 api */ - SYSTEM_INFO siSysInfo; - ZeroMemory(&siSysInfo, sizeof(SYSTEM_INFO)); - GetSystemInfo(&siSysInfo); - numcore = siSysInfo.dwNumberOfProcessors; -#else - __asm { - push ebx; - - mov eax, 1; - cpuid; - test edx, 0x10000000; /* check HTT */ - jz uniproc; - and ebx, 0x00ff0000; /* mask logical core counter bit */ - shr ebx, 16; - mov dword ptr [numcore], ebx; - uniproc: - - pop ebx; - } -#endif -#else - asm volatile( - "pushl %%ebx \n" - - "movl $1, %%eax \n" - "cpuid \n" - "testl $0x10000000, %%edx \n" - "jz 0f \n" - "andl $0x00ff0000, %%ebx \n" - "shrl $16, %%ebx \n" - "movl %%ebx, %0 \n" - "0: \n" - - "popl %%ebx \n" - : - : "m"(numcore) - : "memory", "cc" - ); -#endif - } catch(...) { - DBG_INFO(80, L"Error: number of processor detection failed!\n"); - } - - if (numcore > MAX_NUMCORE) numcore = MAX_NUMCORE; - - DBG_INFO(80, L"Number of processors : %d\n", numcore); - - return numcore; -} - - -/* - * Memory buffers for texture manipulations - ******************************************************************************/ -TxMemBuf::TxMemBuf() -{ - int i; - for (i = 0; i < 2; i++) { - _tex[i] = NULL; - _size[i] = 0; - } -} - -TxMemBuf::~TxMemBuf() -{ - shutdown(); -} - -boolean -TxMemBuf::init(int maxwidth, int maxheight) -{ - int i; - for (i = 0; i < 2; i++) { - if (!_tex[i]) { - _tex[i] = (uint8 *)malloc(maxwidth * maxheight * 4); - _size[i] = maxwidth * maxheight * 4; - } - - if (!_tex[i]) { - shutdown(); - return 0; - } - } - return 1; -} - -void -TxMemBuf::shutdown() -{ - int i; - for (i = 0; i < 2; i++) { - if (_tex[i]) free(_tex[i]); - _tex[i] = NULL; - _size[i] = 0; - } -} - -uint8* -TxMemBuf::get(unsigned int num) -{ - return ((num < 2) ? _tex[num] : NULL); -} - -uint32 -TxMemBuf::size_of(unsigned int num) -{ - return ((num < 2) ? _size[num] : 0); -} + +/* + * External libraries + ******************************************************************************/ +TxLoadLib::TxLoadLib() +{ +#ifdef DXTN_DLL + if (!_dxtnlib) + _dxtnlib = LoadLibrary("dxtn"); + + if (_dxtnlib) { + if (!_tx_compress_dxtn) + _tx_compress_dxtn = (dxtCompressTexFuncExt)DLSYM(_dxtnlib, "tx_compress_dxtn"); + + if (!_tx_compress_fxt1) + _tx_compress_fxt1 = (fxtCompressTexFuncExt)DLSYM(_dxtnlib, "fxt1_encode"); + } +#else + _tx_compress_dxtn = tx_compress_dxtn; + _tx_compress_fxt1 = fxt1_encode; + +#endif +} + +TxLoadLib::~TxLoadLib() +{ +#ifdef DXTN_DLL + /* free dynamic library */ + if (_dxtnlib) + FreeLibrary(_dxtnlib); +#endif + +} + +fxtCompressTexFuncExt +TxLoadLib::getfxtCompressTexFuncExt() +{ + return _tx_compress_fxt1; +} + +dxtCompressTexFuncExt +TxLoadLib::getdxtCompressTexFuncExt() +{ + return _tx_compress_dxtn; +} + + +/* + * Utilities + ******************************************************************************/ +uint32 +TxUtil::checksumTx(uint8 *src, int width, int height, uint16 format) +{ + int dataSize = sizeofTx(width, height, format); + + /* for now we use adler32 if something else is better + * we can simply swtich later + */ + /* return (dataSize ? Adler32(src, dataSize, 1) : 0); */ + + /* zlib crc32 */ + return (dataSize ? crc32(crc32(0L, Z_NULL, 0), src, dataSize) : 0); +} + +int +TxUtil::sizeofTx(int width, int height, uint16 format) +{ + int dataSize = 0; + + /* a lookup table for the shifts would be better */ + switch (format) { + case GR_TEXFMT_ARGB_CMP_FXT1: + dataSize = (((width + 0x7) & ~0x7) * ((height + 0x3) & ~0x3)) >> 1; + break; + case GR_TEXFMT_ARGB_CMP_DXT1: + dataSize = (((width + 0x3) & ~0x3) * ((height + 0x3) & ~0x3)) >> 1; + break; + case GR_TEXFMT_ARGB_CMP_DXT3: + case GR_TEXFMT_ARGB_CMP_DXT5: + dataSize = ((width + 0x3) & ~0x3) * ((height + 0x3) & ~0x3); + break; + case GR_TEXFMT_ALPHA_INTENSITY_44: + case GR_TEXFMT_ALPHA_8: + case GR_TEXFMT_INTENSITY_8: + case GR_TEXFMT_P_8: + dataSize = width * height; + break; + case GR_TEXFMT_ARGB_4444: + case GR_TEXFMT_ARGB_1555: + case GR_TEXFMT_RGB_565: + case GR_TEXFMT_ALPHA_INTENSITY_88: + dataSize = (width * height) << 1; + break; + case GR_TEXFMT_ARGB_8888: + dataSize = (width * height) << 2; + break; + default: + /* unsupported format */ + DBG_INFO(80, L"Error: cannot get size. unsupported gfmt:%x\n", format); + ; + } + + return dataSize; +} + +#if 0 /* unused */ +uint32 +TxUtil::chkAlpha(uint32* src, int width, int height) +{ + /* NOTE: _src must be ARGB8888 + * return values + * 0x00000000: 8bit alpha + * 0x00000001: 1bit alpha + * 0xff000001: no alpha + */ + + int _size = width * height; + uint32 alpha = 0; + + __asm { + mov esi, dword ptr [src]; + mov ecx, dword ptr [_size]; + mov ebx, 0xff000000; + + tc1_loop: + mov eax, dword ptr [esi]; + add esi, 4; + + and eax, 0xff000000; + jz alpha1bit; + cmp eax, 0xff000000; + je alpha1bit; + jmp done; + + alpha1bit: + and ebx, eax; + dec ecx; + jnz tc1_loop; + + or ebx, 0x00000001; + mov dword ptr [alpha], ebx; + + done: + } + + return alpha; +} +#endif + +uint32 +TxUtil::checksum(uint8 *src, int width, int height, int size, int rowStride) +{ + /* Rice CRC32 for now. We can switch this to Jabo MD5 or + * any other custom checksum. + * TODO: use *_HIRESTEXTURE option. */ + + if (!src) return 0; + + return RiceCRC32(src, width, height, size, rowStride); +} + +uint64 +TxUtil::checksum64(uint8 *src, int width, int height, int size, int rowStride, uint8 *palette) +{ + /* Rice CRC32 for now. We can switch this to Jabo MD5 or + * any other custom checksum. + * TODO: use *_HIRESTEXTURE option. */ + /* Returned value is 64bits: hi=palette crc32 low=texture crc32 */ + + if (!src) return 0; + + uint64 crc64Ret = 0; + + if (palette) { + uint32 crc32 = 0, cimax = 0; + switch (size & 0xff) { + case 1: + if (RiceCRC32_CI8(src, width, height, size, rowStride, &crc32, &cimax)) { + crc64Ret = (uint64)RiceCRC32(palette, cimax + 1, 1, 2, 512); + crc64Ret <<= 32; + crc64Ret |= (uint64)crc32; + } + break; + case 0: + if (RiceCRC32_CI4(src, width, height, size, rowStride, &crc32, &cimax)) { + crc64Ret = (uint64)RiceCRC32(palette, cimax + 1, 1, 2, 32); + crc64Ret <<= 32; + crc64Ret |= (uint64)crc32; + } + } + } + if (!crc64Ret) { + crc64Ret = (uint64)RiceCRC32(src, width, height, size, rowStride); + } + + return crc64Ret; +} + +/* +** Computes Adler32 checksum for a stream of data. +** +** From the specification found in RFC 1950: (ZLIB Compressed Data Format +** Specification version 3.3) +** +** ADLER32 (Adler-32 checksum) This contains a checksum value of the +** uncompressed data (excluding any dictionary data) computed according to +** Adler-32 algorithm. This algorithm is a 32-bit extension and improvement +** of the Fletcher algorithm, used in the ITU-T X.224 / ISO 8073 standard. +** +** Adler-32 is composed of two sums accumulated per byte: s1 is the sum of +** all bytes, s2 is the sum of all s1 values. Both sums are done modulo +** 65521. s1 is initialized to 1, s2 to zero. The Adler-32 checksum is stored +** as s2*65536 + s1 in most-significant-byte first (network) order. +** +** 8.2. The Adler-32 algorithm +** +** The Adler-32 algorithm is much faster than the CRC32 algorithm yet still +** provides an extremely low probability of undetected errors. +** +** The modulo on unsigned long accumulators can be delayed for 5552 bytes, +** so the modulo operation time is negligible. If the bytes are a, b, c, +** the second sum is 3a + 2b + c + 3, and so is position and order sensitive, +** unlike the first sum, which is just a checksum. That 65521 is prime is +** important to avoid a possible large class of two-byte errors that leave +** the check unchanged. (The Fletcher checksum uses 255, which is not prime +** and which also makes the Fletcher check insensitive to single byte +** changes 0 <-> 255.) +** +** The sum s1 is initialized to 1 instead of zero to make the length of +** the sequence part of s2, so that the length does not have to be checked +** separately. (Any sequence of zeroes has a Fletcher checksum of zero.) +*/ + +uint32 +TxUtil::Adler32(const uint8* data, int Len, uint32 dwAdler32) +{ +#if 1 + /* zlib adler32 */ + return adler32(dwAdler32, data, Len); +#else + register uint32 s1 = dwAdler32 & 0xFFFF; + register uint32 s2 = (dwAdler32 >> 16) & 0xFFFF; + int k; + + while (Len > 0) { + /* 5552 is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ + k = (Len < 5552 ? Len : 5552); + Len -= k; + while (k--) { + s1 += *data++; + s2 += s1; + } + /* 65521 is the largest prime smaller than 65536 */ + s1 %= 65521; + s2 %= 65521; + } + + return (s2 << 16) | s1; +#endif +} + +uint32 +TxUtil::Adler32(const uint8* src, int width, int height, int size, int rowStride) +{ + int i; + uint32 ret = 1; + uint32 width_in_bytes = width * size; + + for (i = 0; i < height; i++) { + ret = Adler32(src, width_in_bytes, ret); + src += rowStride; + } + + return ret; +} + +/* Rice CRC32 for hires texture packs */ +/* NOTE: The following is used in Glide64 to calculate the CRC32 + * for Rice hires texture packs. + * + * BYTE* addr = (BYTE*)(gfx.RDRAM + + * rdp.addr[rdp.tiles[tile].t_mem] + + * (rdp.tiles[tile].ul_t * bpl) + + * (((rdp.tiles[tile].ul_s<>1)); + * RiceCRC32(addr, + * rdp.tiles[tile].width, + * rdp.tiles[tile].height, + * (unsigned short)(rdp.tiles[tile].format << 8 | rdp.tiles[tile].size), + * bpl); + */ +uint32 +TxUtil::RiceCRC32(const uint8* src, int width, int height, int size, int rowStride) +{ + /* NOTE: bytes_per_width must be equal or larger than 4 */ + + uint32 crc32Ret = 0; + const uint32 bytes_per_width = ((width << size) + 1) >> 1; + + /*if (bytes_per_width < 4) return 0;*/ + + try { +#ifdef WIN32 + __asm { + push ebx; + push esi; + push edi; + + mov ecx, dword ptr [src]; + mov eax, dword ptr [height]; + mov edx, 0; + dec eax; + + loop2: + mov ebx, dword ptr [bytes_per_width]; + sub ebx, 4; + + loop1: + mov esi, dword ptr [ecx+ebx]; + xor esi, ebx; + rol edx, 4; + add edx, esi; + sub ebx, 4; + jge loop1; + + xor esi, eax; + add edx, esi; + add ecx, dword ptr [rowStride]; + dec eax; + jge loop2; + + mov dword ptr [crc32Ret], edx; + + pop edi; + pop esi; + pop ebx; + } +#else + asm volatile( + "pushl %%ebx \n" + "pushl %%esi \n" + "pushl %%edi \n" + + "movl %0, %%ecx \n" + "movl %1, %%eax \n" + "movl $0, %%edx \n" + "decl %%eax \n" + + "0: \n" + "movl %2, %%ebx \n" + "subl $4, %%ebx \n" + + "1: \n" + "movl (%%ecx,%%ebx), %%esi \n" + "xorl %%ebx, %%esi \n" + "roll $4, %%edx \n" + "addl %%esi, %%edx \n" + "subl $4, %%ebx \n" + "jge 1b \n" + + "xorl %%eax, %%esi \n" + "addl %%esi, %%edx \n" + "addl %3, %%ecx \n" + "decl %%eax \n" + "jge 0b \n" + + "movl %%edx, %4 \n" + + "popl %%edi \n" + "popl %%esi \n" + "popl %%ebx \n" + : + : "m"(src), "m"(height), "m"(bytes_per_width), "m"(rowStride), "m"(crc32Ret) + : "memory", "cc" + ); +#endif + } catch(...) { + DBG_INFO(80, L"Error: RiceCRC32 exception!\n"); + } + + return crc32Ret; +} + +boolean +TxUtil::RiceCRC32_CI4(const uint8* src, int width, int height, int size, int rowStride, + uint32* crc32, uint32* cimax) +{ + /* NOTE: bytes_per_width must be equal or larger than 4 */ + + uint32 crc32Ret = 0; + uint32 cimaxRet = 0; + const uint32 bytes_per_width = ((width << size) + 1) >> 1; + + /*if (bytes_per_width < 4) return 0;*/ + + /* 4bit CI */ + try { +#ifdef WIN32 + __asm { + push ebx; + push esi; + push edi; + + mov ecx, dword ptr [src]; + mov eax, dword ptr [height]; + mov edx, 0; + mov edi, 0; + dec eax; + + loop2: + mov ebx, dword ptr [bytes_per_width]; + sub ebx, 4; + + loop1: + mov esi, dword ptr [ecx+ebx]; + + cmp edi, 0x0000000f; + je findmax0; + + push ecx; + mov ecx, esi; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax8; + mov edi, ecx; + + findmax8: + mov ecx, esi; + shr ecx, 4; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax7; + mov edi, ecx; + + findmax7: + mov ecx, esi; + shr ecx, 8; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax6; + mov edi, ecx; + + findmax6: + mov ecx, esi; + shr ecx, 12; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax5; + mov edi, ecx; + + findmax5: + mov ecx, esi; + shr ecx, 16; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax4; + mov edi, ecx; + + findmax4: + mov ecx, esi; + shr ecx, 20; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax3; + mov edi, ecx; + + findmax3: + mov ecx, esi; + shr ecx, 24; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax2; + mov edi, ecx; + + findmax2: + mov ecx, esi; + shr ecx, 28; + and ecx, 0x0000000f; + cmp ecx, edi; + jb findmax1; + mov edi, ecx; + + findmax1: + pop ecx; + + findmax0: + xor esi, ebx; + rol edx, 4; + add edx, esi; + sub ebx, 4; + jge loop1; + + xor esi, eax; + add edx, esi; + add ecx, dword ptr [rowStride]; + dec eax; + jge loop2; + + mov dword ptr [crc32Ret], edx; + mov dword ptr [cimaxRet], edi; + + pop edi; + pop esi; + pop ebx; + } +#else + asm volatile( + "pushl %%ebx \n" + "pushl %%esi \n" + "pushl %%edi \n" + + "movl %0, %%ecx \n" + "movl %1, %%eax \n" + "movl $0, %%edx \n" + "movl $0, %%edi \n" + "decl %%eax \n" + + "0: \n" + "movl %2, %%ebx \n" + "subl $4, %%ebx \n" + + "1: \n" + "movl (%%ecx,%%ebx), %%esi \n" + + "cmpl $0x0000000f, %%edi \n" + "je 10f \n" + + "pushl %%ecx \n" + "movl %%esi, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 2f \n" + "movl %%ecx, %%edi \n" + + "2: \n" + "movl %%esi, %%ecx \n" + "shrl $4, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 3f \n" + "movl %%ecx, %%edi \n" + + "3: \n" + "movl %%esi, %%ecx \n" + "shrl $8, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 4f \n" + "movl %%ecx, %%edi \n" + + "4: \n" + "movl %%esi, %%ecx \n" + "shrl $12, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 5f \n" + "movl %%ecx, %%edi \n" + + "5: \n" + "movl %%esi, %%ecx \n" + "shrl $16, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 6f \n" + "movl %%ecx, %%edi \n" + + "6: \n" + "movl %%esi, %%ecx \n" + "shrl $20, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 7f \n" + "movl %%ecx, %%edi \n" + + "7: \n" + "movl %%esi, %%ecx \n" + "shrl $24, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 8f \n" + "movl %%ecx, %%edi \n" + + "8: \n" + "movl %%esi, %%ecx \n" + "shrl $28, %%ecx \n" + "andl $0x0000000f, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 9f \n" + "movl %%ecx, %%edi \n" + + "9: \n" + "popl %%ecx \n" + + "10: \n" + "xorl %%ebx, %%esi \n" + "roll $4, %%edx \n" + "addl %%esi, %%edx \n" + "subl $4, %%ebx \n" + "jge 1b \n" + + "xorl %%eax, %%esi \n" + "addl %%esi, %%edx \n" + "addl %3, %%ecx \n" + "decl %%eax \n" + "jge 0b \n" + + "movl %%edx, %4 \n" + "movl %%edi, %5 \n" + + "popl %%edi \n" + "popl %%esi \n" + "popl %%ebx \n" + : + : "m"(src), "m"(height), "m"(bytes_per_width), "m"(rowStride), "m"(crc32Ret), "m"(cimaxRet) + : "memory", "cc" + ); +#endif + } catch(...) { + DBG_INFO(80, L"Error: RiceCRC32 exception!\n"); + } + + *crc32 = crc32Ret; + *cimax = cimaxRet; + + return 1; +} + +boolean +TxUtil::RiceCRC32_CI8(const uint8* src, int width, int height, int size, int rowStride, + uint32* crc32, uint32* cimax) +{ + /* NOTE: bytes_per_width must be equal or larger than 4 */ + + uint32 crc32Ret = 0; + uint32 cimaxRet = 0; + const uint32 bytes_per_width = ((width << size) + 1) >> 1; + + /*if (bytes_per_width < 4) return 0;*/ + + /* 8bit CI */ + try { +#ifdef WIN32 + __asm { + push ebx; + push esi; + push edi; + + mov ecx, dword ptr [src]; + mov eax, dword ptr [height]; + mov edx, 0; + mov edi, 0; + dec eax; + + loop2: + mov ebx, dword ptr [bytes_per_width]; + sub ebx, 4; + + loop1: + mov esi, dword ptr [ecx+ebx]; + + cmp edi, 0x000000ff; + je findmax0; + + push ecx; + mov ecx, esi; + and ecx, 0x000000ff; + cmp ecx, edi; + jb findmax4; + mov edi, ecx; + + findmax4: + mov ecx, esi; + shr ecx, 8; + and ecx, 0x000000ff; + cmp ecx, edi; + jb findmax3; + mov edi, ecx; + + findmax3: + mov ecx, esi; + shr ecx, 16; + and ecx, 0x000000ff; + cmp ecx, edi; + jb findmax2; + mov edi, ecx; + + findmax2: + mov ecx, esi; + shr ecx, 24; + and ecx, 0x000000ff; + cmp ecx, edi; + jb findmax1; + mov edi, ecx; + + findmax1: + pop ecx; + + findmax0: + xor esi, ebx; + rol edx, 4; + add edx, esi; + sub ebx, 4; + jge loop1; + + xor esi, eax; + add edx, esi; + add ecx, dword ptr [rowStride]; + dec eax; + jge loop2; + + mov dword ptr [crc32Ret], edx; + mov dword ptr [cimaxRet], edi; + + pop edi; + pop esi; + pop ebx; + } +#else + asm volatile( + "pushl %%ebx \n" + "pushl %%esi \n" + "pushl %%edi \n" + + "movl %0, %%ecx \n" + "movl %1, %%eax \n" + "movl $0, %%edx \n" + "movl $0, %%edi \n" + "decl %%eax \n" + + "0: \n" + "movl %2, %%ebx \n" + "subl $4, %%ebx \n" + + "1: \n" + "movl (%%ecx,%%ebx), %%esi \n" + + "cmpl $0x000000ff, %%edi \n" + "je 6f \n" + + "pushl %%ecx \n" + "movl %%esi, %%ecx \n" + "andl $0x000000ff, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 2f \n" + "movl %%ecx, %%edi \n" + + "2: \n" + "movl %%esi, %%ecx \n" + "shrl $8, %%ecx \n" + "andl $0x000000ff, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 3f \n" + "movl %%ecx, %%edi \n" + + "3: \n" + "movl %%esi, %%ecx \n" + "shrl $16, %%ecx \n" + "andl $0x000000ff, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 4f \n" + "movl %%ecx, %%edi \n" + + "4: \n" + "movl %%esi, %%ecx \n" + "shrl $24, %%ecx \n" + "andl $0x000000ff, %%ecx \n" + "cmpl %%edi, %%ecx \n" + "jb 5f \n" + "movl %%ecx, %%edi \n" + + "5: \n" + "popl %%ecx \n" + + "6: \n" + "xorl %%ebx, %%esi \n" + "roll $4, %%edx \n" + "addl %%esi, %%edx \n" + "subl $4, %%ebx \n" + "jge 1b \n" + + "xorl %%eax, %%esi \n" + "addl %%esi, %%edx \n" + "addl %3, %%ecx \n" + "decl %%eax \n" + "jge 0b \n" + + "movl %%edx, %4 \n" + "movl %%edi, %5 \n" + + "popl %%edi \n" + "popl %%esi \n" + "popl %%ebx \n" + : + : "m"(src), "m"(height), "m"(bytes_per_width), "m"(rowStride), "m"(crc32Ret), "m"(cimaxRet) + : "memory", "cc" + ); +#endif + } catch(...) { + DBG_INFO(80, L"Error: RiceCRC32 exception!\n"); + } + + *crc32 = crc32Ret; + *cimax = cimaxRet; + + return 1; +} + +int +TxUtil::log2(int num) +{ + int i = 0; + +#if 1 + if (!num) return 0; +#ifdef WIN32 + __asm { + mov eax, dword ptr [num]; + bsr eax, eax; + mov dword ptr [i], eax; + } +#else + asm volatile( + "movl %0, %%eax \n" + "bsrl %%eax, %%eax \n" + "movl %%eax, %1 \n" + : + : "m"(num), "m"(i) + : "memory", "cc" + ); +#endif +#else + switch (num) { + case 1: return 0; + case 2: return 1; + case 4: return 2; + case 8: return 3; + case 16: return 4; + case 32: return 5; + case 64: return 6; + case 128: return 7; + case 256: return 8; + case 512: return 9; + case 1024: return 10; + case 2048: return 11; + } +#endif + + return i; +} + +int +TxUtil::grLodLog2(int w, int h) +{ + return (w >= h ? log2(w) : log2(h)); +} + +int +TxUtil::grAspectRatioLog2(int w, int h) +{ + return (w >= h ? log2(w/h) : -log2(h/w)); +} + +int +TxUtil::getNumberofProcessors() +{ + int numcore = 1; + + /* number of logical processors per physical processor */ + try { +#ifdef WIN32 +#if 1 + /* use win32 api */ + SYSTEM_INFO siSysInfo; + ZeroMemory(&siSysInfo, sizeof(SYSTEM_INFO)); + GetSystemInfo(&siSysInfo); + numcore = siSysInfo.dwNumberOfProcessors; +#else + __asm { + push ebx; + + mov eax, 1; + cpuid; + test edx, 0x10000000; /* check HTT */ + jz uniproc; + and ebx, 0x00ff0000; /* mask logical core counter bit */ + shr ebx, 16; + mov dword ptr [numcore], ebx; + uniproc: + + pop ebx; + } +#endif +#else + asm volatile( + "pushl %%ebx \n" + + "movl $1, %%eax \n" + "cpuid \n" + "testl $0x10000000, %%edx \n" + "jz 0f \n" + "andl $0x00ff0000, %%ebx \n" + "shrl $16, %%ebx \n" + "movl %%ebx, %0 \n" + "0: \n" + + "popl %%ebx \n" + : + : "m"(numcore) + : "memory", "cc" + ); +#endif + } catch(...) { + DBG_INFO(80, L"Error: number of processor detection failed!\n"); + } + + if (numcore > MAX_NUMCORE) numcore = MAX_NUMCORE; + + DBG_INFO(80, L"Number of processors : %d\n", numcore); + + return numcore; +} + + +/* + * Memory buffers for texture manipulations + ******************************************************************************/ +TxMemBuf::TxMemBuf() +{ + int i; + for (i = 0; i < 2; i++) { + _tex[i] = NULL; + _size[i] = 0; + } +} + +TxMemBuf::~TxMemBuf() +{ + shutdown(); +} + +boolean +TxMemBuf::init(int maxwidth, int maxheight) +{ + int i; + for (i = 0; i < 2; i++) { + if (!_tex[i]) { + _tex[i] = (uint8 *)malloc(maxwidth * maxheight * 4); + _size[i] = maxwidth * maxheight * 4; + } + + if (!_tex[i]) { + shutdown(); + return 0; + } + } + return 1; +} + +void +TxMemBuf::shutdown() +{ + int i; + for (i = 0; i < 2; i++) { + if (_tex[i]) free(_tex[i]); + _tex[i] = NULL; + _size[i] = 0; + } +} + +uint8* +TxMemBuf::get(unsigned int num) +{ + return ((num < 2) ? _tex[num] : NULL); +} + +uint32 +TxMemBuf::size_of(unsigned int num) +{ + return ((num < 2) ? _size[num] : 0); +} diff --git a/Source/Glitch64/combiner.cpp b/Source/Glitch64/combiner.cpp index d195d6369..d3620cb81 100644 --- a/Source/Glitch64/combiner.cpp +++ b/Source/Glitch64/combiner.cpp @@ -167,6 +167,8 @@ void updateCombiner(int i) glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, operand1[i]); glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, source2[i]); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, operand2[i]); + + grDisplayGLError("updateCombiner"); } void updateCombinera(int i) @@ -179,6 +181,8 @@ void updateCombinera(int i) glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA_ARB, operanda1[i]); glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_ALPHA_ARB, sourcea2[i]); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_ALPHA_ARB, operanda2[i]); + + grDisplayGLError("updateCombinera"); } void init_combiner() @@ -301,6 +305,8 @@ void init_combiner() dither_enabled = 0; blackandwhite0 = 0; blackandwhite1 = 0; + + grDisplayGLError("init_combiner"); } void compile_chroma_shader() @@ -339,6 +345,8 @@ void compile_chroma_shader() strcat(fragment_shader_chroma, "if (color.rgb == chroma_color.rgb) discard; \n"); strcat(fragment_shader_chroma, "}"); + + grDisplayGLError("compile_chroma_shader"); } typedef struct _shader_program_key @@ -525,6 +533,8 @@ void compile_shader() set_lambda(); number_of_programs++; + + grDisplayGLError("compile_shader"); } void free_combiners() @@ -541,6 +551,8 @@ void set_copy_shader() glUseProgramObjectARB(program_object_default); texture0_location = glGetUniformLocationARB(program_object, "texture0"); glUniform1iARB(texture0_location, 0); + + grDisplayGLError("set_copy_shader"); } void set_depth_shader() @@ -550,12 +562,16 @@ void set_depth_shader() glUseProgramObjectARB(program_object_depth); texture0_location = glGetUniformLocationARB(program_object, "texture0"); glUniform1iARB(texture0_location, 0); + + grDisplayGLError("set_depth_shader"); } void set_lambda() { int lambda_location = glGetUniformLocationARB(program_object, "lambda"); glUniform1fARB(lambda_location, lambda); + + grDisplayGLError("set_lambda"); } FX_ENTRY void FX_CALL @@ -583,6 +599,8 @@ grConstantColorValue( GrColor_t value ) constant_color_location = glGetUniformLocationARB(program_object, "constant_color"); glUniform4fARB(constant_color_location, texture_env_color[0], texture_env_color[1], texture_env_color[2], texture_env_color[3]); + + grDisplayGLError("grConstantColorValue"); } int setOtherColorSource(int other) @@ -1470,6 +1488,8 @@ grAlphaBlendFunction( glBlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); else glBlendFunc(sfactorRGB, dfactorRGB); + + grDisplayGLError("grAlphaBlendFunction"); } FX_ENTRY void FX_CALL @@ -1496,12 +1516,15 @@ grAlphaTestFunction( GrCmpFnc_t function ) case GR_CMP_ALWAYS: glAlphaFunc(GL_ALWAYS, alpha_ref/255.0f); glDisable(GL_ALPHA_TEST); + grDisplayGLError("grAlphaTestFunction :: GR_CMP_ALWAYS"); return; break; default: display_warning("grAlphaTestFunction : unknown function : %x", function); } + glEnable(GL_ALPHA_TEST); + grDisplayGLError("grAlphaTestFunction"); } // fog @@ -1530,6 +1553,8 @@ grFogMode( GrFogMode_t mode ) display_warning("grFogMode : unknown mode : %x", mode); } need_to_compile = 1; + + grDisplayGLError("grFogMode"); } FX_ENTRY float FX_CALL @@ -1548,6 +1573,8 @@ guFogGenerateLinear(GrFog_t * /*fogtable*/, glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT); glFogf(GL_FOG_START, nearZ / 255.0f); glFogf(GL_FOG_END, farZ / 255.0f); + + grDisplayGLError("guFogGenerateLinear"); } FX_ENTRY void FX_CALL @@ -1581,6 +1608,7 @@ grFogColorValue( GrColor_t fogcolor ) } glFogfv(GL_FOG_COLOR, color); + grDisplayGLError("glFogfv"); } // chroma @@ -1630,6 +1658,7 @@ grChromakeyValue( GrColor_t value ) chroma_color_location = glGetUniformLocationARB(program_object, "chroma_color"); glUniform4fARB(chroma_color_location, chroma_color[0], chroma_color[1], chroma_color[2], chroma_color[3]); + grDisplayGLError("grChromakeyValue"); } static void setPattern() @@ -1667,6 +1696,8 @@ static void setPattern() glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glDisable(GL_TEXTURE_2D); + + grDisplayGLError("setPattern"); } FX_ENTRY void FX_CALL @@ -1704,7 +1735,9 @@ grStippleMode( GrStippleMode_t mode ) default: display_warning("grStippleMode:%x", mode); } + need_to_compile = 1; + grDisplayGLError("grStippleMode"); } FX_ENTRY void FX_CALL @@ -2748,4 +2781,5 @@ grConstantColorValueExt(GrChipID_t tmu, ccolor1_location = glGetUniformLocationARB(program_object, "ccolor1"); glUniform4fARB(ccolor1_location, ccolor1[0], ccolor1[1], ccolor1[2], ccolor1[3]); } + grDisplayGLError("grConstantColorValueExt"); } diff --git a/Source/Glitch64/geometry.cpp b/Source/Glitch64/geometry.cpp index adfcc52b7..3bfbb28ca 100644 --- a/Source/Glitch64/geometry.cpp +++ b/Source/Glitch64/geometry.cpp @@ -55,6 +55,7 @@ void init_geometry() glDisable(GL_CULL_FACE); glDisable(GL_DEPTH_TEST); + grDisplayGLError("init_geometry"); } FX_ENTRY void FX_CALL @@ -141,6 +142,7 @@ grCullMode( GrCullMode_t mode ) default: display_warning("unknown cull mode : %x", mode); } + grDisplayGLError("grCullMode"); } // Depth buffer @@ -168,6 +170,7 @@ grDepthBufferMode( GrDepthBufferMode_t mode ) default: display_warning("unknown depth buffer mode : %x", mode); } + grDisplayGLError("grDepthBufferMode"); } FX_ENTRY void FX_CALL @@ -216,6 +219,7 @@ grDepthBufferFunction( GrCmpFnc_t function ) default: display_warning("unknown depth buffer function : %x", function); } + grDisplayGLError("grDepthBufferFunction"); } FX_ENTRY void FX_CALL @@ -223,6 +227,7 @@ grDepthMask( FxBool mask ) { LOG("grDepthMask(%d)\r\n", mask); glDepthMask((GLboolean)mask); + grDisplayGLError("grDepthMask"); } float biasFactor = 0; @@ -282,6 +287,7 @@ void FindBestDepthBias() } //printf(" --> bias factor %g\n", biasFactor); glPopAttrib(); + grDisplayGLError("FindBestDepthBias"); } FX_ENTRY void FX_CALL @@ -301,6 +307,7 @@ grDepthBiasLevel( FxI32 level ) glPolygonOffset(0,0); glDisable(GL_POLYGON_OFFSET_FILL); } + grDisplayGLError("grDepthBiasLevel"); } // draw @@ -439,6 +446,7 @@ grDrawTriangle( const void *a, const void *b, const void *c ) -(*c_y - (float)heighto) / (float)(height/2) / *c_q, ZCALC(*c_z ,*c_q), 1.0f / *c_q); glEnd(); + grDisplayGLError("grDrawTriangle"); } FX_ENTRY void FX_CALL @@ -496,6 +504,7 @@ grDrawPoint( const void *pt ) -(*y - (float)heighto) / (float)(height/2) / *q, ZCALC(*z ,*q), 1.0f / *q); glEnd(); + grDisplayGLError("grDrawPoint"); } FX_ENTRY void FX_CALL @@ -588,6 +597,7 @@ grDrawLine( const void *a, const void *b ) -(*b_y - (float)heighto) / (float)(height/2) / *b_q, ZCALC(*b_z, *b_q), 1.0f / *b_q); glEnd(); + grDisplayGLError("grDrawLine"); } FX_ENTRY void FX_CALL @@ -659,6 +669,8 @@ grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers2) -(*y - (float)heighto) / (float)(height/2) / *q, ZCALC(*z, *q), 1.0f / *q); } glEnd(); + + grDisplayGLError("grDrawVertexArray"); } FX_ENTRY void FX_CALL @@ -735,4 +747,6 @@ grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 strid -(*y - (float)heighto) / (float)(height/2) / *q, ZCALC(*z, *q), 1.0f / *q); } glEnd(); + + grDisplayGLError("grDrawVertexArrayContiguous"); } diff --git a/Source/Glitch64/main.cpp b/Source/Glitch64/main.cpp index a53466923..7db272f07 100644 --- a/Source/Glitch64/main.cpp +++ b/Source/Glitch64/main.cpp @@ -249,6 +249,7 @@ static inline void opt_glCopyTexImage2D( GLenum target, // printf("--> %dx%d newfmt %x\n", width, height, fmt); glCopyTexImage2D(target, level, internalFormat, x, y, width, height, border); } + grDisplayGLError("opt_glCopyTexImage2D"); } #define glCopyTexImage2D opt_glCopyTexImage2D @@ -649,6 +650,7 @@ grClipWindow( FxU32 minx, FxU32 miny, FxU32 maxx, FxU32 maxy ) if (maxy < miny) maxy = miny; glScissor(minx, miny, maxx - minx, maxy - miny); glEnable(GL_SCISSOR_TEST); + grDisplayGLError("grClipWindow :: use_fbo"); return; } @@ -671,6 +673,7 @@ grClipWindow( FxU32 minx, FxU32 miny, FxU32 maxx, FxU32 maxy ) glScissor(minx, (viewport_offset)+height-maxy, maxx - minx, maxy - miny); } glEnable(GL_SCISSOR_TEST); + grDisplayGLError("grClipWindow"); } FX_ENTRY void FX_CALL @@ -678,6 +681,7 @@ grColorMask( FxBool rgb, FxBool a ) { LOG("grColorMask(%d, %d)\r\n", rgb, a); glColorMask((GLboolean)rgb, (GLboolean)rgb, (GLboolean)rgb, (GLboolean)a); + grDisplayGLError("grColorMask"); } FX_ENTRY void FX_CALL @@ -1384,6 +1388,7 @@ grSstWinOpen( ati_sucks = 0; } + grDisplayGLError("grSstWinOpen"); return 1; } @@ -1597,7 +1602,7 @@ FX_ENTRY void FX_CALL grTextureBufferExt( GrChipID_t tmu, glScissor(0, viewport_offset, width, height); - + grDisplayGLError("grTextureBufferExt :: A"); } else { if (!render_to_texture) //initialization { @@ -1651,6 +1656,7 @@ FX_ENTRY void FX_CALL grTextureBufferExt( GrChipID_t tmu, } CHECK_FRAMEBUFFER_STATUS(); curBufferAddr = pBufferAddress; + grDisplayGLError("grTextureBufferExt :: C"); return; } else //create new FBO at the same address, delete old one @@ -1695,6 +1701,7 @@ FX_ENTRY void FX_CALL grTextureBufferExt( GrChipID_t tmu, CHECK_FRAMEBUFFER_STATUS(); curBufferAddr = pBufferAddress; nb_fb++; + grDisplayGLError("grTextureBufferExt :: B"); } } @@ -2052,6 +2059,7 @@ static void render_rectangle(int texture_number, glEnable(GL_DEPTH_TEST); glEnable(GL_BLEND); + grDisplayGLError("render_rectangle"); } void reloadTexture() @@ -2081,6 +2089,7 @@ void reloadTexture() width, height, -1); glBindTexture(GL_TEXTURE_2D, default_texture); glPopAttrib(); + grDisplayGLError("reloadTexture"); } void updateTexture() @@ -2112,6 +2121,7 @@ void updateTexture() glBindTexture(GL_TEXTURE_2D, default_texture); glPopAttrib(); } + grDisplayGLError("updateTexture"); } FX_ENTRY void FX_CALL grFramebufferCopyExt(int /*x*/, int /*y*/, int /*w*/, int /*h*/, @@ -2135,6 +2145,7 @@ FX_ENTRY void FX_CALL grFramebufferCopyExt(int /*x*/, int /*y*/, int /*w*/, int glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, 0, viewport_offset, tw, th, 0); glBindTexture(GL_TEXTURE_2D, default_texture); + grDisplayGLError("grFramebufferCopyExt :: A"); return; } if (from == GR_FBCOPY_BUFFER_FRONT && to == GR_FBCOPY_BUFFER_BACK) { @@ -2156,6 +2167,7 @@ FX_ENTRY void FX_CALL grFramebufferCopyExt(int /*x*/, int /*y*/, int /*w*/, int glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); glBindTexture(GL_TEXTURE_2D, default_texture); glPopAttrib(); + grDisplayGLError("grFramebufferCopyExt :: B"); return; } @@ -2276,6 +2288,7 @@ grRenderBuffer( GrBuffer_t buffer ) default: display_warning("grRenderBuffer : unknown buffer : %x", buffer); } + grDisplayGLError("grRenderBuffer"); } FX_ENTRY void FX_CALL @@ -2300,6 +2313,7 @@ grAuxBufferExt( GrBuffer_t buffer ) glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); need_to_compile = 1; } + grDisplayGLError("grAuxBufferExt"); } FX_ENTRY void FX_CALL @@ -2333,6 +2347,7 @@ grBufferClear( GrColor_t color, GrAlpha_t alpha, FxU32 depth ) // ZIGGY TODO check that color mask is on buffer_cleared = 1; + grDisplayGLError("grBufferClear"); } // #include @@ -2454,6 +2469,7 @@ grLfbLock( GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode, } } + grDisplayGLError("grLfbLock"); return FXTRUE; } @@ -2530,6 +2546,7 @@ grLfbReadRegion( GrBuffer_t src_buffer, free(buf); } + grDisplayGLError("grLfbReadRegion"); return FXTRUE; } @@ -2689,6 +2706,8 @@ grLfbWriteRegion( GrBuffer_t dst_buffer, } glDrawBuffer(current_buffer); glPopAttrib(); + + grDisplayGLError("grLfbWriteRegion"); return FXTRUE; } @@ -2817,12 +2836,14 @@ FX_ENTRY void FX_CALL grFinish(void) { glFinish(); + grDisplayGLError("grFinish"); } FX_ENTRY void FX_CALL grFlush(void) { glFlush(); + grDisplayGLError("grFlush"); } FX_ENTRY void FX_CALL @@ -3101,7 +3122,61 @@ void grTexChromaModeExt(GrChipID_t /*tmu*/, GrChromakeyMode_t /*mode*/) display_warning("grTexChromaRangeModeExt"); } +static const char * GL_errors[7 + 1] = { + "GL_NO_ERROR", /* "There is no current error." */ + "GL_INVALID_ENUM", /* "Invalid parameter." */ + "GL_INVALID_VALUE", /* "Invalid enum parameter value." */ + "GL_INVALID_OPERATION", /* "Illegal call." */ + "GL_STACK_OVERFLOW", + "GL_STACK_UNDERFLOW", + "GL_OUT_OF_MEMORY", /* "Unable to allocate memory." */ + "GL_UNKNOWN_ERROR" /* ??? */ +}; + +#ifndef _DEBUG +int grDisplayGLError(const char* /*unused*/) +{ + return -1; +} +#else +int grDisplayGLError(const char* message) +{ + GLenum status; + unsigned int error_index; + int failure; + + status = glGetError(); + failure = 1; + + if (status == GL_NO_ERROR) + error_index = failure = 0; + else + error_index = + (status < GL_INVALID_ENUM) /* to avoid underflow when subtracting */ + ? ( 7 ) /* our own, made-up "GL_UNKNOWN_ERROR" error */ + : (status - GL_INVALID_ENUM) + 1; + + if (error_index > 7) + error_index = 7; + +#if !0 +/* + * In most cases, we don't want to spam the screen to repeatedly say that + * there were no OpenGL errors yet, though sometimes one may need verbosity. + */ + if (failure == 0) + return (failure); +#endif + +#ifdef _WIN32 + MessageBoxA(NULL, message, GL_errors[error_index], MB_ICONERROR); +#else + fprintf(stderr, "%s\n%s\n\n", GL_errors[error_index], message); +#endif + return (failure); +} +#endif // VP debug #ifdef VPDEBUG @@ -3187,6 +3262,7 @@ void dump_stop() free(pixels); } glBindTexture(GL_TEXTURE_2D, default_texture); + grDisplayGLError("dump_stop"); } void dump_tex(int id) diff --git a/Source/Glitch64/main.h b/Source/Glitch64/main.h index b12de4401..141ca5a2e 100644 --- a/Source/Glitch64/main.h +++ b/Source/Glitch64/main.h @@ -27,6 +27,9 @@ extern wrapper_config config; // returns the bytes per pixel of a given GR texture format int grTexFormatSize(int fmt); +/* 2015.03.07 cxd4 -- regulated GL state machine debugging using glGetError */ +extern int grDisplayGLError(const char* message); + extern int packed_pixels_support; extern int ati_sucks; extern float largest_supported_anisotropy; diff --git a/Source/Glitch64/textures.cpp b/Source/Glitch64/textures.cpp index 02f90b8fc..5b56384c0 100644 --- a/Source/Glitch64/textures.cpp +++ b/Source/Glitch64/textures.cpp @@ -639,6 +639,7 @@ grTexDownloadMipMap( GrChipID_t tmu, } glBindTexture(GL_TEXTURE_2D, default_texture); + grDisplayGLError("grTexDownloadMipMap"); } int CheckTextureBufferFormat(GrChipID_t tmu, FxU32 startAddress, GrTexInfo *info ); @@ -722,6 +723,7 @@ grTexSource( GrChipID_t tmu, grAuxBufferExt(auxbuffer); oldbuffer = auxbuffer; #endif + grDisplayGLError("grTexSource"); } FX_ENTRY void FX_CALL @@ -788,6 +790,7 @@ grTexFilterMode( glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter1); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter1); } + grDisplayGLError("grTexFilterMode"); } FX_ENTRY void FX_CALL @@ -867,4 +870,5 @@ grTexClampMode( glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s1); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t1); } + grDisplayGLError("grTexClampMode"); } diff --git a/Source/Installer/Installer.iss b/Source/Installer/Installer.iss index 9a68b8d4a..b212f81fa 100644 --- a/Source/Installer/Installer.iss +++ b/Source/Installer/Installer.iss @@ -25,44 +25,14 @@ Filename: "{app}\Project64.exe"; Description: "{cm:LaunchProgram,{#StringChange( [Files] Source: "{#BaseDir}\Bin\{#Configuration}\Project64.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "{#BaseDir}\Config\Glide64.rdb"; DestDir: "{app}\Config" Source: "{#BaseDir}\Config\Project64.cht"; DestDir: "{app}\Config" Source: "{#BaseDir}\Config\Project64.rdb"; DestDir: "{app}\Config" Source: "{#BaseDir}\Config\Project64.rdx"; DestDir: "{app}\Config" -Source: "{#BaseDir}\Config\Glide64.rdb"; DestDir: "{app}\Config" -Source: "{#BaseDir}\Lang\Brazilian Portuguese.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Bulgarian.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Chinese (Simplified).pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Chinese (Taiwan).pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Chinese (Traditional).pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\ChineseB5.pj.lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\ChineseGB.pj.lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Czech.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Danish.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Dutch.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\English.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\English_alternative.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Finnish.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\French.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\German.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\German_int.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\German_localised.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Greek.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Hungarian.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Italian.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Italian_alternative.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Japanese.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Lithuanian.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Norwegian.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Polish.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Russian.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Spanish.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Swedish.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\T-Chinese.pj.Lang"; DestDir: "{app}\Lang" -Source: "{#BaseDir}\Lang\Ukrainian.pj.Lang"; DestDir: "{app}\Lang" +Source: "{#BaseDir}\Lang\*.pj.Lang"; DestDir: "{app}\Lang" Source: "{#BaseDir}\Plugin\Audio\Jabo_Dsound.dll"; DestDir: "{app}\Plugin\Audio" Source: "{#BaseDir}\Plugin\GFX\Jabo_Direct3D8.dll"; DestDir: "{app}\Plugin\GFX" Source: "{#BaseDir}\Plugin\GFX\PJ64Glide64.dll"; DestDir: "{app}\Plugin\GFX" -Source: "{#BaseDir}\Plugin\Input\Jabo_DInput.dll"; DestDir: "{app}\Plugin\Input" Source: "{#BaseDir}\Plugin\Input\PJ64_NRage.dll"; DestDir: "{app}\Plugin\Input" Source: "{#BaseDir}\Plugin\RSP\RSP 1.7.dll"; DestDir: "{app}\Plugin\RSP" diff --git a/Source/Installer/Installer.vcxproj b/Source/Installer/Installer.vcxproj index ef90d088b..e6e7b267b 100644 --- a/Source/Installer/Installer.vcxproj +++ b/Source/Installer/Installer.vcxproj @@ -22,7 +22,7 @@ StaticLibrary - v120 + v120_xp diff --git a/Source/Installer/package_zip.bat b/Source/Installer/package_zip.bat index d300794cf..c1a2e3dd6 100644 --- a/Source/Installer/package_zip.bat +++ b/Source/Installer/package_zip.bat @@ -5,52 +5,22 @@ cd /d %~dp0..\..\ SET base_dir=%cd% cd /d %current_dir% -mkdir "%base_dir%\Bin\Package" -mkdir "%base_dir%\Bin\Package\Config" -mkdir "%base_dir%\Bin\Package\Lang" -mkdir "%base_dir%\Bin\Package\Plugin" -mkdir "%base_dir%\Bin\Package\Plugin\Audio" -mkdir "%base_dir%\Bin\Package\Plugin\GFX" -mkdir "%base_dir%\Bin\Package\Plugin\Input" -mkdir "%base_dir%\Bin\Package\Plugin\RSP" +rd "%base_dir%\Bin\Package" /Q /S > NUL 2>&1 +md "%base_dir%\Bin\Package" +md "%base_dir%\Bin\Package\Config" +md "%base_dir%\Bin\Package\Lang" +md "%base_dir%\Bin\Package\Plugin" +md "%base_dir%\Bin\Package\Plugin\Audio" +md "%base_dir%\Bin\Package\Plugin\GFX" +md "%base_dir%\Bin\Package\Plugin\Input" +md "%base_dir%\Bin\Package\Plugin\RSP" copy "%base_dir%\Bin\Release\Project64.exe" "%base_dir%\Bin\Package" -copy "%base_dir%\Docs\Release Docs\PJgameFAQ.chm" "%base_dir%\Bin\Package" -copy "%base_dir%\Docs\Release Docs\Project64.chm" "%base_dir%\Bin\Package" +copy "%base_dir%\Config\Glide64.rdb" "%base_dir%\Bin\Package\Config" copy "%base_dir%\Config\Project64.cht" "%base_dir%\Bin\Package\Config" copy "%base_dir%\Config\Project64.rdb" "%base_dir%\Bin\Package\Config" copy "%base_dir%\Config\Project64.rdx" "%base_dir%\Bin\Package\Config" -copy "%base_dir%\Config\Glide64.rdb" "%base_dir%\Bin\Package\Config" -copy "%base_dir%\Lang\Brazilian Portuguese.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Bulgarian.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Chinese (Simplified).pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Chinese (Taiwan).pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Chinese (Traditional).pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\ChineseB5.pj.lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\ChineseGB.pj.lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Czech.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Danish.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Dutch.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\English.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\English_alternative.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Finnish.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\French.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\German.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\German_int.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\German_localised.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Greek.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Hungarian.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Italian.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Italian_alternative.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Japanese.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Lithuanian.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Norwegian.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Polish.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Russian.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Spanish.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Swedish.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\T-Chinese.pj.Lang" "%base_dir%\Bin\Package\Lang" -copy "%base_dir%\Lang\Ukrainian.pj.Lang" "%base_dir%\Bin\Package\Lang" +copy "%base_dir%\Lang\*.pj.Lang" "%base_dir%\Bin\Package\Lang" copy "%base_dir%\Plugin\Audio\Jabo_Dsound.dll" "%base_dir%\Bin\Package\Plugin\Audio" copy "%base_dir%\Plugin\GFX\Jabo_Direct3D8.dll" "%base_dir%\Bin\Package\Plugin\GFX" copy "%base_dir%\Plugin\GFX\PJ64Glide64.dll" "%base_dir%\Bin\Package\Plugin\GFX" diff --git a/Source/Project64/3rd Party/7zip.cpp b/Source/Project64/3rd Party/7zip.cpp index 81d7782a7..0af7bd659 100644 --- a/Source/Project64/3rd Party/7zip.cpp +++ b/Source/Project64/3rd Party/7zip.cpp @@ -126,9 +126,9 @@ bool C7zip::GetFile(int index, Byte * Data, size_t DataLen ) size_t offset; size_t outSizeProcessed; - char Msg[200]; - std::string FileName = FileNameIndex(index); - sprintf(Msg,"Getting %s",FileName.c_str()); + wchar_t Msg[200]; + std::wstring FileName = FileNameIndex(index); + _snwprintf(Msg, sizeof(Msg) / sizeof(Msg[0]), L"extracting %s", FileName.c_str()); m_NotfyCallback(Msg,m_NotfyCallbackInfo); SRes res = SzArEx_Extract(m_db, &m_archiveLookStream.s, index, @@ -146,7 +146,7 @@ bool C7zip::GetFile(int index, Byte * Data, size_t DataLen ) outSizeProcessed = DataLen; } memcpy(Data,m_outBuffer + offset,outSizeProcessed); - m_NotfyCallback("",m_NotfyCallbackInfo); + m_NotfyCallback(L"",m_NotfyCallbackInfo); m_CurrentFile = -1; return true; } @@ -222,10 +222,9 @@ const char * C7zip::FileName ( char * FileName, int SizeOfFileName ) const return FileName; } -std::string C7zip::FileNameIndex (int index) +std::wstring C7zip::FileNameIndex (int index) { - std::string filename; - + std::wstring filename; if (m_db == NULL || m_db->FileNameOffsets == 0) { /* no filename */ @@ -237,20 +236,7 @@ std::string C7zip::FileNameIndex (int index) /* no filename */ return filename; } - std::wstring filename_utf16; - filename_utf16.resize(namelen); - - SzArEx_GetFileNameUtf16(m_db, index, (UInt16 *)filename_utf16.c_str()); - namelen = WideCharToMultiByte(CP_UTF8, 0, filename_utf16.c_str(), -1, NULL, 0, NULL, NULL); - if (namelen == 0) - { - /* no filename */ - return filename; - } filename.resize(namelen); - if (WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)filename_utf16.c_str(), -1, (LPSTR)filename.c_str(), namelen, NULL, NULL) == 0) - { - filename.clear(); - } + SzArEx_GetFileNameUtf16(m_db, index, (UInt16 *)filename.c_str()); return filename; } diff --git a/Source/Project64/3rd Party/7zip.h b/Source/Project64/3rd Party/7zip.h index 4b79aa5cc..7a5b1d820 100644 --- a/Source/Project64/3rd Party/7zip.h +++ b/Source/Project64/3rd Party/7zip.h @@ -22,7 +22,7 @@ public: C7zip (LPCSTR FileName); ~C7zip (); - typedef void (__stdcall *LP7ZNOTIFICATION)( LPCSTR Status, void * CBInfo ); + typedef void (__stdcall *LP7ZNOTIFICATION)( LPCWSTR Status, void * CBInfo ); inline int NumFiles ( void ) const { return m_db ? m_db->db.NumFiles : 0; } inline CSzFileItem * FileItem ( int index ) const { return m_db ? &m_db->db.Files[index] : NULL; } @@ -31,7 +31,7 @@ public: bool GetFile ( int index, Byte * Data, size_t DataLen ); const char * FileName ( char * FileName, int SizeOfFileName ) const; - std::string FileNameIndex (int index); + std::wstring FileNameIndex (int index); void SetNotificationCallback (LP7ZNOTIFICATION NotfyFnc, void * CBInfo); @@ -69,7 +69,7 @@ private: //static void __stdcall StatusUpdate(_7Z_STATUS status, int Value1, int Value2, C7zip * _this); - static void __stdcall NotfyCallbackDefault ( LPCSTR /*Status*/, void * /*CBInfo*/ ) { } + static void __stdcall NotfyCallbackDefault ( LPCWSTR /*Status*/, void * /*CBInfo*/ ) { } LP7ZNOTIFICATION m_NotfyCallback; void * m_NotfyCallbackInfo; diff --git a/Source/Project64/Multilanguage.h b/Source/Project64/Multilanguage.h index 1e5c5f4ab..d0cf68ff3 100644 --- a/Source/Project64/Multilanguage.h +++ b/Source/Project64/Multilanguage.h @@ -260,6 +260,7 @@ enum LanguageStringID{ OPTION_DISABLE_SS =464, OPTION_DISPLAY_FR =465, OPTION_CHANGE_FR =466, + OPTION_CHECK_RUNNING =467, //Rom Browser Tab RB_MAX_ROMS = 480, @@ -295,6 +296,7 @@ enum LanguageStringID{ //Rom Options ROM_CPU_STYLE = 520, + ROM_VIREFRESH = 521, ROM_MEM_SIZE = 522, ROM_ABL = 523, ROM_SAVE_TYPE = 524, @@ -303,13 +305,16 @@ enum LanguageStringID{ ROM_USE_TLB = 527, ROM_REG_CACHE = 528, ROM_DELAY_SI = 529, - ROM_SP_HACK = 530, + ROM_FAST_SP = 530, ROM_DEFAULT = 531, ROM_AUDIO_SIGNAL = 532, ROM_FIXED_AUDIO = 533, ROM_FUNC_FIND = 534, ROM_CUSTOM_SMM = 535, ROM_SYNC_AUDIO = 536, + ROM_COUNTPERBYTE = 537, + ROM_32BIT = 538, + ROM_DELAY_DP = 539, //Core Styles CORE_INTERPTER = 540, @@ -317,18 +322,18 @@ enum LanguageStringID{ CORE_SYNC = 542, //Self Mod Methods - SMCM_NONE = 560, - SMCM_CACHE = 561, - SMCM_PROECTED = 562, - SMCM_CHECK_MEM = 563, - SMCM_CHANGE_MEM = 564, - SMCM_CHECK_ADV = 565, - SMCM_CACHE2 = 566, + SMCM_NONE = 560, + SMCM_CACHE = 561, + SMCM_PROECTED = 562, + SMCM_CHECK_MEM = 563, + SMCM_CHANGE_MEM = 564, + SMCM_CHECK_ADV = 565, + SMCM_CACHE2 = 566, //Function Lookup memthod - FLM_PLOOKUP = 570, - FLM_VLOOKUP = 571, - FLM_CHANGEMEM = 572, + FLM_PLOOKUP = 570, + FLM_VLOOKUP = 571, + FLM_CHANGEMEM = 572, //RDRAM Size RDRAM_4MB = 580, @@ -366,6 +371,7 @@ enum LanguageStringID{ ACCEL_CPUSTATE_2 = 689, ACCEL_CPUSTATE_3 = 690, ACCEL_CPUSTATE_4 = 691, + ACCEL_DETECTKEY = 692, // Frame Rate Option STR_FR_VIS = 700, @@ -376,6 +382,12 @@ enum LanguageStringID{ STR_INSREASE_SPEED = 710, STR_DECREASE_SPEED = 711, +//Bottom page buttons + BOTTOM_RESET_PAGE = 720, + BOTTOM_RESET_ALL = 721, + BOTTOM_APPLY = 722, + BOTTOM_CLOSE = 723, + /********************************************************************************* * ROM Information * *********************************************************************************/ diff --git a/Source/Project64/Multilanguage/Language Class.cpp b/Source/Project64/Multilanguage/Language Class.cpp index d4bf45f2d..aced43e29 100644 --- a/Source/Project64/Multilanguage/Language Class.cpp +++ b/Source/Project64/Multilanguage/Language Class.cpp @@ -34,11 +34,11 @@ void CLanguage::LoadDefaultStrings (void) DEF_STR(INI_DATE, L"Date" ); DEF_STR(INI_HOMEPAGE, L"Visit Home Page" ); DEF_STR(INI_CURRENT_RDB, L"ROM Database (.RDB)" ); - DEF_STR(INI_CURRENT_CHT, L"Cheat Code file (.CHT)" ); - DEF_STR(INI_CURRENT_RDX, L"Extended Rom Info (.RDX)"); + DEF_STR(INI_CURRENT_CHT, L"Cheat Code File (.CHT)" ); + DEF_STR(INI_CURRENT_RDX, L"Extended ROM Info (.RDX)"); //About INI title - DEF_STR(INI_TITLE, L"About INI Files" ); + DEF_STR(INI_TITLE, L"About Config Files" ); /********************************************************************************* * Numbers * @@ -59,14 +59,14 @@ void CLanguage::LoadDefaultStrings (void) *********************************************************************************/ //File Menu DEF_STR(MENU_FILE, L"&File" ); - DEF_STR(MENU_OPEN, L"&Open Rom" ); - DEF_STR(MENU_ROM_INFO, L"Rom &Info...." ); + DEF_STR(MENU_OPEN, L"&Open ROM" ); + DEF_STR(MENU_ROM_INFO, L"ROM &Info...." ); DEF_STR(MENU_START, L"Start Emulation" ); DEF_STR(MENU_END, L"&End Emulation" ); - DEF_STR(MENU_CHOOSE_ROM, L"Choose Rom Directory..." ); - DEF_STR(MENU_REFRESH, L"Refresh Rom List" ); - DEF_STR(MENU_RECENT_ROM, L"Recent Rom" ); - DEF_STR(MENU_RECENT_DIR, L"Recent Rom Directories" ); + DEF_STR(MENU_CHOOSE_ROM, L"Choose ROM Directory..." ); + DEF_STR(MENU_REFRESH, L"Refresh ROM List" ); + DEF_STR(MENU_RECENT_ROM, L"Recent ROM" ); + DEF_STR(MENU_RECENT_DIR, L"Recent ROM Directories" ); DEF_STR(MENU_EXIT, L"E&xit" ); //System Menu @@ -75,9 +75,9 @@ void CLanguage::LoadDefaultStrings (void) DEF_STR(MENU_PAUSE, L"&Pause" ); DEF_STR(MENU_BITMAP, L"Generate Bitmap" ); DEF_STR(MENU_LIMIT_FPS, L"Limit FPS" ); - DEF_STR(MENU_SAVE, L"&Save" ); + DEF_STR(MENU_SAVE, L"&Save State" ); DEF_STR(MENU_SAVE_AS, L"Save As..." ); - DEF_STR(MENU_RESTORE, L"&Restore" ); + DEF_STR(MENU_RESTORE, L"&Load State" ); DEF_STR(MENU_LOAD, L"Load..." ); DEF_STR(MENU_CURRENT_SAVE,L"Current Save S&tate" ); DEF_STR(MENU_CHEAT, L"Cheats..." ); @@ -89,12 +89,12 @@ void CLanguage::LoadDefaultStrings (void) //Options Menu DEF_STR(MENU_OPTIONS, L"&Options" ); DEF_STR(MENU_FULL_SCREEN, L"&Full Screen" ); - DEF_STR(MENU_ON_TOP, L"&Always On &Top" ); + DEF_STR(MENU_ON_TOP, L"&Always on &Top" ); DEF_STR(MENU_CONFG_GFX, L"Configure Graphics Plugin..." ); DEF_STR(MENU_CONFG_AUDIO, L"Configure Audio Plugin..." ); DEF_STR(MENU_CONFG_CTRL, L"Configure Controller Plugin..." ); DEF_STR(MENU_CONFG_RSP, L"Configure RSP Plugin..." ); - DEF_STR(MENU_SHOW_CPU, L"Show CPU usage %" ); + DEF_STR(MENU_SHOW_CPU, L"Show CPU Usage" ); DEF_STR(MENU_SETTINGS, L"&Settings..." ); //Debugger Menu @@ -105,8 +105,8 @@ void CLanguage::LoadDefaultStrings (void) //Help Menu DEF_STR(MENU_HELP, L"&Help" ); - DEF_STR(MENU_ABOUT_INI, L"About &INI Files" ); - DEF_STR(MENU_ABOUT_PJ64, L"&About Project 64" ); + DEF_STR(MENU_ABOUT_INI, L"About Conf&ig Files" ); + DEF_STR(MENU_ABOUT_PJ64, L"&About Project64" ); DEF_STR(MENU_FORUM, L"Support &Forum" ); DEF_STR(MENU_HOMEPAGE, L"&Homepage" ); @@ -125,10 +125,10 @@ void CLanguage::LoadDefaultStrings (void) //Pop up Menu DEF_STR(POPUP_PLAY, L"Play Game" ); - DEF_STR(POPUP_INFO, L"Rom Information" ); + DEF_STR(POPUP_INFO, L"ROM Information" ); DEF_STR(POPUP_SETTINGS, L"Edit Game Settings" ); DEF_STR(POPUP_CHEATS, L"Edit Cheats" ); - DEF_STR(POPUP_GFX_PLUGIN,L"GFX Plugin" ); + DEF_STR(POPUP_GFX_PLUGIN,L"Graphics Plugin" ); //Alternate Name to save Slot DEF_STR(SAVE_SLOT_DEFAULT,L"Save Slot - Default" ); @@ -144,17 +144,17 @@ void CLanguage::LoadDefaultStrings (void) DEF_STR(SAVE_SLOT_10, L"Save Slot - 10" ); /********************************************************************************* -* Rom Browser * +* ROM Browser * *********************************************************************************/ -//Rom Browser Fields +//ROM Browser Fields DEF_STR(RB_FILENAME, L"File Name" ); DEF_STR(RB_INTERNALNAME, L"Internal Name" ); DEF_STR(RB_GOODNAME, L"Good Name" ); DEF_STR(RB_STATUS, L"Status" ); - DEF_STR(RB_ROMSIZE, L"Rom Size" ); - DEF_STR(RB_NOTES_CORE, L"Notes (Core)" ); + DEF_STR(RB_ROMSIZE, L"ROM Size" ); + DEF_STR(RB_NOTES_CORE, L"Notes (core)" ); DEF_STR(RB_NOTES_PLUGIN, L"Notes (default plugins)" ); - DEF_STR(RB_NOTES_USER, L"Notes (User)" ); + DEF_STR(RB_NOTES_USER, L"Notes (user)" ); DEF_STR(RB_CART_ID, L"Cartridge ID" ); DEF_STR(RB_MANUFACTUER, L"Manufacturer" ); DEF_STR(RB_COUNTRY, L"Country" ); @@ -168,11 +168,11 @@ void CLanguage::LoadDefaultStrings (void) DEF_STR(RB_FORCE_FEEDBACK,L"Force Feedback" ); DEF_STR(RB_FILE_FORMAT, L"File Format" ); -//Select Rom - DEF_STR(SELECT_ROM_DIR, L"Select current Rom Directory" ); +//Select ROM + DEF_STR(SELECT_ROM_DIR, L"Select current ROM directory" ); //Messages - DEF_STR(RB_NOT_GOOD_FILE,L"Bad ROM? Use GoodN64 & check for updated INI" ); + DEF_STR(RB_NOT_GOOD_FILE,L"Bad ROM? Use GoodN64 & check for updated RDB" ); /********************************************************************************* * Options * @@ -184,7 +184,7 @@ void CLanguage::LoadDefaultStrings (void) DEF_STR(TAB_PLUGIN, L"Plugins"); DEF_STR(TAB_DIRECTORY, L"Directories"); DEF_STR(TAB_OPTIONS, L"Options"); - DEF_STR(TAB_ROMSELECTION,L"Rom Selection"); + DEF_STR(TAB_ROMSELECTION,L"ROM Selection"); DEF_STR(TAB_ADVANCED, L"Advanced"); DEF_STR(TAB_ROMSETTINGS, L"General Settings"); DEF_STR(TAB_SHELLINTERGATION,L"Shell Integration"); @@ -195,45 +195,46 @@ void CLanguage::LoadDefaultStrings (void) //Plugin Dialog DEF_STR(PLUG_ABOUT, L"About"); - DEF_STR(PLUG_RSP, L" RSP (reality signal processor) plugin: "); + DEF_STR(PLUG_RSP, L" RSP (Reality Signal Processor) plugin: "); DEF_STR(PLUG_GFX, L" Video (graphics) plugin: "); DEF_STR(PLUG_AUDIO, L" Audio (sound) plugin: "); DEF_STR(PLUG_CTRL, L" Input (controller) plugin: "); - DEF_STR(PLUG_HLE_GFX, L"Use High Level GFX?"); - DEF_STR(PLUG_HLE_AUDIO,L"Use High Level Audio?"); + DEF_STR(PLUG_HLE_GFX, L"Graphics HLE"); + DEF_STR(PLUG_HLE_AUDIO,L"Audio HLE"); DEF_STR(PLUG_DEFAULT, L"** Use System Plugin **"); //Directory Dialog - DEF_STR(DIR_PLUGIN, L" Plugin Directoy: "); - DEF_STR(DIR_ROM, L" Rom Directory: "); - DEF_STR(DIR_AUTO_SAVE, L" N64 Auto saves: "); - DEF_STR(DIR_INSTANT_SAVE, L" Instant saves: "); - DEF_STR(DIR_SCREEN_SHOT, L" Screen Shots: "); - DEF_STR(DIR_ROM_DEFAULT, L"Last folder that a rom was open from."); + DEF_STR(DIR_PLUGIN, L" Plugin directory: "); + DEF_STR(DIR_ROM, L" ROM directory: "); + DEF_STR(DIR_AUTO_SAVE, L" N64 native saves directory: "); + DEF_STR(DIR_INSTANT_SAVE, L" Saved states directory: "); + DEF_STR(DIR_SCREEN_SHOT, L" Screenshot directory: "); + DEF_STR(DIR_ROM_DEFAULT, L"Last folder that a ROM was open from"); DEF_STR(DIR_SELECT_PLUGIN, L"Select plugin directory"); - DEF_STR(DIR_SELECT_ROM, L"Select rom directory"); - DEF_STR(DIR_SELECT_AUTO, L"Select automatic save directory"); - DEF_STR(DIR_SELECT_INSTANT,L"Select instant save directory"); - DEF_STR(DIR_SELECT_SCREEN, L"Select snap shot directory"); - DEF_STR(DIR_TEXTURE, L" Texture Directory: "); + DEF_STR(DIR_SELECT_ROM, L"Select ROM directory"); + DEF_STR(DIR_SELECT_AUTO, L"Select N64 native saves directory"); + DEF_STR(DIR_SELECT_INSTANT,L"Select saved states directory"); + DEF_STR(DIR_SELECT_SCREEN, L"Select screenshot directory"); + DEF_STR(DIR_TEXTURE, L" Texture pack directory: "); DEF_STR(DIR_SELECT_TEXTURE, L"Select texture pack directory"); //Options (general) Tab - DEF_STR(OPTION_AUTO_SLEEP, L"Pause emulation when window is not active?"); - DEF_STR(OPTION_AUTO_FULLSCREEN, L"On loading a ROM go to full screen"); - DEF_STR(OPTION_BASIC_MODE, L"Hide Advanced Settings"); + DEF_STR(OPTION_AUTO_SLEEP, L"Pause emulation when window is not active"); + DEF_STR(OPTION_AUTO_FULLSCREEN, L"Enter full-screen mode when loading a ROM"); + DEF_STR(OPTION_BASIC_MODE, L"Hide advanced settings"); DEF_STR(OPTION_REMEMBER_CHEAT, L"Remember selected cheats"); - DEF_STR(OPTION_DISABLE_SS, L"Disable Screen Saver when running rom"); - DEF_STR(OPTION_DISPLAY_FR, L"Display Frame Rate"); - DEF_STR(OPTION_CHANGE_FR, L"Change Frame Rate Display Type"); + DEF_STR(OPTION_DISABLE_SS, L"Disable screen saver when running a ROM"); + DEF_STR(OPTION_DISPLAY_FR, L"Display speed"); + DEF_STR(OPTION_CHECK_RUNNING, L"Check if Project64 is already running"); + DEF_STR(OPTION_CHANGE_FR, L"Speed display:"); -//Rom Browser Tab - DEF_STR(RB_MAX_ROMS, L"Max # of Roms Remembered (Max 10):"); - DEF_STR(RB_ROMS, L"roms"); - DEF_STR(RB_MAX_DIRS, L"Max # of Rom Dirs Remembered (Max 10):"); +//ROM Browser Tab + DEF_STR(RB_MAX_ROMS, L"Max # of ROMs remembered (0-10):"); + DEF_STR(RB_ROMS, L"ROMs"); + DEF_STR(RB_MAX_DIRS, L"Max # of ROM dirs remembered (0-10):"); DEF_STR(RB_DIRS, L"dirs"); - DEF_STR(RB_USE, L"Use Rom Browser"); - DEF_STR(RB_DIR_RECURSION, L"Use Directory recursion"); + DEF_STR(RB_USE, L"Use ROM browser"); + DEF_STR(RB_DIR_RECURSION, L"Use directory recursion"); DEF_STR(RB_AVALIABLE_FIELDS, L"Available fields:"); DEF_STR(RB_SHOW_FIELDS, L"Show fields in this order:"); DEF_STR(RB_ADD, L"Add ->"); @@ -243,58 +244,62 @@ void CLanguage::LoadDefaultStrings (void) DEF_STR(RB_REFRESH, L"Automatically refresh browser"); //Advanced Options - DEF_STR(ADVANCE_INFO, L"Most of these changes will not take effect till a new rom is opened or current rom is reset."); + DEF_STR(ADVANCE_INFO, L"Most of these changes will not take effect until a new ROM is opened or current ROM is reset."); DEF_STR(ADVANCE_DEFAULTS, L"Core Defaults"); DEF_STR(ADVANCE_CPU_STYLE, L"CPU core style:"); - DEF_STR(ADVANCE_SMCM, L"Self-mod code method:"); - DEF_STR(ADVANCE_MEM_SIZE, L"Default Memory Size:"); - DEF_STR(ADVANCE_ABL, L"Advanced Block Linking:"); - DEF_STR(ADVANCE_AUTO_START, L"Start Emulation when rom is opened?"); - DEF_STR(ADVANCE_OVERWRITE, L"Always overwrite default settings with ones from ini?"); - DEF_STR(ADVANCE_COMPRESS, L"Automatically compress instant saves"); - DEF_STR(ADVANCE_DEBUGGER, L"Enable Debugger"); + DEF_STR(ADVANCE_SMCM, L"Self-mod methods:"); + DEF_STR(ADVANCE_MEM_SIZE, L"Default memory size:"); + DEF_STR(ADVANCE_ABL, L"Advanced block linking"); + DEF_STR(ADVANCE_AUTO_START, L"Start emulation when ROM is opened"); + DEF_STR(ADVANCE_OVERWRITE, L"Always override default settings with ones from RDB"); + DEF_STR(ADVANCE_COMPRESS, L"Automatically compress saved states"); + DEF_STR(ADVANCE_DEBUGGER, L"Enable debugger"); DEF_STR(ADVANCE_SMM_CACHE, L"Cache"); DEF_STR(ADVANCE_SMM_PIDMA, L"PI DMA"); - DEF_STR(ADVANCE_SMM_VALIDATE,L"Start Changed"); - DEF_STR(ADVANCE_SMM_PROTECT, L"Protect Memory"); - DEF_STR(ADVANCE_SMM_TLB, L"TLB Unmapping"); + DEF_STR(ADVANCE_SMM_VALIDATE,L"Start changed"); + DEF_STR(ADVANCE_SMM_PROTECT, L"Protect memory"); + DEF_STR(ADVANCE_SMM_TLB, L"TLB unmapping"); -//Rom Options +//ROM Options DEF_STR(ROM_CPU_STYLE, L"CPU core style:"); - DEF_STR(ROM_MEM_SIZE, L"Memory Size:"); - DEF_STR(ROM_ABL, L"Advanced Block Linking:"); - DEF_STR(ROM_SAVE_TYPE, L"Default Save type:"); - DEF_STR(ROM_COUNTER_FACTOR, L"Counter Factor:"); - DEF_STR(ROM_LARGE_BUFFER, L"Larger Compile Buffer"); + DEF_STR(ROM_VIREFRESH, L"VI refresh rate:"); + DEF_STR(ROM_MEM_SIZE, L"Memory size:"); + DEF_STR(ROM_ABL, L"Advanced block linking"); + DEF_STR(ROM_SAVE_TYPE, L"Default save type:"); + DEF_STR(ROM_COUNTER_FACTOR, L"Counter factor:"); + DEF_STR(ROM_LARGE_BUFFER, L"Larger compile buffer"); DEF_STR(ROM_USE_TLB, L"Use TLB"); DEF_STR(ROM_REG_CACHE, L"Register caching"); - DEF_STR(ROM_DELAY_SI, L"Delay SI Interrupt"); - DEF_STR(ROM_SP_HACK, L"SP Hack"); + DEF_STR(ROM_DELAY_SI, L"Delay SI interrupt"); + DEF_STR(ROM_FAST_SP, L"Fast SP"); DEF_STR(ROM_DEFAULT, L"Default"); - DEF_STR(ROM_AUDIO_SIGNAL, L"RSP Audio Signal"); - DEF_STR(ROM_FIXED_AUDIO, L"Fixed Audio Timing"); + DEF_STR(ROM_AUDIO_SIGNAL, L"RSP audio signal"); + DEF_STR(ROM_FIXED_AUDIO, L"Fixed audio timing"); DEF_STR(ROM_FUNC_FIND, L"Function lookup method:"); - DEF_STR(ROM_CUSTOM_SMM, L"Custom Self Mod Method"); - DEF_STR(ROM_SYNC_AUDIO, L"Sync using Audio"); + DEF_STR(ROM_CUSTOM_SMM, L"Custom self mod Method"); + DEF_STR(ROM_SYNC_AUDIO, L"Sync using audio"); + DEF_STR(ROM_COUNTPERBYTE, L"AI count per byte:"); + DEF_STR(ROM_32BIT, L"32-bit engine:"); + DEF_STR(ROM_DELAY_DP, L"Delay DP interrupt:"); //Core Styles DEF_STR(CORE_INTERPTER, L"Interpreter"); DEF_STR(CORE_RECOMPILER, L"Recompiler"); - DEF_STR(CORE_SYNC, L"Synchronise Cores"); + DEF_STR(CORE_SYNC, L"Synchronize cores"); //Self Mod Methods DEF_STR(SMCM_NONE, L"None"); DEF_STR(SMCM_CACHE, L"Cache"); - DEF_STR(SMCM_PROECTED, L"Protect Memory"); - DEF_STR(SMCM_CHECK_MEM, L"Check Memory & Cache"); - DEF_STR(SMCM_CHANGE_MEM, L"Change Memory & Cache"); - DEF_STR(SMCM_CHECK_ADV, L"Check Memory Advance"); - DEF_STR(SMCM_CACHE2, L"Clear Code on Cache"); + DEF_STR(SMCM_PROECTED, L"Protect memory"); + DEF_STR(SMCM_CHECK_MEM, L"Check memory & cache"); + DEF_STR(SMCM_CHANGE_MEM, L"Change memory & cache"); + DEF_STR(SMCM_CHECK_ADV, L"Check memory advance"); + DEF_STR(SMCM_CACHE2, L"Clear code on cache"); -//Function Lookup memthod - DEF_STR(FLM_PLOOKUP, L"Physical Lookup Table"); - DEF_STR(FLM_VLOOKUP, L"Virtual Lookup Table"); - DEF_STR(FLM_CHANGEMEM, L"Change Memory"); +//Function Lookup method + DEF_STR(FLM_PLOOKUP, L"Physical lookup table"); + DEF_STR(FLM_VLOOKUP, L"Virtual lookup table"); + DEF_STR(FLM_CHANGEMEM, L"Change memory"); //RDRAM Size DEF_STR(RDRAM_4MB, L"4 MB"); @@ -305,60 +310,67 @@ void CLanguage::LoadDefaultStrings (void) DEF_STR(ABL_OFF, L"Off"); //Save Type - DEF_STR(SAVE_FIRST_USED, L"Use First Used Save Type"); - DEF_STR(SAVE_4K_EEPROM, L"4kbit Eeprom"); - DEF_STR(SAVE_16K_EEPROM, L"16kbit Eeprom"); - DEF_STR(SAVE_SRAM, L"32kbytes SRAM"); - DEF_STR(SAVE_FLASHRAM, L"Flashram"); + DEF_STR(SAVE_FIRST_USED, L"Use first-used save type"); + DEF_STR(SAVE_4K_EEPROM, L"4-kbit EEPROM"); + DEF_STR(SAVE_16K_EEPROM, L"16-kbit EEPROM"); + DEF_STR(SAVE_SRAM, L"32-kbyte SRAM"); + DEF_STR(SAVE_FLASHRAM, L"Flash RAM"); -//Shell Intergration Tab +//Shell Integration Tab DEF_STR(SHELL_TEXT, L"File extension association:"); -//Rom Notes - DEF_STR(NOTE_STATUS, L"Rom Status:"); - DEF_STR(NOTE_CORE, L"Core Note:"); - DEF_STR(NOTE_PLUGIN, L"Plugin Note:"); +//ROM Notes + DEF_STR(NOTE_STATUS, L"ROM status:"); + DEF_STR(NOTE_CORE, L"Core note:"); + DEF_STR(NOTE_PLUGIN, L"Plugin note:"); // Accelerator Selector - DEF_STR(ACCEL_CPUSTATE_TITLE, L"CPU State:"); - DEF_STR(ACCEL_MENUITEM_TITLE, L"Menu Item:"); - DEF_STR(ACCEL_CURRENTKEYS_TITLE, L"Current Keys:"); - DEF_STR(ACCEL_SELKEY_TITLE, L"Select New Shortcut Key:"); - DEF_STR(ACCEL_ASSIGNEDTO_TITLE, L"Currently Assigned To:"); + DEF_STR(ACCEL_CPUSTATE_TITLE, L"CPU state:"); + DEF_STR(ACCEL_MENUITEM_TITLE, L"Menu item:"); + DEF_STR(ACCEL_CURRENTKEYS_TITLE, L"Current keys:"); + DEF_STR(ACCEL_SELKEY_TITLE, L"Select new shortcut key:"); + DEF_STR(ACCEL_ASSIGNEDTO_TITLE, L"Currently assigned to:"); DEF_STR(ACCEL_ASSIGN_BTN, L"Assign"); DEF_STR(ACCEL_REMOVE_BTN, L"Remove"); - DEF_STR(ACCEL_RESETALL_BTN, L"Reset All"); + DEF_STR(ACCEL_RESETALL_BTN, L"Reset all"); DEF_STR(ACCEL_CPUSTATE_1, L"Game not playing"); DEF_STR(ACCEL_CPUSTATE_2, L"Game playing"); DEF_STR(ACCEL_CPUSTATE_3, L"Game playing (windowed)"); - DEF_STR(ACCEL_CPUSTATE_4, L"Game playing (Fullscreen)"); + DEF_STR(ACCEL_CPUSTATE_4, L"Game playing (full-screen)"); + DEF_STR(ACCEL_DETECTKEY, L"Detect Key"); // Frame Rate Option - DEF_STR(STR_FR_VIS, L"Vertical Interupts per second"); - DEF_STR(STR_FR_DLS, L"Display Lists per second"); - DEF_STR(STR_FR_PERCENT, L"Percent of Speed"); + DEF_STR(STR_FR_VIS, L"Vertical interrupts per second"); + DEF_STR(STR_FR_DLS, L"Display lists per second"); + DEF_STR(STR_FR_PERCENT, L"Percentage of full speed"); // Increase speed DEF_STR(STR_INSREASE_SPEED, L"Increase Game Speed"); DEF_STR(STR_DECREASE_SPEED, L"Decrease Game Speed"); + +//Bottom page buttons + DEF_STR(BOTTOM_RESET_PAGE, L"Reset Page"); + DEF_STR(BOTTOM_RESET_ALL, L"Reset All"); + DEF_STR(BOTTOM_APPLY, L"Apply"); + DEF_STR(BOTTOM_CLOSE, L"Close"); /********************************************************************************* * ROM Information * *********************************************************************************/ -//Rom Info Title Title - DEF_STR(INFO_TITLE, L"Rom Information"); +//ROM Info Title + DEF_STR(INFO_TITLE, L"ROM Information"); -//Rom Info Text - DEF_STR(INFO_ROM_NAME_TEXT, L"ROM Name:"); - DEF_STR(INFO_FILE_NAME_TEXT, L"File Name:"); +//ROM Info Text + DEF_STR(INFO_ROM_NAME_TEXT, L"ROM name:"); + DEF_STR(INFO_FILE_NAME_TEXT, L"File name:"); DEF_STR(INFO_LOCATION_TEXT, L"Location:"); - DEF_STR(INFO_SIZE_TEXT, L"Rom Size:"); + DEF_STR(INFO_SIZE_TEXT, L"ROM size:"); DEF_STR(INFO_CART_ID_TEXT, L"Cartridge ID:"); DEF_STR(INFO_MANUFACTURER_TEXT, L"Manufacturer:"); DEF_STR(INFO_COUNTRY_TEXT, L"Country:"); DEF_STR(INFO_CRC1_TEXT, L"CRC1:"); DEF_STR(INFO_CRC2_TEXT, L"CRC2:"); - DEF_STR(INFO_CIC_CHIP_TEXT, L"CIC Chip:"); + DEF_STR(INFO_CIC_CHIP_TEXT, L"CIC chip:"); DEF_STR(INFO_MD5_TEXT, L"MD5:"); /********************************************************************************* @@ -402,17 +414,17 @@ void CLanguage::LoadDefaultStrings (void) //Edit Cheat DEF_STR(CHEAT_EDITCHEAT_WINDOW,L"Edit Cheat"); DEF_STR(CHEAT_EDITCHEAT_UPDATE,L"Update Cheat"); - DEF_STR(CHEAT_CHANGED_MSG, L"Cheat has been changed do you want to update?"); - DEF_STR(CHEAT_CHANGED_TITLE, L"Cheat Updated"); + DEF_STR(CHEAT_CHANGED_MSG, L"Cheat has been changed.\n\nDo you want to update?"); + DEF_STR(CHEAT_CHANGED_TITLE, L"Cheat updated"); //Cheat Popup Menu DEF_STR(CHEAT_ADDNEW, L"Add New Cheat..."); DEF_STR(CHEAT_EDIT, L"Edit"); DEF_STR(CHEAT_DELETE, L"Delete"); -// short cut editor - DEF_STR(STR_SHORTCUT_RESET_TITLE, L"Reset Short Cuts"); - DEF_STR(STR_SHORTCUT_RESET_TEXT, L"Are you sure you want to reset the short cuts?\n\nThis action cannot be undone."); +// short-cut editor + DEF_STR(STR_SHORTCUT_RESET_TITLE, L"Reset short-cuts"); + DEF_STR(STR_SHORTCUT_RESET_TEXT, L"Are you sure you want to reset the short-cuts?\n\nThis action cannot be undone."); DEF_STR(STR_SHORTCUT_FILEMENU, L"File Menu"); DEF_STR(STR_SHORTCUT_SYSTEMMENU, L"System Menu"); DEF_STR(STR_SHORTCUT_OPTIONS, L"Options"); @@ -422,63 +434,63 @@ void CLanguage::LoadDefaultStrings (void) * Messages * *********************************************************************************/ DEF_STR(MSG_CPU_PAUSED, L"*** CPU PAUSED ***"); - DEF_STR(MSG_CPU_RESUMED, L"CPU Resumed"); - DEF_STR(MSG_PERM_LOOP, L"In a permanent loop that cannot be exited. \nEmulation will now stop. \n\nVerify ROM and ROM Settings."); - DEF_STR(MSG_MEM_ALLOC_ERROR, L"Failed to allocate Memory"); + DEF_STR(MSG_CPU_RESUMED, L"CPU resumed"); + DEF_STR(MSG_PERM_LOOP, L"In a permanent loop that cannot be exited. \nEmulation will now stop. \n\nVerify ROM and ROM settings."); + DEF_STR(MSG_MEM_ALLOC_ERROR, L"Failed to allocate memory"); DEF_STR(MSG_FAIL_INIT_GFX, L"The default or selected video plugin is missing or invalid. \n\nYou need to go into Settings and select a video (graphics) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); DEF_STR(MSG_FAIL_INIT_AUDIO, L"The default or selected audio plugin is missing or invalid. \n\nYou need to go into Settings and select a audio (sound) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); - DEF_STR(MSG_FAIL_INIT_RSP, L"The default or selected RSP plugin is missing or invalid. \n\nYou need to go into Settings and select a RSP (reality signal processor) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); + DEF_STR(MSG_FAIL_INIT_RSP, L"The default or selected RSP plugin is missing or invalid. \n\nYou need to go into Settings and select a RSP (Reality Signal Processor) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); DEF_STR(MSG_FAIL_INIT_CONTROL, L"The default or selected input plugin is missing or invalid. \n\nYou need to go into Settings and select an input (controller) plugin.\nCheck that you have at least one compatible plugin file in your plugin folder."); DEF_STR(MSG_FAIL_LOAD_PLUGIN, L"Failed to load plugin:"); - DEF_STR(MSG_FAIL_LOAD_WORD, L"Failed to load word\n\nVerify ROM and ROM Settings."); - DEF_STR(MSG_FAIL_OPEN_SAVE, L"Failed to open Save File"); - DEF_STR(MSG_FAIL_OPEN_EEPROM, L"Failed to open Eeprom"); - DEF_STR(MSG_FAIL_OPEN_FLASH, L"Failed to open Flashram"); + DEF_STR(MSG_FAIL_LOAD_WORD, L"Failed to load word.\n\nVerify ROM and ROM settings."); + DEF_STR(MSG_FAIL_OPEN_SAVE, L"Failed to open save file"); + DEF_STR(MSG_FAIL_OPEN_EEPROM, L"Failed to open EEPROM"); + DEF_STR(MSG_FAIL_OPEN_FLASH, L"Failed to open flash RAM"); DEF_STR(MSG_FAIL_OPEN_MEMPAK, L"Failed to open mempak"); DEF_STR(MSG_FAIL_OPEN_ZIP, L"Attempt to open zip file failed. \n\nProbably a corrupt zip file - try unzipping ROM manually."); DEF_STR(MSG_FAIL_OPEN_IMAGE, L"Attempt to open file failed."); - DEF_STR(MSG_FAIL_ZIP, L"Error occured when trying to open zip file."); - DEF_STR(MSG_FAIL_IMAGE, L"File loaded does not appear to be a valid Nintendo64 ROM. \n\nVerify your ROMs with GoodN64."); + DEF_STR(MSG_FAIL_ZIP, L"Error occurred when trying to open zip file."); + DEF_STR(MSG_FAIL_IMAGE, L"File loaded does not appear to be a valid N64 ROM. \n\nVerify your ROMs with GoodN64."); DEF_STR(MSG_UNKNOWN_COUNTRY, L"Unknown country"); - DEF_STR(MSG_UNKNOWN_CIC_CHIP, L"Unknown Cic Chip"); + DEF_STR(MSG_UNKNOWN_CIC_CHIP, L"Unknown CIC chip"); DEF_STR(MSG_UNKNOWN_FILE_FORMAT,L"Unknown file format"); - DEF_STR(MSG_UNKNOWN_MEM_ACTION, L"Unknown memory action\n\nEmulation stop"); - DEF_STR(MSG_UNHANDLED_OP, L"Unhandled R4300i OpCode at"); - DEF_STR(MSG_NONMAPPED_SPACE, L"Executing from non-mapped space.\n\nVerify ROM and ROM Settings."); - DEF_STR(MSG_SAVE_STATE_HEADER, L"State save does not appear to match the running ROM. \n\nState saves must be saved & loaded between 100% identical ROMs, \nin particular the REGION and VERSION need to be the same. \nLoading this state is likely to cause the game and/or emulator to crash. \n\nAre you sure you want to continue loading?"); + DEF_STR(MSG_UNKNOWN_MEM_ACTION, L"Unknown memory action\n\nEmulation stopped"); + DEF_STR(MSG_UNHANDLED_OP, L"Unhandled R4300i opcode at"); + DEF_STR(MSG_NONMAPPED_SPACE, L"Executing from non-mapped space.\n\nVerify ROM and ROM settings."); + DEF_STR(MSG_SAVE_STATE_HEADER, L"This saved state does not appear to match the running ROM. \n\nStates must be saved & loaded between 100% identical ROMs. \nIn particular the REGION and VERSION need to be the same. \nLoading this state is likely to cause the game and/or emulator to crash. \n\nAre you sure you want to continue loading?"); DEF_STR(MSG_MSGBOX_TITLE, L"Error"); DEF_STR(MSG_PIF2_ERROR, L"Copyright sequence not found in LUT. Game will no longer function."); DEF_STR(MSG_PIF2_TITLE, L"Copy Protection Failure"); - DEF_STR(MSG_PLUGIN_CHANGE, L"Changing a plugin requires Project64 to reset a running ROM. \nIf you don't want to lose your place, answer No and make a state save first. \n\nChange plugins and restart game now?"); + DEF_STR(MSG_PLUGIN_CHANGE, L"Changing a plugin requires Project64 to reset a running ROM. \nIf you don't want to lose your place, answer No and save the current state first. \n\nChange plugins and reset ROM now?"); DEF_STR(MSG_PLUGIN_CHANGE_TITLE,L"Change Plugins"); DEF_STR(MSG_EMULATION_ENDED, L"Emulation ended"); DEF_STR(MSG_EMULATION_STARTED, L"Emulation started"); - DEF_STR(MSG_UNABLED_LOAD_STATE, L"Unable to load save state"); - DEF_STR(MSG_LOADED_STATE, L"Loaded save state"); + DEF_STR(MSG_UNABLED_LOAD_STATE, L"Unable to load state"); + DEF_STR(MSG_LOADED_STATE, L"Loaded state"); DEF_STR(MSG_SAVED_STATE, L"Saved current state to"); - DEF_STR(MSG_SAVE_SLOT, L"Save state slot"); - DEF_STR(MSG_BYTESWAP, L"Byte swapping image"); + DEF_STR(MSG_SAVE_SLOT, L"State slot"); + DEF_STR(MSG_BYTESWAP, L"Byte-swapping image"); DEF_STR(MSG_CHOOSE_IMAGE, L"Choosing N64 image"); DEF_STR(MSG_LOADED, L"Loaded"); DEF_STR(MSG_LOADING, L"Loading image"); - DEF_STR(MSG_PLUGIN_NOT_INIT, L"Cannot open a rom because plugins have not successfully initialised"); + DEF_STR(MSG_PLUGIN_NOT_INIT, L"Cannot open a ROM because plugins have not successfully initialized."); DEF_STR(MSG_DEL_SURE, L"Are you sure you really want to delete this?"); DEF_STR(MSG_DEL_TITLE, L"Delete Cheat"); - DEF_STR(MSG_CHEAT_NAME_IN_USE, L"Cheat Name is already in use"); - DEF_STR(MSG_MAX_CHEATS, L"You Have reached the Maximum amount of cheats for this rom"); - DEF_STR(MSG_PLUGIN_INIT, L"Plug-in Initializing"); - DEF_STR(MSG_NO_SHORTCUT_SEL, L"You have not selected a virtual key to assign to the menu item"); - DEF_STR(MSG_NO_MENUITEM_SEL, L"You need to select a menu item to assign this key to"); - DEF_STR(MSG_MENUITEM_ASSIGNED, L"Short cut has already been assigned to another menu item"); - DEF_STR(MSG_NO_SEL_SHORTCUT, L"No shortcut has been selected to be removed"); - DEF_STR(MSG_WAITING_FOR_START, L"Rom Loaded. Waiting for emulation to start."); - DEF_STR(MSG_INVALID_EXE, L"project64 beta is for members only.\n\nif you have an account at pj64.net, you should not be seeing this error!!\nplease contact us on the site"); + DEF_STR(MSG_CHEAT_NAME_IN_USE, L"Cheat name is already in use."); + DEF_STR(MSG_MAX_CHEATS, L"You have reached the maximum amount of cheats for this ROM."); + DEF_STR(MSG_PLUGIN_INIT, L"Plugin initializing"); + DEF_STR(MSG_NO_SHORTCUT_SEL, L"You have not selected a virtual key to assign to the menu item."); + DEF_STR(MSG_NO_MENUITEM_SEL, L"You need to select a menu item to assign this key to."); + DEF_STR(MSG_MENUITEM_ASSIGNED, L"Short-cut has already been assigned to another menu item."); + DEF_STR(MSG_NO_SEL_SHORTCUT, L"No shortcut has been selected to be removed."); + DEF_STR(MSG_WAITING_FOR_START, L"ROM loaded. Waiting for emulation to start."); + DEF_STR(MSG_INVALID_EXE, L"Project64 beta is for members only.\n\nIf you have an account at pj64.net, you should not be seeing this error!!\nPlease contact us on the site."); DEF_STR(MSG_INVALID_EXE_TITLE, L"Program Error"); DEF_STR(MSG_7Z_FILE_NOT_FOUND, L"Failed to find filename in 7z file"); - DEF_STR(MSG_SET_LLE_GFX_TITLE, L"Use Low Level Graphics"); - DEF_STR(MSG_SET_LLE_GFX_MSG, L"Low Level Graphics are not for general use!!!\nIt is advisable that you only use this for testing, not for playing any games with\n\nChange to LLE GFX?"); - DEF_STR(MSG_SET_HLE_AUD_TITLE, L"Use High Level Audio"); - DEF_STR(MSG_SET_HLE_AUD_MSG, L"High level Audio requires a 3rd party plugin!!!\nIf you do not use a 3rd party plugin that supports high level audio then you will hear no sound.\n\nUse high level audio?"); + DEF_STR(MSG_SET_LLE_GFX_TITLE, L"Graphics Low-Level Emulation"); + DEF_STR(MSG_SET_LLE_GFX_MSG, L"Graphics LLE is not for general use!!!\nIt is advisable that you only use this for testing and not for playing games.\n\nChange to graphics LLE?"); + DEF_STR(MSG_SET_HLE_AUD_TITLE, L"Audio High-Level Emulation"); + DEF_STR(MSG_SET_HLE_AUD_MSG, L"Audio HLE requires a third-party plugin!!!\nIf you do not use a third-party audio plugin that supports HLE, you will hear no sound.\n\nChange to audio HLE?"); } LRESULT CALLBACK LangSelectProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); @@ -525,10 +537,24 @@ void CLanguage::LoadCurrentStrings ( bool ShowSelectDialog ) //Process the file FILE *file = fopen(Filename.c_str(), "rb"); - if (file == NULL) { return; } + if (file == NULL) + { + return; + } + + //Search for utf8 file marker + BYTE utf_bom[3]; + if (fread(&utf_bom, sizeof(utf_bom),1,file) != 1 || + utf_bom[0] != 0xEF || + utf_bom[1] != 0xBB || + utf_bom[2] != 0xBF) + { + fclose(file); + return; + } //String; - while(!feof(file)) + while (!feof(file)) { m_CurrentStrings.insert(GetNextLangString(file)); } @@ -543,7 +569,8 @@ DWORD CALLBACK LangSelectOkProc (HWND hWnd, DWORD uMsg, DWORD wParam, DWORD lPar static bool m_fPressed = false; static HBITMAP hOkButtonDown = NULL; - switch (uMsg) { + switch (uMsg) + { case WM_PAINT: { PAINTSTRUCT ps; @@ -569,7 +596,9 @@ DWORD CALLBACK LangSelectOkProc (HWND hWnd, DWORD uMsg, DWORD wParam, DWORD lPar SelectObject(memdc, save); DeleteDC(memdc); } - } else { + } + else + { if (hOkButton) { RECT rcClient; @@ -589,14 +618,14 @@ DWORD CALLBACK LangSelectOkProc (HWND hWnd, DWORD uMsg, DWORD wParam, DWORD lPar } break; case WM_MOUSEMOVE: - if(::GetCapture() == hWnd) + if (::GetCapture() == hWnd) { POINT ptCursor = { ((int)(short)LOWORD(lParam)), ((int)(short)HIWORD(lParam)) }; ClientToScreen(hWnd, &ptCursor); RECT rect; GetWindowRect(hWnd, &rect); bool uPressed = ::PtInRect(&rect, ptCursor)==TRUE; - if( m_fPressed != uPressed ) + if ( m_fPressed != uPressed ) { m_fPressed = uPressed; ::InvalidateRect(hWnd, NULL, TRUE); @@ -609,7 +638,7 @@ DWORD CALLBACK LangSelectOkProc (HWND hWnd, DWORD uMsg, DWORD wParam, DWORD lPar LRESULT lRet = 0; lRet = DefWindowProc(hWnd, uMsg, wParam, lParam); SetCapture(hWnd); - if( ::GetCapture()==hWnd ) + if ( ::GetCapture()==hWnd ) { m_fPressed = true; @@ -626,10 +655,10 @@ DWORD CALLBACK LangSelectOkProc (HWND hWnd, DWORD uMsg, DWORD wParam, DWORD lPar { LRESULT lRet = 0; lRet = DefWindowProc(hWnd, uMsg, wParam, lParam); - if(::GetCapture() == hWnd ) + if ( ::GetCapture() == hWnd ) { ::ReleaseCapture(); - if( m_fPressed ) + if ( m_fPressed ) { ::SendMessage(GetParent(hWnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hWnd), BN_CLICKED), (LPARAM)hWnd); } @@ -652,14 +681,18 @@ LRESULT CALLBACK LangSelectProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa static HFONT hTextFont = NULL; static CLanguage * lngClass; - switch (uMsg) { + switch (uMsg) + { case WM_INITDIALOG: SetWindowPos(hDlg,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOREPOSITION|SWP_NOSIZE); { lngClass = (CLanguage *)lParam; LanguageList LangList = lngClass->GetLangList(); - if (LangList.size() == 0) { EndDialog(hDlg,0); } + if (LangList.size() == 0) + { + EndDialog(hDlg,0); + } for (LanguageList::iterator Language = LangList.begin(); Language != LangList.end(); Language++) { int index = SendMessageW(GetDlgItem(hDlg,IDC_LANG_SEL),CB_ADDSTRING,0,(WPARAM)Language->LanguageName.c_str()); @@ -668,11 +701,12 @@ LRESULT CALLBACK LangSelectProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa SendMessage(GetDlgItem(hDlg,IDC_LANG_SEL),CB_SETCURSEL,index,0); } } - int Index = SendMessage(GetDlgItem(hDlg,IDC_LANG_SEL),CB_GETCURSEL,0,0); - if (Index < 0) { SendMessage(GetDlgItem(hDlg,IDC_LANG_SEL),CB_SETCURSEL,0,0); } - + if (Index < 0) + { + SendMessage(GetDlgItem(hDlg,IDC_LANG_SEL),CB_SETCURSEL,0,0); + } enum { ROUND_EDGE = 15 }; @@ -821,7 +855,8 @@ LRESULT CALLBACK LangSelectProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa } break; case WM_COMMAND: - switch (LOWORD(wParam)) { + switch (LOWORD(wParam)) + { case IDOK: if (hbmpBackgroundTop) { @@ -876,8 +911,13 @@ LanguageList & CLanguage::GetLangList (void) { LanguageFile File; //We temporally store the values in here to added to the list - File.LanguageName = GetLangString(LanguageFiles,LANGUAGE_NAME); File.Filename = LanguageFiles; + File.LanguageName = GetLangString(LanguageFiles,LANGUAGE_NAME); + + if (File.LanguageName.length() == 0) + { + continue; + } //get the name of the language from inside the file m_LanguageList.push_back(File); @@ -900,7 +940,7 @@ const std::wstring & CLanguage::GetString (LanguageStringID StringID) return DefString->second; } #ifdef _DEBUG - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #endif return m_emptyString; } @@ -908,10 +948,23 @@ const std::wstring & CLanguage::GetString (LanguageStringID StringID) std::wstring CLanguage::GetLangString ( const char * FileName, LanguageStringID ID ) { FILE *file = fopen(FileName, "rb"); - if (file == NULL) { return L""; } + if (file == NULL) + { + return L""; + } + + //Search for utf8 file marker + BYTE utf_bom[3]; + if (fread(&utf_bom, sizeof(utf_bom),1,file) != 1 || + utf_bom[0] != 0xEF || + utf_bom[1] != 0xBB || + utf_bom[2] != 0xBF) + { + return L""; + } //String; - while(!feof(file)) + while (!feof(file)) { LANG_STR String = GetNextLangString(file); if (String.first == ID) @@ -931,33 +984,62 @@ LANG_STR CLanguage::GetNextLangString (void * OpenFile) char szString[MAX_STRING_LEN]; //temp store the string from the file FILE * file = (FILE *)OpenFile; - char token=0; + + //while(token!='#' && !feof(file)) { fread(&token, 1, 1, file); } + if (feof(file)) + { + return LANG_STR(0,L""); + } //Search for token # - while(token!='#' && !feof(file)) { fread(&token, 1, 1, file); } - if(feof(file)){ return LANG_STR(0,L""); } + char token=0; + while (token!='#' && !feof(file)) + { + fread(&token, 1, 1, file); + } + if (feof(file)) + { + return LANG_STR(0,L""); + } //get StringID after token fscanf(file, "%d", &StringID); //Search for token # - while(token!='#' && !feof(file)) { fread(&token, 1, 1, file); } - if(feof(file)){ StringID = EMPTY_STRING; return LANG_STR(0,L""); } + while(token!='#' && !feof(file)) + { + fread(&token, 1, 1, file); + } + if (feof(file)) + { + StringID = EMPTY_STRING; return LANG_STR(0,L""); + } //Search for start of string '"' - while(token!='"' && !feof(file)) { fread(&token, 1, 1, file); } - if(feof(file)){ StringID = EMPTY_STRING; return LANG_STR(0,L""); } + while (token!='"' && !feof(file)) + { + fread(&token, 1, 1, file); + } + if (feof(file)) + { + StringID = EMPTY_STRING; return LANG_STR(0,L""); + } int pos = 0; fread(&token, 1, 1, file); - while(token!='"' && !feof(file)) + while (token!='"' && !feof(file)) { szString[pos++] = token; fread(&token, 1, 1, file); - if (pos == MAX_STRING_LEN - 2) { token = '"'; } + if (pos == MAX_STRING_LEN - 2) + { + token = '"'; + } } szString[pos++] = 0; - return LANG_STR(StringID,stdstr(szString).ToUTF16()); + stdstr text(szString); + text.Replace("\\n","\n"); + return LANG_STR(StringID,text.ToUTF16()); } void CLanguage::SetLanguage ( const wchar_t * LanguageName ) diff --git a/Source/Project64/Multilanguage/Language Class.h b/Source/Project64/Multilanguage/Language Class.h index 84af4f2b1..f8b402002 100644 --- a/Source/Project64/Multilanguage/Language Class.h +++ b/Source/Project64/Multilanguage/Language Class.h @@ -20,7 +20,8 @@ typedef std::map > LANG_STRINGS; typedef LANG_STRINGS::value_type LANG_STR; -typedef struct { +typedef struct +{ stdstr Filename; std::wstring LanguageName; } LanguageFile; diff --git a/Source/Project64/N64 System/C Core/Logging.cpp b/Source/Project64/N64 System/C Core/Logging.cpp index 717e76f02..bc9dacb18 100644 --- a/Source/Project64/N64 System/C Core/Logging.cpp +++ b/Source/Project64/N64 System/C Core/Logging.cpp @@ -20,7 +20,8 @@ LRESULT CALLBACK LogRegProc ( HWND, UINT, WPARAM, LPARAM ); LOG_OPTIONS LogOptions,TempOptions; HANDLE hLogFile = NULL; -void EnterLogOptions(HWND hwndOwner) { +void EnterLogOptions(HWND hwndOwner) +{ PROPSHEETPAGE psp[3]; PROPSHEETHEADER psh; @@ -68,7 +69,8 @@ void EnterLogOptions(HWND hwndOwner) { return; } -void LoadLogOptions (LOG_OPTIONS * LogOptions, BOOL AlwaysFill) { +void LoadLogOptions (LOG_OPTIONS * LogOptions, BOOL AlwaysFill) +{ long lResult; HKEY hKeyResults = 0; char String[200]; @@ -77,9 +79,11 @@ void LoadLogOptions (LOG_OPTIONS * LogOptions, BOOL AlwaysFill) { lResult = RegOpenKeyEx( HKEY_CURRENT_USER,String,0,KEY_ALL_ACCESS, &hKeyResults); - if (lResult == ERROR_SUCCESS) { + if (lResult == ERROR_SUCCESS) + { //LoadLogSetting(hKeyResults,"Generate Log File",&LogOptions->GenerateLog); - if (LogOptions->GenerateLog || AlwaysFill) { + if (LogOptions->GenerateLog || AlwaysFill) + { LoadLogSetting(hKeyResults,"Log RDRAM",&LogOptions->LogRDRamRegisters); LoadLogSetting(hKeyResults,"Log SP",&LogOptions->LogSPRegisters); LoadLogSetting(hKeyResults,"Log DP Command",&LogOptions->LogDPCRegisters); @@ -137,20 +141,26 @@ void LoadLogOptions (LOG_OPTIONS * LogOptions, BOOL AlwaysFill) { LogOptions->LogUnknown = FALSE; } -void LoadLogSetting (HKEY hKey,char * String, BOOL * Value) { +void LoadLogSetting (HKEY hKey,char * String, BOOL * Value) +{ DWORD Type, dwResult, Bytes = 4; long lResult; lResult = RegQueryValueEx(hKey,String,0,&Type,(LPBYTE)(&dwResult),&Bytes); - if (Type == REG_DWORD && lResult == ERROR_SUCCESS) { + if (Type == REG_DWORD && lResult == ERROR_SUCCESS) + { *Value = (BOOL)dwResult; - } else { + } + else + { *Value = FALSE; } } -LRESULT CALLBACK LogGeneralProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lParam) { - switch (uMsg) { +LRESULT CALLBACK LogGeneralProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lParam) +{ + switch (uMsg) + { case WM_INITDIALOG: if (TempOptions.LogCP0changes) { CheckDlgButton(hDlg,IDC_CP0_WRITE,BST_CHECKED); } if (TempOptions.LogCP0reads) { CheckDlgButton(hDlg,IDC_CP0_READ,BST_CHECKED); } @@ -178,8 +188,12 @@ LRESULT CALLBACK LogGeneralProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM return TRUE; } -void Log_LW (DWORD PC, DWORD VAddr) { - if (!LogOptions.GenerateLog) { return; } +void Log_LW (DWORD PC, DWORD VAddr) +{ + if (!LogOptions.GenerateLog) + { + return; + } if ( VAddr < 0xA0000000 || VAddr >= 0xC0000000 ) { @@ -196,12 +210,20 @@ void Log_LW (DWORD PC, DWORD VAddr) { } DWORD Value; - if ( VAddr >= 0xA0000000 && VAddr < (0xA0000000 + g_MMU->RdramSize())) { return; } - if ( VAddr >= 0xA3F00000 && VAddr <= 0xA3F00024) { - if (!LogOptions.LogRDRamRegisters) { return; } + if ( VAddr >= 0xA0000000 && VAddr < (0xA0000000 + g_MMU->RdramSize())) + { + return; + } + if ( VAddr >= 0xA3F00000 && VAddr <= 0xA3F00024) + { + if (!LogOptions.LogRDRamRegisters) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA3F00000: LogMessage("%08X: read from RDRAM_CONFIG_REG/RDRAM_DEVICE_TYPE_REG (%08X)",PC, Value); return; case 0xA3F00004: LogMessage("%08X: read from RDRAM_DEVICE_ID_REG (%08X)",PC, Value); return; case 0xA3F00008: LogMessage("%08X: read from RDRAM_DELAY_REG (%08X)",PC, Value); return; @@ -215,12 +237,20 @@ void Log_LW (DWORD PC, DWORD VAddr) { } } - if ( VAddr >= 0xA4000000 && VAddr <= 0xA4001FFC ) { return; } - if ( VAddr >= 0xA4040000 && VAddr <= 0xA404001C ) { - if (!LogOptions.LogSPRegisters) { return; } + if ( VAddr >= 0xA4000000 && VAddr <= 0xA4001FFC ) + { + return; + } + if ( VAddr >= 0xA4040000 && VAddr <= 0xA404001C ) + { + if (!LogOptions.LogSPRegisters) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA4040000: LogMessage("%08X: read from SP_MEM_ADDR_REG (%08X)",PC, Value); break; case 0xA4040004: LogMessage("%08X: read from SP_DRAM_ADDR_REG (%08X)",PC, Value); break; case 0xA4040008: LogMessage("%08X: read from SP_RD_LEN_REG (%08X)",PC, Value); break; @@ -232,17 +262,26 @@ void Log_LW (DWORD PC, DWORD VAddr) { } return; } - if ( VAddr == 0xA4080000) { - if (!LogOptions.LogSPRegisters) { return; } + if ( VAddr == 0xA4080000) + { + if (!LogOptions.LogSPRegisters) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); LogMessage("%08X: read from SP_PC (%08X)",PC, Value); return; } - if (VAddr >= 0xA4100000 && VAddr <= 0xA410001C) { - if (!LogOptions.LogDPCRegisters) { return; } + if (VAddr >= 0xA4100000 && VAddr <= 0xA410001C) + { + if (!LogOptions.LogDPCRegisters) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA4100000: LogMessage("%08X: read from DPC_START_REG (%08X)",PC, Value); return; case 0xA4100004: LogMessage("%08X: read from DPC_END_REG (%08X)",PC, Value); return; case 0xA4100008: LogMessage("%08X: read from DPC_CURRENT_REG (%08X)",PC, Value); return; @@ -253,22 +292,32 @@ void Log_LW (DWORD PC, DWORD VAddr) { case 0xA410001C: LogMessage("%08X: read from DPC_TMEM_REG (%08X)",PC, Value); return; } } - if (VAddr >= 0xA4300000 && VAddr <= 0xA430000C) { - if (!LogOptions.LogMIPSInterface) { return; } + if (VAddr >= 0xA4300000 && VAddr <= 0xA430000C) + { + if (!LogOptions.LogMIPSInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA4300000: LogMessage("%08X: read from MI_INIT_MODE_REG/MI_MODE_REG (%08X)",PC, Value); return; case 0xA4300004: LogMessage("%08X: read from MI_VERSION_REG/MI_NOOP_REG (%08X)",PC, Value); return; case 0xA4300008: LogMessage("%08X: read from MI_INTR_REG (%08X)",PC, Value); return; case 0xA430000C: LogMessage("%08X: read from MI_INTR_MASK_REG (%08X)",PC, Value); return; } } - if (VAddr >= 0xA4400000 && VAddr <= 0xA4400034) { - if (!LogOptions.LogVideoInterface) { return; } + if (VAddr >= 0xA4400000 && VAddr <= 0xA4400034) + { + if (!LogOptions.LogVideoInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA4400000: LogMessage("%08X: read from VI_STATUS_REG/VI_CONTROL_REG (%08X)",PC, Value); return; case 0xA4400004: LogMessage("%08X: read from VI_ORIGIN_REG/VI_DRAM_ADDR_REG (%08X)",PC, Value); return; case 0xA4400008: LogMessage("%08X: read from VI_WIDTH_REG/VI_H_WIDTH_REG (%08X)",PC, Value); return; @@ -285,11 +334,16 @@ void Log_LW (DWORD PC, DWORD VAddr) { case 0xA4400034: LogMessage("%08X: read from VI_Y_SCALE_REG (%08X)",PC, Value); return; } } - if (VAddr >= 0xA4500000 && VAddr <= 0xA4500014) { - if (!LogOptions.LogAudioInterface) { return; } + if (VAddr >= 0xA4500000 && VAddr <= 0xA4500014) + { + if (!LogOptions.LogAudioInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA4500000: LogMessage("%08X: read from AI_DRAM_ADDR_REG (%08X)",PC, Value); return; case 0xA4500004: LogMessage("%08X: read from AI_LEN_REG (%08X)",PC, Value); return; case 0xA4500008: LogMessage("%08X: read from AI_CONTROL_REG (%08X)",PC, Value); return; @@ -298,11 +352,16 @@ void Log_LW (DWORD PC, DWORD VAddr) { case 0xA4500014: LogMessage("%08X: read from AI_BITRATE_REG (%08X)",PC, Value); return; } } - if (VAddr >= 0xA4600000 && VAddr <= 0xA4600030) { - if (!LogOptions.LogPerInterface) { return; } + if (VAddr >= 0xA4600000 && VAddr <= 0xA4600030) + { + if (!LogOptions.LogPerInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA4600000: LogMessage("%08X: read from PI_DRAM_ADDR_REG (%08X)",PC, Value); return; case 0xA4600004: LogMessage("%08X: read from PI_CART_ADDR_REG (%08X)",PC, Value); return; case 0xA4600008: LogMessage("%08X: read from PI_RD_LEN_REG (%08X)",PC, Value); return; @@ -318,11 +377,16 @@ void Log_LW (DWORD PC, DWORD VAddr) { case 0xA4600030: LogMessage("%08X: read from PI_BSD_DOM2_RLS_REG (%08X)",PC, Value); return; } } - if (VAddr >= 0xA4700000 && VAddr <= 0xA470001C) { - if (!LogOptions.LogRDRAMInterface) { return; } + if (VAddr >= 0xA4700000 && VAddr <= 0xA470001C) + { + if (!LogOptions.LogRDRAMInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xA4700000: LogMessage("%08X: read from RI_MODE_REG (%08X)",PC, Value); return; case 0xA4700004: LogMessage("%08X: read from RI_CONFIG_REG (%08X)",PC, Value); return; case 0xA4700008: LogMessage("%08X: read from RI_CURRENT_LOAD_REG (%08X)",PC, Value); return; @@ -333,43 +397,74 @@ void Log_LW (DWORD PC, DWORD VAddr) { case 0xA470001C: LogMessage("%08X: read from RI_WERROR_REG (%08X)",PC, Value); return; } } - if ( VAddr == 0xA4800000) { - if (!LogOptions.LogSerialInterface) { return; } + if ( VAddr == 0xA4800000) + { + if (!LogOptions.LogSerialInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); LogMessage("%08X: read from SI_DRAM_ADDR_REG (%08X)",PC, Value); return; } - if ( VAddr == 0xA4800004) { - if (!LogOptions.LogSerialInterface) { return; } + if ( VAddr == 0xA4800004) + { + if (!LogOptions.LogSerialInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); LogMessage("%08X: read from SI_PIF_ADDR_RD64B_REG (%08X)",PC, Value); return; } - if ( VAddr == 0xA4800010) { - if (!LogOptions.LogSerialInterface) { return; } + if ( VAddr == 0xA4800010) + { + if (!LogOptions.LogSerialInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); LogMessage("%08X: read from SI_PIF_ADDR_WR64B_REG (%08X)",PC, Value); return; } - if ( VAddr == 0xA4800018) { - if (!LogOptions.LogSerialInterface) { return; } + if ( VAddr == 0xA4800018) + { + if (!LogOptions.LogSerialInterface) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); LogMessage("%08X: read from SI_STATUS_REG (%08X)",PC, Value); return; } - if ( VAddr >= 0xBFC00000 && VAddr <= 0xBFC007C0 ) { return; } - if ( VAddr >= 0xBFC007C0 && VAddr <= 0xBFC007FC ) { - if (!LogOptions.LogPRDirectMemLoads) { return; } + if ( VAddr >= 0xBFC00000 && VAddr <= 0xBFC007C0 ) + { + return; + } + if ( VAddr >= 0xBFC007C0 && VAddr <= 0xBFC007FC ) + { + if (!LogOptions.LogPRDirectMemLoads) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); LogMessage("%08X: read word from Pif Ram at 0x%X (%08X)",PC,VAddr - 0xBFC007C0, Value); return; } - if ( VAddr >= 0xB0000040 && ((VAddr - 0xB0000000) < g_Rom->GetRomSize())) { return; } - if ( VAddr >= 0xB0000000 && VAddr < 0xB0000040) { - if (!LogOptions.LogRomHeader) { return; } + if ( VAddr >= 0xB0000040 && ((VAddr - 0xB0000000) < g_Rom->GetRomSize())) + { + return; + } + if ( VAddr >= 0xB0000000 && VAddr < 0xB0000040) + { + if (!LogOptions.LogRomHeader) + { + return; + } g_MMU->LW_VAddr(VAddr,Value); - switch (VAddr) { + switch (VAddr) + { case 0xB0000004: LogMessage("%08X: read from Rom Clock Rate (%08X)",PC, Value); break; case 0xB0000008: LogMessage("%08X: read from Rom Boot address offset (%08X)",PC, Value); break; case 0xB000000C: LogMessage("%08X: read from Rom Release offset (%08X)",PC, Value); break; @@ -379,17 +474,27 @@ void Log_LW (DWORD PC, DWORD VAddr) { } return; } - if (!LogOptions.LogUnknown) { return; } + if (!LogOptions.LogUnknown) + { + return; + } LogMessage("%08X: read from unknown ??? (%08X)",PC,VAddr); } -void __cdecl LogMessage (char * Message, ...) { +void __cdecl LogMessage (char * Message, ...) +{ DWORD dwWritten; char Msg[400]; va_list ap; - if(!g_Settings->LoadBool(Debugger_Enabled)) { return; } - if(hLogFile == NULL) { return; } + if (!g_Settings->LoadBool(Debugger_Enabled)) + { + return; + } + if (hLogFile == NULL) + { + return; + } va_start( ap, Message ); vsprintf( Msg, Message, ap ); @@ -400,8 +505,12 @@ void __cdecl LogMessage (char * Message, ...) { WriteFile( hLogFile,Msg,strlen(Msg),&dwWritten,NULL ); } -void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { - if (!LogOptions.GenerateLog) { return; } +void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) +{ + if (!LogOptions.GenerateLog) + { + return; + } if ( VAddr < 0xA0000000 || VAddr >= 0xC0000000 ) { @@ -417,10 +526,18 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { VAddr = PAddr + 0xA0000000; } - if ( VAddr >= 0xA0000000 && VAddr < (0xA0000000 + g_MMU->RdramSize())) { return; } - if ( VAddr >= 0xA3F00000 && VAddr <= 0xA3F00024) { - if (!LogOptions.LogRDRamRegisters) { return; } - switch (VAddr) { + if ( VAddr >= 0xA0000000 && VAddr < (0xA0000000 + g_MMU->RdramSize())) + { + return; + } + if ( VAddr >= 0xA3F00000 && VAddr <= 0xA3F00024) + { + if (!LogOptions.LogRDRamRegisters) + { + return; + } + switch (VAddr) + { case 0xA3F00000: LogMessage("%08X: Writing 0x%08X to RDRAM_CONFIG_REG/RDRAM_DEVICE_TYPE_REG",PC, Value ); return; case 0xA3F00004: LogMessage("%08X: Writing 0x%08X to RDRAM_DEVICE_ID_REG",PC, Value ); return; case 0xA3F00008: LogMessage("%08X: Writing 0x%08X to RDRAM_DELAY_REG",PC, Value ); return; @@ -433,11 +550,19 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { case 0xA3F00024: LogMessage("%08X: Writing 0x%08X to RDRAM_DEVICE_MANUF_REG",PC, Value ); return; } } - if ( VAddr >= 0xA4000000 && VAddr <= 0xA4001FFC ) { return; } + if ( VAddr >= 0xA4000000 && VAddr <= 0xA4001FFC ) + { + return; + } - if ( VAddr >= 0xA4040000 && VAddr <= 0xA404001C) { - if (!LogOptions.LogSPRegisters) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4040000 && VAddr <= 0xA404001C) + { + if (!LogOptions.LogSPRegisters) + { + return; + } + switch (VAddr) + { case 0xA4040000: LogMessage("%08X: Writing 0x%08X to SP_MEM_ADDR_REG",PC, Value ); return; case 0xA4040004: LogMessage("%08X: Writing 0x%08X to SP_DRAM_ADDR_REG",PC, Value ); return; case 0xA4040008: LogMessage("%08X: Writing 0x%08X to SP_RD_LEN_REG",PC, Value ); return; @@ -448,14 +573,23 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { case 0xA404001C: LogMessage("%08X: Writing 0x%08X to SP_SEMAPHORE_REG",PC, Value ); return; } } - if ( VAddr == 0xA4080000) { - if (!LogOptions.LogSPRegisters) { return; } + if ( VAddr == 0xA4080000) + { + if (!LogOptions.LogSPRegisters) + { + return; + } LogMessage("%08X: Writing 0x%08X to SP_PC",PC, Value ); return; } - if ( VAddr >= 0xA4100000 && VAddr <= 0xA410001C) { - if (!LogOptions.LogDPCRegisters) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4100000 && VAddr <= 0xA410001C) + { + if (!LogOptions.LogDPCRegisters) + { + return; + } + switch (VAddr) + { case 0xA4100000: LogMessage("%08X: Writing 0x%08X to DPC_START_REG",PC, Value ); return; case 0xA4100004: LogMessage("%08X: Writing 0x%08X to DPC_END_REG",PC, Value ); return; case 0xA4100008: LogMessage("%08X: Writing 0x%08X to DPC_CURRENT_REG",PC, Value ); return; @@ -467,9 +601,14 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { } } - if ( VAddr >= 0xA4200000 && VAddr <= 0xA420000C) { - if (!LogOptions.LogDPSRegisters) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4200000 && VAddr <= 0xA420000C) + { + if (!LogOptions.LogDPSRegisters) + { + return; + } + switch (VAddr) + { case 0xA4200000: LogMessage("%08X: Writing 0x%08X to DPS_TBIST_REG",PC, Value ); return; case 0xA4200004: LogMessage("%08X: Writing 0x%08X to DPS_TEST_MODE_REG",PC, Value ); return; case 0xA4200008: LogMessage("%08X: Writing 0x%08X to DPS_BUFTEST_ADDR_REG",PC, Value ); return; @@ -477,18 +616,28 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { } } - if ( VAddr >= 0xA4300000 && VAddr <= 0xA430000C) { - if (!LogOptions.LogMIPSInterface) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4300000 && VAddr <= 0xA430000C) + { + if (!LogOptions.LogMIPSInterface) + { + return; + } + switch (VAddr) + { case 0xA4300000: LogMessage("%08X: Writing 0x%08X to MI_INIT_MODE_REG/MI_MODE_REG",PC, Value ); return; case 0xA4300004: LogMessage("%08X: Writing 0x%08X to MI_VERSION_REG/MI_NOOP_REG",PC, Value ); return; case 0xA4300008: LogMessage("%08X: Writing 0x%08X to MI_INTR_REG",PC, Value ); return; case 0xA430000C: LogMessage("%08X: Writing 0x%08X to MI_INTR_MASK_REG",PC, Value ); return; } } - if ( VAddr >= 0xA4400000 && VAddr <= 0xA4400034) { - if (!LogOptions.LogVideoInterface) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4400000 && VAddr <= 0xA4400034) + { + if (!LogOptions.LogVideoInterface) + { + return; + } + switch (VAddr) + { case 0xA4400000: LogMessage("%08X: Writing 0x%08X to VI_STATUS_REG/VI_CONTROL_REG",PC, Value ); return; case 0xA4400004: LogMessage("%08X: Writing 0x%08X to VI_ORIGIN_REG/VI_DRAM_ADDR_REG",PC, Value ); return; case 0xA4400008: LogMessage("%08X: Writing 0x%08X to VI_WIDTH_REG/VI_H_WIDTH_REG",PC, Value ); return; @@ -506,9 +655,14 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { } } - if ( VAddr >= 0xA4500000 && VAddr <= 0xA4500014) { - if (!LogOptions.LogAudioInterface) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4500000 && VAddr <= 0xA4500014) + { + if (!LogOptions.LogAudioInterface) + { + return; + } + switch (VAddr) + { case 0xA4500000: LogMessage("%08X: Writing 0x%08X to AI_DRAM_ADDR_REG",PC, Value ); return; case 0xA4500004: LogMessage("%08X: Writing 0x%08X to AI_LEN_REG",PC, Value ); return; case 0xA4500008: LogMessage("%08X: Writing 0x%08X to AI_CONTROL_REG",PC, Value ); return; @@ -518,9 +672,14 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { } } - if ( VAddr >= 0xA4600000 && VAddr <= 0xA4600030) { - if (!LogOptions.LogPerInterface) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4600000 && VAddr <= 0xA4600030) + { + if (!LogOptions.LogPerInterface) + { + return; + } + switch (VAddr) + { case 0xA4600000: LogMessage("%08X: Writing 0x%08X to PI_DRAM_ADDR_REG",PC, Value ); return; case 0xA4600004: LogMessage("%08X: Writing 0x%08X to PI_CART_ADDR_REG",PC, Value ); return; case 0xA4600008: LogMessage("%08X: Writing 0x%08X to PI_RD_LEN_REG",PC, Value ); return; @@ -536,9 +695,14 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { case 0xA4600030: LogMessage("%08X: Writing 0x%08X to PI_BSD_DOM2_RLS_REG",PC, Value ); return; } } - if ( VAddr >= 0xA4700000 && VAddr <= 0xA470001C) { - if (!LogOptions.LogRDRAMInterface) { return; } - switch (VAddr) { + if ( VAddr >= 0xA4700000 && VAddr <= 0xA470001C) + { + if (!LogOptions.LogRDRAMInterface) + { + return; + } + switch (VAddr) + { case 0xA4700000: LogMessage("%08X: Writing 0x%08X to RI_MODE_REG",PC, Value ); return; case 0xA4700004: LogMessage("%08X: Writing 0x%08X to RI_CONFIG_REG",PC, Value ); return; case 0xA4700008: LogMessage("%08X: Writing 0x%08X to RI_CURRENT_LOAD_REG",PC, Value ); return; @@ -549,40 +713,67 @@ void Log_SW (DWORD PC, DWORD VAddr, DWORD Value) { case 0xA470001C: LogMessage("%08X: Writing 0x%08X to RI_WERROR_REG",PC, Value ); return; } } - if ( VAddr == 0xA4800000) { - if (!LogOptions.LogSerialInterface) { return; } + if ( VAddr == 0xA4800000) + { + if (!LogOptions.LogSerialInterface) + { + return; + } LogMessage("%08X: Writing 0x%08X to SI_DRAM_ADDR_REG",PC, Value ); return; } - if ( VAddr == 0xA4800004) { - if (LogOptions.LogPRDMAOperations) { + if ( VAddr == 0xA4800004) + { + if (LogOptions.LogPRDMAOperations) + { LogMessage("%08X: A DMA transfer from the PIF ram has occured",PC ); } - if (!LogOptions.LogSerialInterface) { return; } + if (!LogOptions.LogSerialInterface) + { + return; + } LogMessage("%08X: Writing 0x%08X to SI_PIF_ADDR_RD64B_REG",PC, Value ); return; } - if ( VAddr == 0xA4800010) { - if (LogOptions.LogPRDMAOperations) { + if ( VAddr == 0xA4800010) + { + if (LogOptions.LogPRDMAOperations) + { LogMessage("%08X: A DMA transfer to the PIF ram has occured",PC ); } - if (!LogOptions.LogSerialInterface) { return; } + if (!LogOptions.LogSerialInterface) + { + return; + } LogMessage("%08X: Writing 0x%08X to SI_PIF_ADDR_WR64B_REG",PC, Value ); return; } - if ( VAddr == 0xA4800018) { - if (!LogOptions.LogSerialInterface) { return; } + if ( VAddr == 0xA4800018) + { + if (!LogOptions.LogSerialInterface) + { + return; + } LogMessage("%08X: Writing 0x%08X to SI_STATUS_REG",PC, Value ); return; } - if ( VAddr >= 0xBFC007C0 && VAddr <= 0xBFC007FC ) { - if (!LogOptions.LogPRDirectMemStores) { return; } + if ( VAddr >= 0xBFC007C0 && VAddr <= 0xBFC007FC ) + { + if (!LogOptions.LogPRDirectMemStores) + { + return; + } LogMessage("%08X: Writing 0x%08X to Pif Ram at 0x%X",PC,Value, VAddr - 0xBFC007C0); return; } - if (!LogOptions.LogUnknown) { return; } + if (!LogOptions.LogUnknown) + { + return; + } LogMessage("%08X: Writing 0x%08X to %08X ????",PC, Value, VAddr ); } -LRESULT CALLBACK LogPifProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lParam) { - switch (uMsg) { +LRESULT CALLBACK LogPifProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lParam) +{ + switch (uMsg) + { case WM_INITDIALOG: if (TempOptions.LogPRDMAOperations) { CheckDlgButton(hDlg,IDC_SI_DMA,BST_CHECKED); } if (TempOptions.LogPRDirectMemLoads) { CheckDlgButton(hDlg,IDC_DIRECT_WRITE,BST_CHECKED); } @@ -592,7 +783,10 @@ LRESULT CALLBACK LogPifProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lPa if (TempOptions.LogControllerPak) { CheckDlgButton(hDlg,IDC_CONT_PAK,BST_CHECKED); } break; case WM_NOTIFY: - if (((NMHDR FAR *) lParam)->code != PSN_APPLY) { break; } + if (((NMHDR FAR *) lParam)->code != PSN_APPLY) + { + break; + } TempOptions.LogPRDMAOperations = IsDlgButtonChecked(hDlg,IDC_SI_DMA) == BST_CHECKED?TRUE:FALSE; TempOptions.LogPRDirectMemLoads = IsDlgButtonChecked(hDlg,IDC_DIRECT_WRITE) == BST_CHECKED?TRUE:FALSE; TempOptions.LogPRDMAMemLoads = IsDlgButtonChecked(hDlg,IDC_DMA_WRITE) == BST_CHECKED?TRUE:FALSE; @@ -606,8 +800,10 @@ LRESULT CALLBACK LogPifProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lPa return TRUE; } -LRESULT CALLBACK LogRegProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lParam) { - switch (uMsg) { +LRESULT CALLBACK LogRegProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lParam) +{ + switch (uMsg) + { case WM_INITDIALOG: if (TempOptions.LogRDRamRegisters) { CheckDlgButton(hDlg,IDC_RDRAM,BST_CHECKED); } if (TempOptions.LogSPRegisters) { CheckDlgButton(hDlg,IDC_SP_REG,BST_CHECKED); } @@ -621,7 +817,10 @@ LRESULT CALLBACK LogRegProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lPa if (TempOptions.LogSerialInterface) { CheckDlgButton(hDlg,IDC_SI_REG,BST_CHECKED); } break; case WM_NOTIFY: - if (((NMHDR FAR *) lParam)->code != PSN_APPLY) { break; } + if (((NMHDR FAR *) lParam)->code != PSN_APPLY) + { + break; + } TempOptions.LogRDRamRegisters = IsDlgButtonChecked(hDlg,IDC_RDRAM) == BST_CHECKED?TRUE:FALSE; TempOptions.LogSPRegisters = IsDlgButtonChecked(hDlg,IDC_SP_REG) == BST_CHECKED?TRUE:FALSE; TempOptions.LogDPCRegisters = IsDlgButtonChecked(hDlg,IDC_DPC_REG) == BST_CHECKED?TRUE:FALSE; @@ -639,12 +838,14 @@ LRESULT CALLBACK LogRegProc (HWND hDlg, UINT uMsg, WPARAM /*wParam*/, LPARAM lPa return TRUE; } -void SaveLogSetting (HKEY hKey,char * String, BOOL Value) { +void SaveLogSetting (HKEY hKey,char * String, BOOL Value) +{ DWORD StoreValue = Value; RegSetValueEx(hKey,String,0,REG_DWORD,(CONST BYTE *)&StoreValue,sizeof(DWORD)); } -void SaveLogOptions (void) { +void SaveLogOptions (void) +{ long lResult; HKEY hKeyResults = 0; DWORD Disposition = 0; @@ -684,11 +885,15 @@ void SaveLogOptions (void) { void StartLog (void) { - if (!LogOptions.GenerateLog) { + if (!LogOptions.GenerateLog) + { StopLog(); return; } - if (hLogFile) { return; } + if (hLogFile) + { + return; + } CPath LogFile(CPath::MODULE_DIRECTORY); LogFile.AppendDirectory(_T("Logs")); @@ -699,8 +904,10 @@ void StartLog (void) SetFilePointer(hLogFile,0,NULL,FILE_BEGIN); } -void StopLog (void) { - if (hLogFile) { +void StopLog (void) +{ + if (hLogFile) + { CloseHandle(hLogFile); } hLogFile = NULL; diff --git a/Source/Project64/N64 System/C Core/Logging.h b/Source/Project64/N64 System/C Core/Logging.h index 7539494c6..844fcdf04 100644 --- a/Source/Project64/N64 System/C Core/Logging.h +++ b/Source/Project64/N64 System/C Core/Logging.h @@ -13,7 +13,8 @@ extern "C" { #endif -typedef struct { +typedef struct +{ BOOL GenerateLog; /* Registers Log */ diff --git a/Source/Project64/N64 System/C Core/r4300i Commands.cpp b/Source/Project64/N64 System/C Core/r4300i Commands.cpp index c23e3defa..9b01fd1f7 100644 --- a/Source/Project64/N64 System/C Core/r4300i Commands.cpp +++ b/Source/Project64/N64 System/C Core/r4300i Commands.cpp @@ -16,32 +16,41 @@ BOOL InR4300iCommandsWindow = FALSE; char CommandName[100]; -void SetR4300iCommandToStepping ( void ) { +void SetR4300iCommandToStepping ( void ) +{ } -void SetR4300iCommandViewto ( UINT /*NewLocation*/ ) { +void SetR4300iCommandViewto ( UINT /*NewLocation*/ ) +{ } -void __cdecl Enter_R4300i_Commands_Window ( void ) { +void __cdecl Enter_R4300i_Commands_Window ( void ) +{ } char strLabelName[100]; -char * LabelName (DWORD Address) { +char * LabelName (DWORD Address) +{ sprintf(strLabelName,"0x%08X",Address); return strLabelName; } -char * R4300iSpecialName ( DWORD OpCode, DWORD /*PC*/ ) { +char * R4300iSpecialName ( DWORD OpCode, DWORD /*PC*/ ) +{ OPCODE command; command.Hex = OpCode; - switch (command.funct) { + switch (command.funct) + { case R4300i_SPECIAL_SLL: - if (command.Hex != 0) { + if (command.Hex != 0) + { sprintf(CommandName,"sll\t%s, %s, 0x%X",CRegName::GPR[command.rd], CRegName::GPR[command.rt], command.sa); - } else { + } + else + { sprintf(CommandName,"nop"); } break; @@ -230,18 +239,22 @@ char * R4300iSpecialName ( DWORD OpCode, DWORD /*PC*/ ) { return CommandName; } -char * R4300iRegImmName ( DWORD OpCode, DWORD PC ) { +char * R4300iRegImmName ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; - switch (command.rt) { + switch (command.rt) + { case R4300i_REGIMM_BLTZ: sprintf(CommandName,"bltz\t%s, %s",CRegName::GPR[command.rs], LabelName(PC + ((short)command.offset << 2) + 4)); break; case R4300i_REGIMM_BGEZ: - if (command.rs == 0) { + if (command.rs == 0) + { sprintf(CommandName,"b\t%s", LabelName(PC + ((short)command.offset << 2) + 4)); - } else { + } else + { sprintf(CommandName,"bgez\t%s, %s",CRegName::GPR[command.rs], LabelName(PC + ((short)command.offset << 2) + 4)); } break; @@ -273,9 +286,12 @@ char * R4300iRegImmName ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"bltzal\t%s, %s",CRegName::GPR[command.rs], LabelName(PC + ((short)command.offset << 2) + 4)); break; case R4300i_REGIMM_BGEZAL: - if (command.rs == 0) { + if (command.rs == 0) + { sprintf(CommandName,"bal\t%s",LabelName(PC + ((short)command.offset << 2) + 4)); - } else { + } + else + { sprintf(CommandName,"bgezal\t%s, %s",CRegName::GPR[command.rs], LabelName(PC + ((short)command.offset << 2) + 4)); } break; @@ -292,11 +308,13 @@ char * R4300iRegImmName ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * R4300iCop1Name ( DWORD OpCode, DWORD PC ) { +char * R4300iCop1Name ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; - switch (command.fmt) { + switch (command.fmt) + { case R4300i_COP1_MF: sprintf(CommandName,"mfc1\t%s, %s",CRegName::GPR[command.rt], CRegName::FPR[command.fs]); break; @@ -316,7 +334,8 @@ char * R4300iCop1Name ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"ctc1\t%s, %s",CRegName::GPR[command.rt], CRegName::FPR_Ctrl[command.fs]); break; case R4300i_COP1_BC: - switch (command.ft) { + switch (command.ft) + { case R4300i_COP1_BC_BCF: sprintf(CommandName,"BC1F\t%s", LabelName(PC + ((short)command.offset << 2) + 4)); break; @@ -338,7 +357,8 @@ char * R4300iCop1Name ( DWORD OpCode, DWORD PC ) { case R4300i_COP1_D: case R4300i_COP1_W: case R4300i_COP1_L: - switch (command.funct) { + switch (command.funct) + { case R4300i_COP1_FUNCT_ADD: sprintf(CommandName,"ADD.%s\t%s, %s, %s",FPR_Type(command.fmt), CRegName::FPR[command.fd], CRegName::FPR[command.fs], @@ -499,11 +519,13 @@ char * R4300iCop1Name ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * R4300iOpcodeName ( DWORD OpCode, DWORD PC ) { +char * R4300iOpcodeName ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; - switch (command.op) { + switch (command.op) + { case R4300i_SPECIAL: return R4300iSpecialName ( OpCode, PC ); break; @@ -517,21 +539,29 @@ char * R4300iOpcodeName ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"jal\t%s",LabelName((PC & 0xF0000000) + (command.target << 2))); break; case R4300i_BEQ: - if (command.rs == 0 && command.rt == 0) { + if (command.rs == 0 && command.rt == 0) + { sprintf(CommandName,"b\t%s", LabelName(PC + ((short)command.offset << 2) + 4)); - } else if (command.rs == 0 || command.rt == 0) { + } + else if (command.rs == 0 || command.rt == 0) + { sprintf(CommandName,"beqz\t%s, %s", CRegName::GPR[command.rs == 0 ? command.rt : command.rs ], LabelName(PC + ((short)command.offset << 2) + 4)); - } else { + } + else + { sprintf(CommandName,"beq\t%s, %s, %s", CRegName::GPR[command.rs], CRegName::GPR[command.rt], LabelName(PC + ((short)command.offset << 2) + 4)); } break; case R4300i_BNE: - if ((command.rs == 0) ^ (command.rt == 0)){ + if ((command.rs == 0) ^ (command.rt == 0)) + { sprintf(CommandName,"bnez\t%s, %s", CRegName::GPR[command.rs == 0 ? command.rt : command.rs ], LabelName(PC + ((short)command.offset << 2) + 4)); - } else { + } + else + { sprintf(CommandName,"bne\t%s, %s, %s", CRegName::GPR[command.rs], CRegName::GPR[command.rt], LabelName(PC + ((short)command.offset << 2) + 4)); } @@ -567,7 +597,8 @@ char * R4300iOpcodeName ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"lui\t%s, 0x%X",CRegName::GPR[command.rt], command.immediate); break; case R4300i_CP0: - switch (command.rs) { + switch (command.rs) + { case R4300i_COP0_MF: sprintf(CommandName,"mfc0\t%s, %s",CRegName::GPR[command.rt], CRegName::Cop0[command.rd]); break; @@ -575,8 +606,10 @@ char * R4300iOpcodeName ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"mtc0\t%s, %s",CRegName::GPR[command.rt], CRegName::Cop0[command.rd]); break; default: - if ( (command.rs & 0x10 ) != 0 ) { - switch( command.funct ) { + if ( (command.rs & 0x10 ) != 0 ) + { + switch ( command.funct ) + { case R4300i_COP0_CO_TLBR: sprintf(CommandName,"tlbr"); break; case R4300i_COP0_CO_TLBWI: sprintf(CommandName,"tlbwi"); break; case R4300i_COP0_CO_TLBWR: sprintf(CommandName,"tlbwr"); break; @@ -586,7 +619,9 @@ char * R4300iOpcodeName ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"Unknown\t%02X %02X %02X %02X", command.Ascii[3],command.Ascii[2],command.Ascii[1],command.Ascii[0]); } - } else { + } + else + { sprintf(CommandName,"Unknown\t%02X %02X %02X %02X", command.Ascii[3],command.Ascii[2],command.Ascii[1],command.Ascii[0]); } @@ -596,21 +631,29 @@ char * R4300iOpcodeName ( DWORD OpCode, DWORD PC ) { case R4300i_CP1: return R4300iCop1Name ( OpCode, PC ); case R4300i_BEQL: - if (command.rs == command.rt) { + if (command.rs == command.rt) + { sprintf(CommandName,"b\t%s", LabelName(PC + ((short)command.offset << 2) + 4)); - } else if ((command.rs == 0) ^ (command.rt == 0)){ + } + else if ((command.rs == 0) ^ (command.rt == 0)) + { sprintf(CommandName,"beqzl\t%s, %s", CRegName::GPR[command.rs == 0 ? command.rt : command.rs ], LabelName(PC + ((short)command.offset << 2) + 4)); - } else { + } + else + { sprintf(CommandName,"beql\t%s, %s, %s", CRegName::GPR[command.rs], CRegName::GPR[command.rt], LabelName(PC + ((short)command.offset << 2) + 4)); } break; case R4300i_BNEL: - if ((command.rs == 0) ^ (command.rt == 0)){ + if ((command.rs == 0) ^ (command.rt == 0)) + { sprintf(CommandName,"bnezl\t%s, %s", CRegName::GPR[command.rs == 0 ? command.rt : command.rs ], LabelName(PC + ((short)command.offset << 2) + 4)); - } else { + } + else + { sprintf(CommandName,"bnel\t%s, %s, %s", CRegName::GPR[command.rs], CRegName::GPR[command.rt], LabelName(PC + ((short)command.offset << 2) + 4)); } diff --git a/Source/Project64/N64 System/Cheat Class.cpp b/Source/Project64/N64 System/Cheat Class.cpp index 1ef3de18a..8432f5573 100644 --- a/Source/Project64/N64 System/Cheat Class.cpp +++ b/Source/Project64/N64 System/Cheat Class.cpp @@ -99,11 +99,6 @@ void CCheats::LoadPermCheats (CPlugins * Plugins) } for (int CheatNo = 0; CheatNo < MaxCheats; CheatNo ++ ) { - //(((*(CPlugin*)(&*((*Plugins).m_Gfx)))).m_PluginInfo).Name - //+ (((*(CPlugin*)(&*((*Plugins).m_Gfx)))).m_PluginInfo).Name 0x038830dc "Jabo's Direct3D8 1.7.0.57-ver5" char [100] - -// + Name 0x02d66d2c "Glide64 For PJ64 (Debug): 2.0.0.3" char [100] - stdstr LineEntry; if (!g_Settings->LoadStringIndex(Rdb_GameCheatFix,CheatNo,LineEntry) || LineEntry.empty()) { @@ -150,10 +145,11 @@ void CCheats::LoadPermCheats (CPlugins * Plugins) } } -void CCheats::LoadCheats(bool DisableSelected) +void CCheats::LoadCheats(bool DisableSelected, CPlugins * Plugins) { m_CheatSelectionChanged = false; m_Codes.clear(); + LoadPermCheats(Plugins); for (int CheatNo = 0; CheatNo < MaxCheats; CheatNo ++ ) { @@ -525,7 +521,7 @@ void CCheats::AddCodeLayers (int CheatNumber, const stdstr &CheatName, HWND hPar //Work out text to add char Text[500], Item[500]; - if (CheatName.length() > (sizeof(Text) - 5)) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (CheatName.length() > (sizeof(Text) - 5)) { g_Notify->BreakPoint(__FILEW__,__LINE__); } strcpy(Text,CheatName.c_str()); if (strchr(Text,'\\') > 0) { *strchr(Text,'\\') = 0; } @@ -569,7 +565,7 @@ void CCheats::AddCodeLayers (int CheatNumber, const stdstr &CheatName, HWND hPar stdstr CCheats::GetCheatName(int CheatNo, bool AddExtension) const { - if (CheatNo > MaxCheats) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (CheatNo > MaxCheats) { g_Notify->BreakPoint(__FILEW__,__LINE__); } stdstr LineEntry = g_Settings->LoadStringIndex(Cheat_Entry,CheatNo); if (LineEntry.length() == 0) { return LineEntry; } @@ -982,7 +978,7 @@ int CALLBACK CCheats::CheatListProc (HWND hDlg,DWORD uMsg,DWORD wParam, DWORD lP GetWindowRect(GetDlgItem(hDlg, IDC_UNMARK), &rcButton); _this->m_hCheatTree = (HWND)CreateWindowEx(WS_EX_CLIENTEDGE,WC_TREEVIEW,"", - WS_CHILD | WS_BORDER | WS_VISIBLE | WS_VSCROLL | TVS_HASLINES | + WS_CHILD | WS_VISIBLE | WS_VSCROLL | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_DISABLEDRAGDROP |WS_TABSTOP| TVS_FULLROWSELECT, 8, 15, rcList.right-rcList.left-16, rcButton.top-rcList.top-22, hDlg, (HMENU)IDC_MYTREE, GetModuleHandle(NULL), NULL); @@ -1427,7 +1423,10 @@ int CALLBACK CCheats::ManageCheatsProc (HWND hDlg,DWORD uMsg,DWORD wParam, DWORD WndPlac.length = sizeof(WndPlac); GetWindowPlacement(hDlg, &WndPlac); + LONG_PTR originalWndProc = GetWindowLongPtrW(hDlg, GWLP_WNDPROC); + SetWindowLongPtrW(hDlg, GWLP_WNDPROC, (LONG_PTR) DefWindowProcW); SetWindowTextW(hDlg, GS(CHEAT_TITLE)); + SetWindowLongPtrW(hDlg, GWLP_WNDPROC, originalWndProc); _this->m_hSelectCheat = (HWND)CreateDialogParam(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_Cheats_List),hDlg,(DLGPROC)CheatListProc,(LPARAM)_this); SetWindowPos((HWND)_this->m_hSelectCheat,HWND_TOP, 5, 8, 0, 0, SWP_NOSIZE); ShowWindow((HWND)_this->m_hSelectCheat,SW_SHOW); diff --git a/Source/Project64/N64 System/Cheat Class.h b/Source/Project64/N64 System/Cheat Class.h index 5221019c6..c895aa9fc 100644 --- a/Source/Project64/N64 System/Cheat Class.h +++ b/Source/Project64/N64 System/Cheat Class.h @@ -19,9 +19,8 @@ public: bool IsCheatMessage ( MSG * msg ); void ApplyCheats ( CMipsMemory * MMU ); void ApplyGSButton ( CMipsMemory * MMU ); - void LoadCheats ( bool DisableSelected ); + void LoadCheats ( bool DisableSelected, CPlugins * Plugins ); void SelectCheats ( HWND hParent, bool BlockExecution ); - void LoadPermCheats ( CPlugins * Plugins ); inline bool CheatsSlectionChanged ( void ) const { return m_CheatSelectionChanged; } private: @@ -34,8 +33,8 @@ private: typedef std::vector CODES_ARRAY; enum { MaxCheats = 50000 }; + void LoadPermCheats ( CPlugins * Plugins ); - static int CALLBACK CheatAddProc ( HWND hDlg,DWORD uMsg,DWORD wParam, DWORD lParam ); static int CALLBACK CheatListProc ( HWND hDlg,DWORD uMsg,DWORD wParam, DWORD lParam ); static int CALLBACK ManageCheatsProc ( HWND hDlg,DWORD uMsg,DWORD wParam, DWORD lParam ); diff --git a/Source/Project64/N64 System/Debugger/Debug Dialog.h b/Source/Project64/N64 System/Debugger/Debug Dialog.h index 7abd80bb1..519b02338 100644 --- a/Source/Project64/N64 System/Debugger/Debug Dialog.h +++ b/Source/Project64/N64 System/Debugger/Debug Dialog.h @@ -61,7 +61,9 @@ public: if (m_hWnd) { SetForegroundWindow((HWND)m_hWnd); - } else { + } + else + { DWORD ThreadID; ResetEvent(m_CreatedEvent); m_DialogThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CreateDebuggerWindow,(LPVOID)this,0, &ThreadID); diff --git a/Source/Project64/N64 System/Debugger/Debugger - Memory Dump.cpp b/Source/Project64/N64 System/Debugger/Debugger - Memory Dump.cpp index d7d65e61b..5ecb12c52 100644 --- a/Source/Project64/N64 System/Debugger/Debugger - Memory Dump.cpp +++ b/Source/Project64/N64 System/Debugger/Debugger - Memory Dump.cpp @@ -140,13 +140,19 @@ LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, // DialogBoxParam(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_Cheats_DumpMemory), // (HWND)hParent, (DLGPROC)WinProc,(LPARAM)this); //} -//DWORD CDumpMemory::AsciiToHex (const char * HexValue) { +//DWORD CDumpMemory::AsciiToHex (const char * HexValue) +//{ // DWORD Count, Finish, Value = 0; // Finish = strlen(HexValue); -// if (Finish > 8 ) { Finish = 8; } -// for (Count = 0; Count < Finish; Count++){ +// if (Finish > 8 ) +// { +// Finish = 8; +// } +// for (Count = 0; Count < Finish; Count++ +// { // Value = (Value << 4); -// switch( HexValue[Count] ) { +// switch ( HexValue[Count] ) +// { // case '0': break; // case '1': Value += 1; break; // case '2': Value += 2; break; @@ -178,7 +184,8 @@ LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, //} //int CALLBACK CDumpMemory::WinProc (HWND hDlg,DWORD uMsg,DWORD wParam, DWORD lParam) //{ -// switch (uMsg) { +// switch (uMsg) +// { // case WM_INITDIALOG: // { // CDumpMemory * _this = (CDumpMemory *)lParam; @@ -199,23 +206,39 @@ LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, // case IDC_E_START_ADDR: // case IDC_E_END_ADDR: // case IDC_E_ALT_PC: -// if (HIWORD(wParam) == EN_UPDATE) { +// if (HIWORD(wParam) == EN_UPDATE) +// { // CDumpMemory * _this = (CDumpMemory *)GetProp(hDlg,"Class"); // TCHAR szTmp[20], szTmp2[20]; // DWORD Value; // GetDlgItemText(hDlg,LOWORD(wParam),szTmp,sizeof(szTmp)); // Value = szTmp[1] =='x'?AsciiToHex(&szTmp[2]):AsciiToHex(szTmp); -// //if (Value > Stop) { Value = Stop; } -// //if (Value < Start) { Value = Start; } +// //if (Value > Stop) +// //{ +// // Value = Stop; +// //} +// //if (Value < Start) +// //{ +// // Value = Start; +// //} // sprintf(szTmp2,"0x%X",Value); -// if (strcmp(szTmp,szTmp2) != 0) { +// if (strcmp(szTmp,szTmp2) != 0) +// { // SetDlgItemText(hDlg,LOWORD(wParam),szTmp2); -// if (_this->SelStop == 0) { _this->SelStop = strlen(szTmp2); _this->SelStart = _this->SelStop; } +// if (_this->SelStop == 0) +// { +// _this->SelStop = strlen(szTmp2); _this->SelStart = _this->SelStop; +// } // SendDlgItemMessage(hDlg,LOWORD(wParam),EM_SETSEL,(WPARAM)_this->SelStart,(LPARAM)_this->SelStop); -// } else { +// } +// else +// { // WORD NewSelStart, NewSelStop; // SendDlgItemMessage(hDlg,LOWORD(wParam),EM_GETSEL,(WPARAM)&NewSelStart,(LPARAM)&NewSelStop); -// if (NewSelStart != 0) { _this->SelStart = NewSelStart; _this->SelStop = NewSelStop; } +// if (NewSelStart != 0) +// { +// _this->SelStart = NewSelStart; _this->SelStop = NewSelStop; +// } // } // } // break; @@ -314,7 +337,7 @@ bool CDumpMemory::DumpMemory ( LPCSTR FileName,DumpFormat Format, DWORD StartPC, } LogFile.SetFlush(false); LogFile.SetTruncateFile(false); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix char Command[200]; for (COpcode OpCode(StartPC); OpCode.PC() < EndPC; OpCode.Next()) @@ -348,15 +371,21 @@ bool CDumpMemory::DumpMemory ( LPCSTR FileName,DumpFormat Format, DWORD StartPC, // (HWND)hParent, (DLGPROC)WinProc,(LPARAM)this); //} // -//DWORD CDumpMemory::AsciiToHex (const char * HexValue) { +//DWORD CDumpMemory::AsciiToHex (const char * HexValue) +//{ // DWORD Count, Finish, Value = 0; // // Finish = strlen(HexValue); -// if (Finish > 8 ) { Finish = 8; } +// if (Finish > 8 ) +// { +// Finish = 8; +// } // -// for (Count = 0; Count < Finish; Count++){ +// for (Count = 0; Count < Finish; Count++) +// { // Value = (Value << 4); -// switch( HexValue[Count] ) { +// switch ( HexValue[Count] ) +// { // case '0': break; // case '1': Value += 1; break; // case '2': Value += 2; break; @@ -389,7 +418,8 @@ bool CDumpMemory::DumpMemory ( LPCSTR FileName,DumpFormat Format, DWORD StartPC, // //int CALLBACK CDumpMemory::WinProc (HWND hDlg,DWORD uMsg,DWORD wParam, DWORD lParam) //{ -// switch (uMsg) { +// switch (uMsg) +// { // case WM_INITDIALOG: // { // CDumpMemory * _this = (CDumpMemory *)lParam; @@ -412,7 +442,8 @@ bool CDumpMemory::DumpMemory ( LPCSTR FileName,DumpFormat Format, DWORD StartPC, // case IDC_E_START_ADDR: // case IDC_E_END_ADDR: // case IDC_E_ALT_PC: -// if (HIWORD(wParam) == EN_UPDATE) { +// if (HIWORD(wParam) == EN_UPDATE) +// { // CDumpMemory * _this = (CDumpMemory *)GetProp(hDlg,"Class"); // // TCHAR szTmp[20], szTmp2[20]; @@ -420,17 +451,29 @@ bool CDumpMemory::DumpMemory ( LPCSTR FileName,DumpFormat Format, DWORD StartPC, // // GetDlgItemText(hDlg,LOWORD(wParam),szTmp,sizeof(szTmp)); // Value = szTmp[1] =='x'?AsciiToHex(&szTmp[2]):AsciiToHex(szTmp); -// //if (Value > Stop) { Value = Stop; } -// //if (Value < Start) { Value = Start; } +// //if (Value > Stop) +// //{ +// // Value = Stop; +// //} +// //if (Value < Start) +// //{ +// // Value = Start; +// //} // sprintf(szTmp2,"0x%X",Value); -// if (strcmp(szTmp,szTmp2) != 0) { +// if (strcmp(szTmp,szTmp2) != 0) +// { // SetDlgItemText(hDlg,LOWORD(wParam),szTmp2); // if (_this->SelStop == 0) { _this->SelStop = strlen(szTmp2); _this->SelStart = _this->SelStop; } // SendDlgItemMessage(hDlg,LOWORD(wParam),EM_SETSEL,(WPARAM)_this->SelStart,(LPARAM)_this->SelStop); -// } else { +// } +// else +// { // WORD NewSelStart, NewSelStop; // SendDlgItemMessage(hDlg,LOWORD(wParam),EM_GETSEL,(WPARAM)&NewSelStart,(LPARAM)&NewSelStop); -// if (NewSelStart != 0) { _this->SelStart = NewSelStart; _this->SelStop = NewSelStop; } +// if (NewSelStart != 0) +// { +// _this->SelStart = NewSelStart; _this->SelStop = NewSelStop; +// } // } // } // break; diff --git a/Source/Project64/N64 System/Debugger/Debugger - Memory Search.cpp b/Source/Project64/N64 System/Debugger/Debugger - Memory Search.cpp index a7082ed71..ff94e7a33 100644 --- a/Source/Project64/N64 System/Debugger/Debugger - Memory Search.cpp +++ b/Source/Project64/N64 System/Debugger/Debugger - Memory Search.cpp @@ -226,7 +226,9 @@ void CDebugMemorySearch::EnableUnknownOptions( bool Enable ) { ::SetWindowText(GetDlgItem(IDC_BTN_SEARCH), m_HaveResults ? "Search Results" : "Search"); } - } else { + } + else + { ::EnableWindow(GetDlgItem(IDC_UNKNOWN_ALIGN), false ); if (Enable) { @@ -249,8 +251,14 @@ void CDebugMemorySearch::SearchForValue( void ) m_UnknownSize.SetCurSel(m_ValueSize.GetCurSel()); LPCTSTR DisplayStr = "0x%08X"; - if (Size == _16Bit) { DisplayStr = "0x%04X"; } - else if (Size == _8Bit) { DisplayStr = "0x%04X"; } + if (Size == _16Bit) + { + DisplayStr = "0x%04X"; + } + else if (Size == _8Bit) + { + DisplayStr = "0x%04X"; + } if (!m_HaveResults) { @@ -288,7 +296,9 @@ void CDebugMemorySearch::SearchForValue( void ) ::SetWindowText(GetDlgItem(IDC_BTN_SEARCH),"Search Results"); ::ShowWindow(GetDlgItem(IDC_RESET_BUTTON),SW_SHOW); ::EnableWindow(GetDlgItem(IDC_VALUE_ALIGN),false); - } else { + } + else + { int ItemCount = m_SearchResults.GetItemCount(); for (int i = ItemCount - 1; i >= 0; i--) { @@ -298,7 +308,8 @@ void CDebugMemorySearch::SearchForValue( void ) DWORD NewValue = 0; BOOL valid = false; - switch (Size) { + switch (Size) + { case _8Bit: { BYTE mem = 0; @@ -317,7 +328,7 @@ void CDebugMemorySearch::SearchForValue( void ) valid = g_MMU->LW_PAddr(Result.PAddr, NewValue); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Value == NewValue) @@ -328,7 +339,9 @@ void CDebugMemorySearch::SearchForValue( void ) sprintf(LocationStr,DisplayStr,Result.Value); m_SearchResults.SetItemText(i,3,LocationStr); Result.Value = NewValue; - } else { + } + else + { m_SearchResults.DeleteItem(i); } } @@ -351,8 +364,14 @@ void CDebugMemorySearch::SearchForUnknown() MemorySize Size = (MemorySize)m_UnknownSize.GetItemData(m_UnknownSize.GetCurSel()); m_ValueSize.SetCurSel(m_UnknownSize.GetCurSel()); LPCTSTR DisplayStr = "0x%08X"; - if (Size == _16Bit) { DisplayStr = "0x%04X"; } - else if (Size == _8Bit) { DisplayStr = "0x%04X"; } + if (Size == _16Bit) + { + DisplayStr = "0x%04X"; + } + else if (Size == _8Bit) + { + DisplayStr = "0x%04X"; + } if (!m_HaveResults) { m_HaveResults = true; @@ -411,7 +430,9 @@ void CDebugMemorySearch::SearchForUnknown() ::ShowWindow(GetDlgItem(IDC_RESET_BUTTON),SW_SHOW); ::EnableWindow(GetDlgItem(IDC_RADIO_TEXT),false); ::EnableWindow(GetDlgItem(IDC_RADIO_JAL),false); - } else { + } + else + { int ItemCount = m_SearchResults.GetItemCount(); for (int i = ItemCount - 1; i >= 0; i--) { @@ -422,7 +443,8 @@ void CDebugMemorySearch::SearchForUnknown() DWORD NewValue = 0; BOOL valid = false; - switch (Size) { + switch (Size) + { case _8Bit: { BYTE mem = 0; @@ -441,7 +463,7 @@ void CDebugMemorySearch::SearchForUnknown() valid = g_MMU->LW_PAddr(Result.PAddr, NewValue); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Option) @@ -471,7 +493,7 @@ void CDebugMemorySearch::SearchForUnknown() } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (UpdateResult) @@ -482,7 +504,9 @@ void CDebugMemorySearch::SearchForUnknown() sprintf(LocationStr,DisplayStr,Result.Value); m_SearchResults.SetItemText(i,3,LocationStr); Result.Value = NewValue; - } else { + } + else + { m_SearchResults.DeleteItem(i); } } @@ -492,7 +516,7 @@ void CDebugMemorySearch::SearchForUnknown() void CDebugMemorySearch::SearchForText() { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CDebugMemorySearch::Reset ( void ) @@ -572,7 +596,7 @@ bool CDebugMemorySearch::SearchForChanges(SearchMemChangeState SearchType, Memor if (SearchType == SearchChangeState_Reset) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } if (Size == _32Bit) { StartAddress = ((StartAddress + 3) & ~3); } if (Size == _16Bit) { StartAddress = ((StartAddress + 1) & ~1); } @@ -639,7 +663,7 @@ bool CDebugMemorySearch::SearchForChanges(SearchMemChangeState SearchType, Memor } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } return false; @@ -652,8 +676,14 @@ bool CDebugMemorySearch::SearchForValue (DWORD Value, MemorySize Size, DWORD &St return false; } - if (Size == _32Bit) { StartAddress = ((StartAddress + 3) & ~3); } - if (Size == _16Bit) { StartAddress = ((StartAddress + 1) & ~1); } + if (Size == _32Bit) + { + StartAddress = ((StartAddress + 3) & ~3); + } + if (Size == _16Bit) + { + StartAddress = ((StartAddress + 1) & ~1); + } //search memory if (StartAddress < g_MMU->RdramSize()) @@ -702,7 +732,7 @@ bool CDebugMemorySearch::SearchForValue (DWORD Value, MemorySize Size, DWORD &St } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } if (StartAddress >= 0x10000000) @@ -752,9 +782,8 @@ bool CDebugMemorySearch::SearchForValue (DWORD Value, MemorySize Size, DWORD &St } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } return false; } - diff --git a/Source/Project64/N64 System/Debugger/Debugger - Memory Search.h b/Source/Project64/N64 System/Debugger/Debugger - Memory Search.h index 1ca9fec22..d3a42245e 100644 --- a/Source/Project64/N64 System/Debugger/Debugger - Memory Search.h +++ b/Source/Project64/N64 System/Debugger/Debugger - Memory Search.h @@ -41,7 +41,8 @@ private: SearchChangeState_Lessthan, }; - typedef struct { + typedef struct + { DWORD PAddr; DWORD Value; } SearchResultItem; diff --git a/Source/Project64/N64 System/Debugger/Debugger - TLB.cpp b/Source/Project64/N64 System/Debugger/Debugger - TLB.cpp index 3e5fb4275..4f4037824 100644 --- a/Source/Project64/N64 System/Debugger/Debugger - TLB.cpp +++ b/Source/Project64/N64 System/Debugger/Debugger - TLB.cpp @@ -115,7 +115,8 @@ void CDebugTlb::RefreshTLBWindow (void) int count; CTLB::TLB_ENTRY * tlb = g_TLB->m_tlb; - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { sprintf(Output,"0x%02X",count); item.mask = LVIF_TEXT; item.iItem = count; @@ -128,66 +129,87 @@ void CDebugTlb::RefreshTLBWindow (void) OldItem.cchTextMax = sizeof( OldText )-1; OldItem.iSubItem = 0; - if (ListView_GetItemCount(hList) <= count) { + if (ListView_GetItemCount(hList) <= count) + { ListView_InsertItem(hList,&item); - } else { + } + else + { ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } } - if (tlb[count].EntryDefined) { + if (tlb[count].EntryDefined) + { sprintf(Output,"0x%08X",tlb[count].PageMask.Value); - } else { + } + else + { strcpy(Output,"................"); } item.iSubItem = 1; OldItem.iSubItem = 1; ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } - if (tlb[count].EntryDefined) { + if (tlb[count].EntryDefined) + { sprintf(Output,"0x%08X",tlb[count].EntryHi.Value); - } else { + } + else + { strcpy(Output,"................"); } item.iSubItem = 2; OldItem.iSubItem = 2; ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } - if (tlb[count].EntryDefined) { + if (tlb[count].EntryDefined) + { sprintf(Output,"0x%08X",tlb[count].EntryLo0.Value); - } else { + } + else + { strcpy(Output,"................"); } item.iSubItem = 3; OldItem.iSubItem = 3; ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } - if (tlb[count].EntryDefined) { + if (tlb[count].EntryDefined) + { sprintf(Output,"0x%08X",tlb[count].EntryLo1.Value); - } else { + } + else + { strcpy(Output,"................"); } item.iSubItem = 4; OldItem.iSubItem = 4; ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } } CTLB::FASTTLB * FastTlb = g_TLB->m_FastTlb; hList = GetDlgItem(IDC_LIST2); - for (count = 0; count < 64; count ++) { + for (count = 0; count < 64; count ++) + { sprintf(Output,"0x%02X",count); item.mask = LVIF_TEXT; item.iItem = count; @@ -200,49 +222,65 @@ void CDebugTlb::RefreshTLBWindow (void) OldItem.cchTextMax = sizeof( OldText )-1; OldItem.iSubItem = 0; - if (ListView_GetItemCount(hList) <= count) { + if (ListView_GetItemCount(hList) <= count) + { item.iItem = ListView_InsertItem(hList,&item); - } else { + } + else + { ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } } - if (FastTlb[count].ValidEntry) { + if (FastTlb[count].ValidEntry) + { sprintf(Output,"%s",FastTlb[count].VALID?"Yes":"No"); - } else { + } + else + { strcpy(Output,"................"); } item.iSubItem = 1; OldItem.iSubItem = 1; ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } - if (FastTlb[count].ValidEntry && FastTlb[count].VALID) { + if (FastTlb[count].ValidEntry && FastTlb[count].VALID) + { sprintf(Output,"%s",FastTlb[count].DIRTY?"Yes":"No"); - } else { + } + else + { strcpy(Output,"................"); } item.iSubItem = 2; OldItem.iSubItem = 2; ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } - if (FastTlb[count].ValidEntry && FastTlb[count].VALID) { + if (FastTlb[count].ValidEntry && FastTlb[count].VALID) + { sprintf(Output,"%08X:%08X -> %08X:%08X",FastTlb[count].VSTART,FastTlb[count].VEND, FastTlb[count].PHYSSTART,FastTlb[count].PHYSEND); - } else { + } + else + { strcpy(Output,"................"); } item.iSubItem = 3; OldItem.iSubItem = 3; ListView_GetItem(hList,&OldItem); - if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) { + if ( strcmp( item.pszText, OldItem.pszText ) != 0 ) + { ListView_SetItem(hList,&item); } } diff --git a/Source/Project64/N64 System/Debugger/Debugger - View Memory.cpp b/Source/Project64/N64 System/Debugger/Debugger - View Memory.cpp index 93f960841..441a973c9 100644 --- a/Source/Project64/N64 System/Debugger/Debugger - View Memory.cpp +++ b/Source/Project64/N64 System/Debugger/Debugger - View Memory.cpp @@ -34,7 +34,8 @@ LRESULT CDebugMemoryView::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM memset(m_CompareValid,0,sizeof(m_CompareValid)); HWND hScrlBar = GetDlgItem(IDC_SCRL_BAR); - if (hScrlBar) { + if (hScrlBar) + { SCROLLINFO si; si.cbSize = sizeof(si); @@ -121,7 +122,7 @@ LRESULT CDebugMemoryView::OnDestroy ( void ) LRESULT CDebugMemoryView::OnClicked (WORD /*wNotifyCode*/, WORD wID, HWND , BOOL& /*bHandled*/) { - switch(wID) + switch (wID) { case IDC_REFRSH_MEM: RefreshMemory(true); @@ -162,7 +163,10 @@ LRESULT CDebugMemoryView::OnMemoryModified ( LPNMHDR lpNMHDR ) LPCSTR strValue = m_MemoryList->GetItemText(pListNotify->m_nItem,pListNotify->m_nSubItem); int Finish = strlen(strValue); - if (Finish > 8) { Finish = 8; } + if (Finish > 8) + { + Finish = 8; + } DWORD Value = 0; for (int i = 0; i < Finish; i++) { @@ -206,7 +210,9 @@ LRESULT CDebugMemoryView::OnMemoryModified ( LPNMHDR lpNMHDR ) { WriteTraceF(TraceError,__FUNCTION__ ": failed to store at %X",m_DataStartLoc + Pos); } - } else { + } + else + { if (!g_MMU->SB_PAddr(m_DataStartLoc + Pos,(BYTE)Value)) { WriteTraceF(TraceError,__FUNCTION__ ": failed to store at %X",m_DataStartLoc + Pos); @@ -249,7 +255,9 @@ void CDebugMemoryView::Insert_MemoryLineDump ( int LineNumber ) m_MemoryList->SetItemText(LineNumber,i,"-"); } } - } else { + } + else + { if ( strcmp( Output, m_MemoryList->GetItemText(LineNumber, 0) ) != 0 ) { m_MemoryList->SetItemText(LineNumber,0,Output); @@ -286,11 +294,15 @@ void CDebugMemoryView::Insert_MemoryLineDump ( int LineNumber ) if (m_CurrentData[Pos] < 30) { strcat(Ascii,"."); - } else { + } + else + { sprintf(AsciiAddOn,"%c",m_CurrentData[Pos]); strcat(Ascii,AsciiAddOn); } - } else { + } + else + { m_MemoryList->SetItemText(LineNumber,col,"**"); m_MemoryList->SetItemFormat( LineNumber,col, ITEM_FORMAT_NONE, ITEM_FLAGS_NONE ); m_MemoryList->SetItemColours( LineNumber, col, GetSysColor( COLOR_WINDOW ), GetSysColor( COLOR_WINDOWTEXT ) ); @@ -393,7 +405,9 @@ void CDebugMemoryView::RefreshMemory ( bool ResetCompare ) { ValidData = false; } - } else { + } + else + { if (!g_MMU->LW_PAddr(m_DataStartLoc & ~3, word.UW)) { ValidData = false; @@ -428,7 +442,9 @@ void CDebugMemoryView::RefreshMemory ( bool ResetCompare ) { ValidData = false; } - } else { + } + else + { if (!g_MMU->LW_PAddr(Pos, word.UW)) { ValidData = false; @@ -449,7 +465,8 @@ void CDebugMemoryView::RefreshMemory ( bool ResetCompare ) } } - for (int count = 0 ; count < 16;count ++ ){ + for (int count = 0 ; count < 16;count ++) + { Insert_MemoryLineDump ( count ); } } diff --git a/Source/Project64/N64 System/Debugger/Debugger UI.h b/Source/Project64/N64 System/Debugger/Debugger UI.h index d4e1d4e18..0884e6cf4 100644 --- a/Source/Project64/N64 System/Debugger/Debugger UI.h +++ b/Source/Project64/N64 System/Debugger/Debugger UI.h @@ -44,5 +44,3 @@ #include "Debugger - View Memory.h" #include "Debugger - Memory Dump.h" #include "Debugger - TLB.h" - - diff --git a/Source/Project64/N64 System/Interpreter/Interpreter CPU.cpp b/Source/Project64/N64 System/Interpreter/Interpreter CPU.cpp index 150ddb5a7..1efee0932 100644 --- a/Source/Project64/N64 System/Interpreter/Interpreter CPU.cpp +++ b/Source/Project64/N64 System/Interpreter/Interpreter CPU.cpp @@ -14,21 +14,25 @@ R4300iOp::Func * CInterpreterCPU::m_R4300i_Opcode = NULL; void ExecuteInterpreterOps (DWORD /*Cycles*/) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } -bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) { +bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) +{ OPCODE Command; - if (!g_MMU->LW_VAddr(PC + 4, Command.Hex)) { + if (!g_MMU->LW_VAddr(PC + 4, Command.Hex)) + { //g_Notify->DisplayError(L"Failed to load word 2"); //ExitThread(0); return TRUE; } - switch (Command.op) { + switch (Command.op) + { case R4300i_SPECIAL: - switch (Command.funct) { + switch (Command.funct) + { case R4300i_SPECIAL_SLL: case R4300i_SPECIAL_SRL: case R4300i_SPECIAL_SRA: @@ -62,9 +66,18 @@ bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) { case R4300i_SPECIAL_DSLL32: case R4300i_SPECIAL_DSRL32: case R4300i_SPECIAL_DSRA32: - if (Command.rd == 0) { return FALSE; } - if (Command.rd == Reg1) { return TRUE; } - if (Command.rd == Reg2) { return TRUE; } + if (Command.rd == 0) + { + return FALSE; + } + if (Command.rd == Reg1) + { + return TRUE; + } + if (Command.rd == Reg2) + { + return TRUE; + } break; case R4300i_SPECIAL_MULT: case R4300i_SPECIAL_MULTU: @@ -84,16 +97,28 @@ bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) { } break; case R4300i_CP0: - switch (Command.rs) { + switch (Command.rs) + { case R4300i_COP0_MT: break; case R4300i_COP0_MF: - if (Command.rt == 0) { return FALSE; } - if (Command.rt == Reg1) { return TRUE; } - if (Command.rt == Reg2) { return TRUE; } + if (Command.rt == 0) + { + return FALSE; + } + if (Command.rt == Reg1) + { + return TRUE; + } + if (Command.rt == Reg2) + { + return TRUE; + } break; default: - if ( (Command.rs & 0x10 ) != 0 ) { - switch( Command.funct ) { + if ( (Command.rs & 0x10 ) != 0 ) + { + switch ( Command.funct ) + { case R4300i_COP0_CO_TLBR: break; case R4300i_COP0_CO_TLBWI: break; case R4300i_COP0_CO_TLBWR: break; @@ -105,7 +130,9 @@ bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) { } return TRUE; } - } else { + } + else + { if (g_Settings->LoadBool(Debugger_Enabled)) { g_Notify->DisplayError(L"Does %s effect Delay slot at %X?\n7",R4300iOpcodeName(Command.Hex,PC+4), PC); @@ -115,11 +142,21 @@ bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) { } break; case R4300i_CP1: - switch (Command.fmt) { + switch (Command.fmt) + { case R4300i_COP1_MF: - if (Command.rt == 0) { return FALSE; } - if (Command.rt == Reg1) { return TRUE; } - if (Command.rt == Reg2) { return TRUE; } + if (Command.rt == 0) + { + return FALSE; + } + if (Command.rt == Reg1) + { + return TRUE; + } + if (Command.rt == Reg2) + { + return TRUE; + } break; case R4300i_COP1_CF: break; case R4300i_COP1_MT: break; @@ -158,9 +195,18 @@ bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) { case R4300i_LD: case R4300i_LWC1: case R4300i_LDC1: - if (Command.rt == 0) { return FALSE; } - if (Command.rt == Reg1) { return TRUE; } - if (Command.rt == Reg2) { return TRUE; } + if (Command.rt == 0) + { + return FALSE; + } + if (Command.rt == Reg1) + { + return TRUE; + } + if (Command.rt == Reg2) + { + return TRUE; + } break; case R4300i_CACHE: break; case R4300i_SB: break; @@ -181,7 +227,7 @@ bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2) { return FALSE; } -void CInterpreterCPU::BuildCPU (void ) +void CInterpreterCPU::BuildCPU (void) { R4300iOp::m_TestTimer = FALSE; R4300iOp::m_NextInstruction = NORMAL; @@ -190,14 +236,20 @@ void CInterpreterCPU::BuildCPU (void ) if (g_Settings->LoadBool(Game_32Bit)) { m_R4300i_Opcode = R4300iOp32::BuildInterpreter(); - } else { + } + else + { m_R4300i_Opcode = R4300iOp::BuildInterpreter(); } } -void CInterpreterCPU::InPermLoop (void) { +void CInterpreterCPU::InPermLoop (void) +{ // *** Changed ***/ - //if (CPU_Type == CPU_SyncCores) { SyncRegisters.CP0[9] +=5; } + //if (CPU_Type == CPU_SyncCores) + //{ + // SyncRegisters.CP0[9] +=5; + //} /* Interrupts enabled */ if (( g_Reg->STATUS_REGISTER & STATUS_IE ) == 0 || @@ -205,21 +257,27 @@ void CInterpreterCPU::InPermLoop (void) { ( g_Reg->STATUS_REGISTER & STATUS_ERL ) != 0 || ( g_Reg->STATUS_REGISTER & 0xFF00) == 0) { - if (g_Plugins->Gfx()->UpdateScreen != NULL) { g_Plugins->Gfx()->UpdateScreen(); } + if (g_Plugins->Gfx()->UpdateScreen != NULL) + { + g_Plugins->Gfx()->UpdateScreen(); + } //CurrentFrame = 0; //CurrentPercent = 0; //DisplayFPS(); g_Notify->DisplayError(GS(MSG_PERM_LOOP)); g_System->CloseCpu(); - } else { - if (*g_NextTimer > 0) { + } + else + { + if (*g_NextTimer > 0) + { *g_NextTimer = 0 - g_System->CountPerOp(); g_SystemTimer->UpdateTimers(); } } } -void CInterpreterCPU::ExecuteCPU (void ) +void CInterpreterCPU::ExecuteCPU (void) { bool & Done = g_System->m_EndEmulation; DWORD & PROGRAM_COUNTER = *_PROGRAM_COUNTER; @@ -232,7 +290,7 @@ void CInterpreterCPU::ExecuteCPU (void ) __try { - while(!Done) + while (!Done) { if (g_MMU->LW_VAddr(PROGRAM_COUNTER, Opcode.Hex)) { @@ -288,14 +346,17 @@ void CInterpreterCPU::ExecuteCPU (void ) } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } - } else { + } + else + { g_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP,PROGRAM_COUNTER); R4300iOp::m_NextInstruction = NORMAL; } } - } __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation()) ) { + } __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation()) ) + { g_Notify->DisplayError(GS(MSG_UNKNOWN_MEM_ACTION)); ExitThread(0); } @@ -314,7 +375,7 @@ void CInterpreterCPU::ExecuteOps ( int Cycles ) __try { - while(!Done) + while (!Done) { if (Cycles <= 0) { @@ -337,7 +398,7 @@ void CInterpreterCPU::ExecuteOps ( int Cycles ) //WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %d %d",*_PROGRAM_COUNTER,*g_NextTimer,g_SystemTimer->CurrentType()); }*/ m_R4300i_Opcode[ Opcode.op ](); - _GPR[0].DW = 0; + _GPR[0].DW = 0; /* MIPS $zero hard-wired to 0 */ Cycles -= CountPerOp; *g_NextTimer -= CountPerOp; @@ -395,14 +456,17 @@ void CInterpreterCPU::ExecuteOps ( int Cycles ) } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } - } else { + } + else + { g_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP,PROGRAM_COUNTER); R4300iOp::m_NextInstruction = NORMAL; } } - } __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation()) ) { + } __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation()) ) + { g_Notify->DisplayError(GS(MSG_UNKNOWN_MEM_ACTION)); ExitThread(0); } diff --git a/Source/Project64/N64 System/Interpreter/Interpreter Ops 32.cpp b/Source/Project64/N64 System/Interpreter/Interpreter Ops 32.cpp index 9cc1eff5f..6c1e1967a 100644 --- a/Source/Project64/N64 System/Interpreter/Interpreter Ops 32.cpp +++ b/Source/Project64/N64 System/Interpreter/Interpreter Ops 32.cpp @@ -628,7 +628,8 @@ R4300iOp32::Func * R4300iOp32::BuildInterpreter (void ) /************************* Opcode functions *************************/ -void R4300iOp32::JAL (void) { +void R4300iOp32::JAL (void) +{ m_NextInstruction = DELAY_SLOT; m_JumpToLocation = ((*_PROGRAM_COUNTER) & 0xF0000000) + (m_Opcode.target << 2); _GPR[31].UW[0] = (*_PROGRAM_COUNTER) + 8; @@ -639,9 +640,11 @@ void R4300iOp32::JAL (void) { } } -void R4300iOp32::BEQ (void) { +void R4300iOp32::BEQ (void) +{ m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0]) { + if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0]) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -650,14 +653,18 @@ void R4300iOp32::BEQ (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::BNE (void) { +void R4300iOp32::BNE (void) +{ m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] != _GPR[m_Opcode.rt].W[0]) { + if (_GPR[m_Opcode.rs].W[0] != _GPR[m_Opcode.rt].W[0]) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -666,14 +673,17 @@ void R4300iOp32::BNE (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } void R4300iOp32::BLEZ (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] <= 0) { + if (_GPR[m_Opcode.rs].W[0] <= 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -682,14 +692,18 @@ void R4300iOp32::BLEZ (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::BGTZ (void) { +void R4300iOp32::BGTZ (void) +{ m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] > 0) { + if (_GPR[m_Opcode.rs].W[0] > 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -698,49 +712,61 @@ void R4300iOp32::BGTZ (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::ADDI (void) { +void R4300iOp32::ADDI (void) +{ #ifdef Interpreter_StackTest - if (m_Opcode.rs == 29 && m_Opcode.rt == 29) { - StackValue += (short)m_Opcode.immediate; - } -#endif - if (m_Opcode.rt == 0) { return; } - _GPR[m_Opcode.rt].W[0] = (_GPR[m_Opcode.rs].W[0] + ((short)m_Opcode.immediate)); -#ifdef Interpreter_StackTest - if (m_Opcode.rt == 29 && m_Opcode.rs != 29) { - StackValue = _GPR[m_Opcode.rt].W[0]; - } -#endif -} - -void R4300iOp32::ADDIU (void) { -#ifdef Interpreter_StackTest - if (m_Opcode.rs == 29 && m_Opcode.rt == 29) { + if (m_Opcode.rs == 29 && m_Opcode.rt == 29) + { StackValue += (short)m_Opcode.immediate; } #endif _GPR[m_Opcode.rt].W[0] = (_GPR[m_Opcode.rs].W[0] + ((short)m_Opcode.immediate)); #ifdef Interpreter_StackTest - if (m_Opcode.rt == 29 && m_Opcode.rs != 29) { + if (m_Opcode.rt == 29 && m_Opcode.rs != 29) + { StackValue = _GPR[m_Opcode.rt].W[0]; } #endif } -void R4300iOp32::SLTI (void) { - if (_GPR[m_Opcode.rs].W[0] < (__int64)((short)m_Opcode.immediate)) { +void R4300iOp32::ADDIU (void) +{ +#ifdef Interpreter_StackTest + if (m_Opcode.rs == 29 && m_Opcode.rt == 29) + { + StackValue += (short)m_Opcode.immediate; + } +#endif + _GPR[m_Opcode.rt].W[0] = (_GPR[m_Opcode.rs].W[0] + ((short)m_Opcode.immediate)); +#ifdef Interpreter_StackTest + if (m_Opcode.rt == 29 && m_Opcode.rs != 29) + { + StackValue = _GPR[m_Opcode.rt].W[0]; + } +#endif +} + +void R4300iOp32::SLTI (void) +{ + if (_GPR[m_Opcode.rs].W[0] < (__int64)((short)m_Opcode.immediate)) + { _GPR[m_Opcode.rt].W[0] = 1; - } else { + } + else + { _GPR[m_Opcode.rt].W[0] = 0; } } -void R4300iOp32::SLTIU (void) { +void R4300iOp32::SLTIU (void) +{ int imm32 = (short)m_Opcode.immediate; __int64 imm64; @@ -748,30 +774,36 @@ void R4300iOp32::SLTIU (void) { _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].UW[0] < (unsigned __int64)imm64?1:0; } -void R4300iOp32::ANDI (void) { +void R4300iOp32::ANDI (void) +{ _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].W[0] & m_Opcode.immediate; } -void R4300iOp32::ORI (void) { +void R4300iOp32::ORI (void) +{ _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].W[0] | m_Opcode.immediate; } -void R4300iOp32::XORI (void) { +void R4300iOp32::XORI (void) +{ _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rs].W[0] ^ m_Opcode.immediate; } -void R4300iOp32::LUI (void) { - if (m_Opcode.rt == 0) { return; } +void R4300iOp32::LUI (void) +{ _GPR[m_Opcode.rt].W[0] = (long)((short)m_Opcode.offset << 16); #ifdef Interpreter_StackTest - if (m_Opcode.rt == 29) { + if (m_Opcode.rt == 29) + { StackValue = _GPR[m_Opcode.rt].W[0]; } #endif } -void R4300iOp32::BEQL (void) { - if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0]) { +void R4300iOp32::BEQL (void) +{ + if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0]) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -781,14 +813,18 @@ void R4300iOp32::BEQL (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::BNEL (void) { - if (_GPR[m_Opcode.rs].W[0] != _GPR[m_Opcode.rt].W[0]) { +void R4300iOp32::BNEL (void) +{ + if (_GPR[m_Opcode.rs].W[0] != _GPR[m_Opcode.rt].W[0]) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -798,14 +834,18 @@ void R4300iOp32::BNEL (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::BLEZL (void) { - if (_GPR[m_Opcode.rs].W[0] <= 0) { +void R4300iOp32::BLEZL (void) +{ + if (_GPR[m_Opcode.rs].W[0] <= 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -815,14 +855,18 @@ void R4300iOp32::BLEZL (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::BGTZL (void) { - if (_GPR[m_Opcode.rs].W[0] > 0) { +void R4300iOp32::BGTZL (void) +{ + if (_GPR[m_Opcode.rs].W[0] > 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -832,39 +876,54 @@ void R4300iOp32::BGTZL (void) { m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::LB (void) { +void R4300iOp32::LB (void) +{ DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if (m_Opcode.rt == 0) { return; } - if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LB TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rt].B[0]; } } -void R4300iOp32::LH (void) { +void R4300iOp32::LH (void) +{ DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 1) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) { - if (bShowTLBMisses()) { + if ((Address & 1) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } + if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LH TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rt].HW[0]; } } -void R4300iOp32::LWL (void) { +void R4300iOp32::LWL (void) +{ DWORD Offset, Address, Value; Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; @@ -872,7 +931,8 @@ void R4300iOp32::LWL (void) { if (!g_MMU->LW_VAddr((Address & ~3),Value)) { - if (bShowTLBMisses()) { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LWL TLB: %X",Address); } TLB_READ_EXCEPTION(Address); @@ -883,53 +943,73 @@ void R4300iOp32::LWL (void) { _GPR[m_Opcode.rt].W[0] += (int)(Value << LWL_SHIFT[Offset]); } -void R4300iOp32::LW (void) { +void R4300iOp32::LW (void) +{ DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } if (LogOptions.GenerateLog) { Log_LW((*_PROGRAM_COUNTER),Address); } - if (m_Opcode.rt == 0) { return; } - - if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LW TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rt].W[0]; } } -void R4300iOp32::LBU (void) { +void R4300iOp32::LBU (void) +{ DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LBU TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].UW[0] = _GPR[m_Opcode.rt].UB[0]; } } -void R4300iOp32::LHU (void) { +void R4300iOp32::LHU (void) +{ DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 1) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) { - if (bShowTLBMisses()) { + if ((Address & 1) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } + if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LHU TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].UW[0] = _GPR[m_Opcode.rt].UHW[0]; } } -void R4300iOp32::LWR (void) { +void R4300iOp32::LWR (void) +{ DWORD Offset, Address, Value; Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; @@ -937,7 +1017,7 @@ void R4300iOp32::LWR (void) { if (!g_MMU->LW_VAddr((Address & ~3),Value)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); if (bShowTLBMisses()) { g_Notify->DisplayError(L"LWR TLB: %X",Address); @@ -949,122 +1029,158 @@ void R4300iOp32::LWR (void) { _GPR[m_Opcode.rt].W[0] += (int)(Value >> LWR_SHIFT[Offset]); } -void R4300iOp32::LWU (void) { +void R4300iOp32::LWU (void) +{ DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - if (m_Opcode.rt == 0) { return; } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } - if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LWU TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].UW[0] = _GPR[m_Opcode.rt].UW[0]; } } -void R4300iOp32::LL (void) { +void R4300iOp32::LL (void) +{ DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } - if (m_Opcode.rt == 0) { return; } - - if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LL TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].W[0] = _GPR[m_Opcode.rt].W[0]; (*_LLBit) = 1; } } /********************** R4300i OpCodes: Special **********************/ -void R4300iOp32::SPECIAL_SLL (void) { +void R4300iOp32::SPECIAL_SLL (void) +{ _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] << m_Opcode.sa); } -void R4300iOp32::SPECIAL_SRL (void) { +void R4300iOp32::SPECIAL_SRL (void) +{ _GPR[m_Opcode.rd].W[0] = (int)(_GPR[m_Opcode.rt].UW[0] >> m_Opcode.sa); } -void R4300iOp32::SPECIAL_SRA (void) { +void R4300iOp32::SPECIAL_SRA (void) +{ _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] >> m_Opcode.sa); } -void R4300iOp32::SPECIAL_SLLV (void) { - if (m_Opcode.rd == 0) { return; } +void R4300iOp32::SPECIAL_SLLV (void) +{ _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] << (_GPR[m_Opcode.rs].UW[0] & 0x1F)); } -void R4300iOp32::SPECIAL_SRLV (void) { +void R4300iOp32::SPECIAL_SRLV (void) +{ _GPR[m_Opcode.rd].W[0] = (int)(_GPR[m_Opcode.rt].UW[0] >> (_GPR[m_Opcode.rs].UW[0] & 0x1F)); } -void R4300iOp32::SPECIAL_SRAV (void) { +void R4300iOp32::SPECIAL_SRAV (void) +{ _GPR[m_Opcode.rd].W[0] = (_GPR[m_Opcode.rt].W[0] >> (_GPR[m_Opcode.rs].UW[0] & 0x1F)); } -void R4300iOp32::SPECIAL_JALR (void) { +void R4300iOp32::SPECIAL_JALR (void) +{ m_NextInstruction = DELAY_SLOT; m_JumpToLocation = _GPR[m_Opcode.rs].UW[0]; _GPR[m_Opcode.rd].W[0] = (long)((*_PROGRAM_COUNTER) + 8); m_TestTimer = TRUE; } -void R4300iOp32::SPECIAL_ADD (void) { +void R4300iOp32::SPECIAL_ADD (void) +{ _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] + _GPR[m_Opcode.rt].W[0]; } -void R4300iOp32::SPECIAL_ADDU (void) { +void R4300iOp32::SPECIAL_ADDU (void) +{ _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] + _GPR[m_Opcode.rt].W[0]; } -void R4300iOp32::SPECIAL_SUB (void) { +void R4300iOp32::SPECIAL_SUB (void) +{ _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] - _GPR[m_Opcode.rt].W[0]; } -void R4300iOp32::SPECIAL_SUBU (void) { +void R4300iOp32::SPECIAL_SUBU (void) +{ _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] - _GPR[m_Opcode.rt].W[0]; } -void R4300iOp32::SPECIAL_AND (void) { +void R4300iOp32::SPECIAL_AND (void) +{ _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] & _GPR[m_Opcode.rt].W[0]; } -void R4300iOp32::SPECIAL_OR (void) { +void R4300iOp32::SPECIAL_OR (void) +{ _GPR[m_Opcode.rd].W[0] = _GPR[m_Opcode.rs].W[0] | _GPR[m_Opcode.rt].W[0]; #ifdef Interpreter_StackTest - if (m_Opcode.rd == 29) { + if (m_Opcode.rd == 29) + { StackValue = _GPR[m_Opcode.rd].W[0]; } #endif } -void R4300iOp32::SPECIAL_NOR (void) { +void R4300iOp32::SPECIAL_NOR (void) +{ _GPR[m_Opcode.rd].W[0] = ~(_GPR[m_Opcode.rs].W[0] | _GPR[m_Opcode.rt].W[0]); } -void R4300iOp32::SPECIAL_SLT (void) { - if (_GPR[m_Opcode.rs].W[0] < _GPR[m_Opcode.rt].W[0]) { +void R4300iOp32::SPECIAL_SLT (void) +{ + if (_GPR[m_Opcode.rs].W[0] < _GPR[m_Opcode.rt].W[0]) + { _GPR[m_Opcode.rd].W[0] = 1; - } else { + } + else + { _GPR[m_Opcode.rd].W[0] = 0; } } -void R4300iOp32::SPECIAL_SLTU (void) { - if (_GPR[m_Opcode.rs].UW[0] < _GPR[m_Opcode.rt].UW[0]) { +void R4300iOp32::SPECIAL_SLTU (void) +{ + if (_GPR[m_Opcode.rs].UW[0] < _GPR[m_Opcode.rt].UW[0]) + { _GPR[m_Opcode.rd].W[0] = 1; - } else { + } + else + { _GPR[m_Opcode.rd].W[0] = 0; } } -void R4300iOp32::SPECIAL_TEQ (void) { +void R4300iOp32::SPECIAL_TEQ (void) +{ if (_GPR[m_Opcode.rs].W[0] == _GPR[m_Opcode.rt].W[0] && g_Settings->LoadBool(Debugger_Enabled)) { g_Notify->DisplayError(L"Should trap this ???"); @@ -1082,9 +1198,11 @@ void R4300iOp32::SPECIAL_DSRA32 (void) } /********************** R4300i OpCodes: RegImm **********************/ -void R4300iOp32::REGIMM_BLTZ (void) { +void R4300iOp32::REGIMM_BLTZ (void) +{ m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] < 0) { + if (_GPR[m_Opcode.rs].W[0] < 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1093,14 +1211,18 @@ void R4300iOp32::REGIMM_BLTZ (void) { CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::REGIMM_BGEZ (void) { +void R4300iOp32::REGIMM_BGEZ (void) +{ m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] >= 0) { + if (_GPR[m_Opcode.rs].W[0] >= 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1109,13 +1231,17 @@ void R4300iOp32::REGIMM_BGEZ (void) { CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::REGIMM_BLTZL (void) { - if (_GPR[m_Opcode.rs].W[0] < 0) { +void R4300iOp32::REGIMM_BLTZL (void) +{ + if (_GPR[m_Opcode.rs].W[0] < 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -1125,14 +1251,18 @@ void R4300iOp32::REGIMM_BLTZL (void) { CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::REGIMM_BGEZL (void) { - if (_GPR[m_Opcode.rs].W[0] >= 0) { +void R4300iOp32::REGIMM_BGEZL (void) +{ + if (_GPR[m_Opcode.rs].W[0] >= 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -1142,15 +1272,19 @@ void R4300iOp32::REGIMM_BGEZL (void) { CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp32::REGIMM_BLTZAL (void) { +void R4300iOp32::REGIMM_BLTZAL (void) +{ m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] < 0) { + if (_GPR[m_Opcode.rs].W[0] < 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1159,15 +1293,19 @@ void R4300iOp32::REGIMM_BLTZAL (void) { CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } _GPR[31].W[0]= (long)((*_PROGRAM_COUNTER) + 8); } -void R4300iOp32::REGIMM_BGEZAL (void) { +void R4300iOp32::REGIMM_BGEZAL (void) +{ m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].W[0] >= 0) { + if (_GPR[m_Opcode.rs].W[0] >= 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1176,7 +1314,9 @@ void R4300iOp32::REGIMM_BGEZAL (void) { CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } _GPR[31].W[0] = (long)((*_PROGRAM_COUNTER) + 8); @@ -1195,16 +1335,19 @@ void R4300iOp32::COP0_MF (void) { _GPR[m_Opcode.rt].W[0] = (int)_CP0[m_Opcode.rd]; } -void R4300iOp32::COP0_MT (void) { +void R4300iOp32::COP0_MT (void) +{ if (LogOptions.LogCP0changes) { LogMessage("%08X: Writing 0x%X to %s register (Originally: 0x%08X)",(*_PROGRAM_COUNTER), _GPR[m_Opcode.rt].UW[0],CRegName::Cop0[m_Opcode.rd], _CP0[m_Opcode.rd]); - if (m_Opcode.rd == 11) { //Compare + if (m_Opcode.rd == 11) //Compare + { LogMessage("%08X: Cause register changed from %08X to %08X",(*_PROGRAM_COUNTER), g_Reg->CAUSE_REGISTER, (g_Reg->CAUSE_REGISTER & ~CAUSE_IP7)); } } - switch (m_Opcode.rd) { + switch (m_Opcode.rd) + { case 0: //Index case 2: //EntryLo0 case 3: //EntryLo1 @@ -1238,10 +1381,13 @@ void R4300iOp32::COP0_MT (void) { g_SystemTimer->UpdateCompareTimer(); break; case 12: //Status - if ((_CP0[m_Opcode.rd] ^ _GPR[m_Opcode.rt].UW[0]) != 0) { + if ((_CP0[m_Opcode.rd] & STATUS_FR) != (_GPR[m_Opcode.rt].UW[0] & STATUS_FR)) + { _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; g_Reg->FixFpuLocations(); - } else { + } + else + { _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; } if ((_CP0[m_Opcode.rd] & 0x18) != 0 && g_Settings->LoadBool(Debugger_Enabled)) @@ -1263,12 +1409,14 @@ void R4300iOp32::COP0_MT (void) { } /************************** COP1 functions **************************/ -void R4300iOp32::COP1_MF (void) { +void R4300iOp32::COP1_MF (void) +{ TEST_COP1_USABLE_EXCEPTION _GPR[m_Opcode.rt].W[0] = *(int *)_FPR_S[m_Opcode.fs]; } -void R4300iOp32::COP1_CF (void) { +void R4300iOp32::COP1_CF (void) +{ TEST_COP1_USABLE_EXCEPTION if (m_Opcode.fs != 31 && m_Opcode.fs != 0) { @@ -1278,8 +1426,8 @@ void R4300iOp32::COP1_CF (void) { _GPR[m_Opcode.rt].W[0] = (int)_FPCR[m_Opcode.fs]; } -void R4300iOp32::COP1_DMT (void) { +void R4300iOp32::COP1_DMT (void) +{ TEST_COP1_USABLE_EXCEPTION *(__int64 *)_FPR_D[m_Opcode.fs] = _GPR[m_Opcode.rt].W[0]; } - diff --git a/Source/Project64/N64 System/Interpreter/Interpreter Ops.cpp b/Source/Project64/N64 System/Interpreter/Interpreter Ops.cpp index b34179476..617b6e20a 100644 --- a/Source/Project64/N64 System/Interpreter/Interpreter Ops.cpp +++ b/Source/Project64/N64 System/Interpreter/Interpreter Ops.cpp @@ -37,7 +37,7 @@ const DWORD R4300iOp::LWL_MASK[4] = { 0x00000000, 0x000000FF,0x0000FFFF,0x00FFF const DWORD R4300iOp::LWR_MASK[4] = { 0xFFFFFF00, 0xFFFF0000,0xFF000000,0x0000000 }; const int R4300iOp::SWL_SHIFT[4] = { 0, 8, 16, 24 }; -const int R4300iOp::SWR_SHIFT[4] = { 24, 16 , 8, 0 }; +const int R4300iOp::SWR_SHIFT[4] = { 24, 16 , 8, 0 }; const int R4300iOp::LWL_SHIFT[4] = { 0, 8, 16, 24}; const int R4300iOp::LWR_SHIFT[4] = { 24, 16 ,8, 0 }; @@ -62,54 +62,54 @@ const int R4300iOp::LWR_SHIFT[4] = { 24, 16 ,8, 0 }; m_JumpToLocation = (*_PROGRAM_COUNTER);\ return; -void R4300iOp::SPECIAL (void) +void R4300iOp::SPECIAL (void) { Jump_Special[ m_Opcode.funct ](); } -void R4300iOp::REGIMM (void) +void R4300iOp::REGIMM (void) { Jump_Regimm[ m_Opcode.rt ](); } -void R4300iOp::COP0 (void) +void R4300iOp::COP0 (void) { Jump_CoP0[ m_Opcode.rs ](); } -void R4300iOp::COP0_CO (void) +void R4300iOp::COP0_CO (void) { Jump_CoP0_Function[ m_Opcode.funct ](); } -void R4300iOp::COP1 (void) +void R4300iOp::COP1 (void) { Jump_CoP1[ m_Opcode.fmt ](); } -void R4300iOp::COP1_BC (void) +void R4300iOp::COP1_BC (void) { Jump_CoP1_BC[ m_Opcode.ft ](); } -void R4300iOp::COP1_S (void) +void R4300iOp::COP1_S (void) { _controlfp(*_RoundingModel,_MCW_RC); Jump_CoP1_S[ m_Opcode.funct ](); } -void R4300iOp::COP1_D (void) +void R4300iOp::COP1_D (void) { _controlfp(*_RoundingModel,_MCW_RC); Jump_CoP1_D[ m_Opcode.funct ](); } -void R4300iOp::COP1_W (void) +void R4300iOp::COP1_W (void) { Jump_CoP1_W[ m_Opcode.funct ](); } -void R4300iOp::COP1_L (void) +void R4300iOp::COP1_L (void) { Jump_CoP1_L[ m_Opcode.funct ](); } @@ -710,14 +710,20 @@ bool DelaySlotEffectsCompare (DWORD PC, DWORD Reg1, DWORD Reg2); void TestInterpreterJump (DWORD PC, DWORD TargetPC, int Reg1, int Reg2) { - if (PC != TargetPC) { return; } - if (DelaySlotEffectsCompare(PC,Reg1,Reg2)) { return; } + if (PC != TargetPC) + { + return; + } + if (DelaySlotEffectsCompare(PC,Reg1,Reg2)) + { + return; + } R4300iOp::m_NextInstruction = PERMLOOP_DO_DELAY; R4300iOp::m_TestTimer = TRUE; } /************************* Opcode functions *************************/ -void R4300iOp::J (void) +void R4300iOp::J (void) { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = ((*_PROGRAM_COUNTER) & 0xF0000000) + (m_Opcode.target << 2); @@ -727,7 +733,7 @@ void R4300iOp::J (void) } } -void R4300iOp::JAL (void) +void R4300iOp::JAL (void) { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = ((*_PROGRAM_COUNTER) & 0xF0000000) + (m_Opcode.target << 2); @@ -739,10 +745,11 @@ void R4300iOp::JAL (void) } } -void R4300iOp::BEQ (void) +void R4300iOp::BEQ (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW == _GPR[m_Opcode.rt].DW) { + if (_GPR[m_Opcode.rs].DW == _GPR[m_Opcode.rt].DW) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -751,15 +758,18 @@ void R4300iOp::BEQ (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::BNE (void) +void R4300iOp::BNE (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW != _GPR[m_Opcode.rt].DW) { + if (_GPR[m_Opcode.rs].DW != _GPR[m_Opcode.rt].DW) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -768,15 +778,18 @@ void R4300iOp::BNE (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::BLEZ (void) +void R4300iOp::BLEZ (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW <= 0) { + if (_GPR[m_Opcode.rs].DW <= 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -785,15 +798,18 @@ void R4300iOp::BLEZ (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::BGTZ (void) +void R4300iOp::BGTZ (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW > 0) { + if (_GPR[m_Opcode.rs].DW > 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -802,52 +818,60 @@ void R4300iOp::BGTZ (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::ADDI (void) +void R4300iOp::ADDI (void) { #ifdef Interpreter_StackTest - if (m_Opcode.rs == 29 && m_Opcode.rt == 29) { - StackValue += (short)m_Opcode.immediate; - } -#endif - if (m_Opcode.rt == 0) { return; } - _GPR[m_Opcode.rt].DW = (_GPR[m_Opcode.rs].W[0] + ((short)m_Opcode.immediate)); -#ifdef Interpreter_StackTest - if (m_Opcode.rt == 29 && m_Opcode.rs != 29) { - StackValue = _GPR[m_Opcode.rt].W[0]; - } -#endif -} - -void R4300iOp::ADDIU (void) -{ -#ifdef Interpreter_StackTest - if (m_Opcode.rs == 29 && m_Opcode.rt == 29) { + if (m_Opcode.rs == 29 && m_Opcode.rt == 29) + { StackValue += (short)m_Opcode.immediate; } #endif _GPR[m_Opcode.rt].DW = (_GPR[m_Opcode.rs].W[0] + ((short)m_Opcode.immediate)); #ifdef Interpreter_StackTest - if (m_Opcode.rt == 29 && m_Opcode.rs != 29) { + if (m_Opcode.rt == 29 && m_Opcode.rs != 29) + { StackValue = _GPR[m_Opcode.rt].W[0]; } #endif } -void R4300iOp::SLTI (void) +void R4300iOp::ADDIU (void) { - if (_GPR[m_Opcode.rs].DW < (__int64)((short)m_Opcode.immediate)) { +#ifdef Interpreter_StackTest + if (m_Opcode.rs == 29 && m_Opcode.rt == 29) + { + StackValue += (short)m_Opcode.immediate; + } +#endif + _GPR[m_Opcode.rt].DW = (_GPR[m_Opcode.rs].W[0] + ((short)m_Opcode.immediate)); +#ifdef Interpreter_StackTest + if (m_Opcode.rt == 29 && m_Opcode.rs != 29) + { + StackValue = _GPR[m_Opcode.rt].W[0]; + } +#endif +} + +void R4300iOp::SLTI (void) +{ + if (_GPR[m_Opcode.rs].DW < (__int64)((short)m_Opcode.immediate)) + { _GPR[m_Opcode.rt].DW = 1; - } else { + } + else + { _GPR[m_Opcode.rt].DW = 0; } } -void R4300iOp::SLTIU (void) +void R4300iOp::SLTIU (void) { int imm32 = (short)m_Opcode.immediate; __int64 imm64; @@ -856,35 +880,36 @@ void R4300iOp::SLTIU (void) _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rs].UDW < (unsigned __int64)imm64?1:0; } -void R4300iOp::ANDI (void) +void R4300iOp::ANDI (void) { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rs].DW & m_Opcode.immediate; } -void R4300iOp::ORI (void) +void R4300iOp::ORI (void) { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rs].DW | m_Opcode.immediate; } -void R4300iOp::XORI (void) +void R4300iOp::XORI (void) { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rs].DW ^ m_Opcode.immediate; } -void R4300iOp::LUI (void) +void R4300iOp::LUI (void) { - if (m_Opcode.rt == 0) { return; } _GPR[m_Opcode.rt].DW = (long)((short)m_Opcode.offset << 16); #ifdef Interpreter_StackTest - if (m_Opcode.rt == 29) { + if (m_Opcode.rt == 29) + { StackValue = _GPR[m_Opcode.rt].W[0]; } #endif } -void R4300iOp::BEQL (void) +void R4300iOp::BEQL (void) { - if (_GPR[m_Opcode.rs].DW == _GPR[m_Opcode.rt].DW) { + if (_GPR[m_Opcode.rs].DW == _GPR[m_Opcode.rt].DW) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -894,15 +919,18 @@ void R4300iOp::BEQL (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::BNEL (void) +void R4300iOp::BNEL (void) { - if (_GPR[m_Opcode.rs].DW != _GPR[m_Opcode.rt].DW) { + if (_GPR[m_Opcode.rs].DW != _GPR[m_Opcode.rt].DW) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -912,15 +940,18 @@ void R4300iOp::BNEL (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::BLEZL (void) +void R4300iOp::BLEZL (void) { - if (_GPR[m_Opcode.rs].DW <= 0) { + if (_GPR[m_Opcode.rs].DW <= 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -930,15 +961,18 @@ void R4300iOp::BLEZL (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::BGTZL (void) +void R4300iOp::BGTZL (void) { - if (_GPR[m_Opcode.rs].DW > 0) { + if (_GPR[m_Opcode.rs].DW > 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -948,13 +982,15 @@ void R4300iOp::BGTZL (void) m_NextInstruction = PERMLOOP_DO_DELAY; } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::DADDIU (void) +void R4300iOp::DADDIU (void) { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rs].DW + (__int64)((short)m_Opcode.immediate); } @@ -963,7 +999,7 @@ QWORD LDL_MASK[8] = { 0,0xFF,0xFFFF,0xFFFFFF,0xFFFFFFFF,0xFFFFFFFFFF, 0xFFFFFFFFFFFF, 0xFFFFFFFFFFFFFF }; int LDL_SHIFT[8] = { 0, 8, 16, 24, 32, 40, 48, 56 }; -void R4300iOp::LDL (void) +void R4300iOp::LDL (void) { DWORD Offset, Address; QWORD Value; @@ -973,7 +1009,7 @@ void R4300iOp::LDL (void) if (!g_MMU->LD_VAddr((Address & ~7),Value)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); if (bShowTLBMisses()) { g_Notify->DisplayError(L"LDL TLB: %X",Address); @@ -990,7 +1026,7 @@ QWORD LDR_MASK[8] = { 0xFFFFFFFFFFFFFF00, 0xFFFFFFFFFFFF0000, 0xFF00000000000000, 0 }; int LDR_SHIFT[8] = { 56, 48, 40, 32, 24, 16, 8, 0 }; -void R4300iOp::LDR (void) +void R4300iOp::LDR (void) { DWORD Offset, Address; QWORD Value; @@ -1000,7 +1036,7 @@ void R4300iOp::LDR (void) if (!g_MMU->LD_VAddr((Address & ~7),Value)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); if (bShowTLBMisses()) { g_Notify->DisplayError(L"LDR TLB: %X",Address); @@ -1013,35 +1049,45 @@ void R4300iOp::LDR (void) } -void R4300iOp::LB (void) +void R4300iOp::LB (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if (m_Opcode.rt == 0) { return; } - if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LB TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rt].B[0]; } } -void R4300iOp::LH (void) +void R4300iOp::LH (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 1) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) { - if (bShowTLBMisses()) { + if ((Address & 1) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } + if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LH TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rt].HW[0]; } } -void R4300iOp::LWL (void) +void R4300iOp::LWL (void) { DWORD Offset, Address, Value; @@ -1050,7 +1096,7 @@ void R4300iOp::LWL (void) if (!g_MMU->LW_VAddr((Address & ~3),Value)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); if (bShowTLBMisses()) { g_Notify->DisplayError(L"LWL TLB: %X",Address); @@ -1062,56 +1108,72 @@ void R4300iOp::LWL (void) _GPR[m_Opcode.rt].DW += (int)(Value << LWL_SHIFT[Offset]); } -void R4300iOp::LW (void) +void R4300iOp::LW (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } if (LogOptions.GenerateLog) { Log_LW((*_PROGRAM_COUNTER),Address); } - if (m_Opcode.rt == 0) { return; } - - if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LW TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rt].W[0]; } } -void R4300iOp::LBU (void) +void R4300iOp::LBU (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LBU TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].UDW = _GPR[m_Opcode.rt].UB[0]; } } -void R4300iOp::LHU (void) +void R4300iOp::LHU (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 1) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) { - if (bShowTLBMisses()) { + if ((Address & 1) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } + if (!g_MMU->LH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LHU TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].UDW = _GPR[m_Opcode.rt].UHW[0]; } } -void R4300iOp::LWR (void) +void R4300iOp::LWR (void) { DWORD Offset, Address, Value; @@ -1120,7 +1182,7 @@ void R4300iOp::LWR (void) if (!g_MMU->LW_VAddr((Address & ~3),Value)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); if (bShowTLBMisses()) { g_Notify->DisplayError(L"LWR TLB: %X",Address); @@ -1132,18 +1194,24 @@ void R4300iOp::LWR (void) _GPR[m_Opcode.rt].DW += (int)(Value >> LWR_SHIFT[Offset]); } -void R4300iOp::LWU (void) +void R4300iOp::LWU (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - if (m_Opcode.rt == 0) { return; } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } - if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) { - if (bShowTLBMisses()) { + if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LWU TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].UDW = _GPR[m_Opcode.rt].UW[0]; } } @@ -1151,10 +1219,11 @@ void R4300iOp::LWU (void) void R4300iOp::SB (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if (!g_MMU->SB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) { + if (!g_MMU->SB_VAddr(Address,_GPR[m_Opcode.rt].UB[0])) + { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1163,15 +1232,18 @@ void R4300iOp::SB (void) } } -void R4300iOp::SH (void) +void R4300iOp::SH (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 1) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } + if ((Address & 1) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,FALSE); + } if (!g_MMU->SH_VAddr(Address,_GPR[m_Opcode.rt].UHW[0])) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1180,7 +1252,7 @@ void R4300iOp::SH (void) } } -void R4300iOp::SWL (void) +void R4300iOp::SWL (void) { DWORD Offset, Address, Value; @@ -1191,7 +1263,7 @@ void R4300iOp::SWL (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1207,7 +1279,7 @@ void R4300iOp::SWL (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1217,10 +1289,13 @@ void R4300iOp::SWL (void) } -void R4300iOp::SW (void) +void R4300iOp::SW (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,FALSE); + } if (LogOptions.GenerateLog) { Log_SW((*_PROGRAM_COUNTER),Address,_GPR[m_Opcode.rt].UW[0]); @@ -1229,7 +1304,7 @@ void R4300iOp::SW (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1244,11 +1319,11 @@ QWORD SDL_MASK[8] = { 0,0xFF00000000000000, 0xFFFFFFFF00000000, 0xFFFFFFFFFF000000, 0xFFFFFFFFFFFF0000, - 0xFFFFFFFFFFFFFF00 - }; + 0xFFFFFFFFFFFFFF00 }; + int SDL_SHIFT[8] = { 0, 8, 16, 24, 32, 40, 48, 56 }; -void R4300iOp::SDL (void) +void R4300iOp::SDL (void) { DWORD Offset, Address; QWORD Value; @@ -1260,7 +1335,7 @@ void R4300iOp::SDL (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1276,7 +1351,7 @@ void R4300iOp::SDL (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1292,11 +1367,11 @@ QWORD SDR_MASK[8] = { 0x00FFFFFFFFFFFFFF, 0x0000000000FFFFFF, 0x000000000000FFFF, 0x00000000000000FF, - 0x0000000000000000 - }; + 0x0000000000000000 }; + int SDR_SHIFT[8] = { 56,48,40,32,24,16,8,0 }; -void R4300iOp::SDR (void) +void R4300iOp::SDR (void) { DWORD Offset, Address; QWORD Value; @@ -1308,7 +1383,7 @@ void R4300iOp::SDR (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1324,7 +1399,7 @@ void R4300iOp::SDR (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1333,7 +1408,7 @@ void R4300iOp::SDR (void) } } -void R4300iOp::SWR (void) +void R4300iOp::SWR (void) { DWORD Offset, Address, Value; @@ -1344,7 +1419,7 @@ void R4300iOp::SWR (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1360,7 +1435,7 @@ void R4300iOp::SWR (void) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1371,7 +1446,10 @@ void R4300iOp::SWR (void) void R4300iOp::CACHE (void) { - if (!LogOptions.LogCache) { return; } + if (!LogOptions.LogCache) + { + return; + } LogMessage("%08X: Cache operation %d, 0x%08X", (*_PROGRAM_COUNTER), m_Opcode.rt, _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset ); } @@ -1379,9 +1457,10 @@ void R4300iOp::CACHE (void) void R4300iOp::LL (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - - if (m_Opcode.rt == 0) { return; } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } if (!g_MMU->LW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) { @@ -1390,7 +1469,9 @@ void R4300iOp::LL (void) g_Notify->DisplayError(L"LL TLB: %X",Address); } TLB_READ_EXCEPTION(Address); - } else { + } + else + { _GPR[m_Opcode.rt].DW = _GPR[m_Opcode.rt].W[0]; (*_LLBit) = 1; } @@ -1400,25 +1481,33 @@ void R4300iOp::LWC1 (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (DWORD)((short)m_Opcode.offset); TEST_COP1_USABLE_EXCEPTION - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } - if (!g_MMU->LW_VAddr(Address,*(DWORD *)_FPR_S[m_Opcode.ft])) { - if (bShowTLBMisses()) { + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } + if (!g_MMU->LW_VAddr(Address,*(DWORD *)_FPR_S[m_Opcode.ft])) + { + if (bShowTLBMisses()) + { g_Notify->DisplayError(L"LWC1 TLB: %X",Address); } TLB_READ_EXCEPTION(Address); } } -void R4300iOp::SC (void) +void R4300iOp::SC (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,FALSE); + } Log_SW((*_PROGRAM_COUNTER),Address,_GPR[m_Opcode.rt].UW[0]); if ((*_LLBit) == 1) { if (!g_MMU->SW_VAddr(Address,_GPR[m_Opcode.rt].UW[0])) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); if (bShowTLBMisses()) { g_Notify->DisplayError(L"SC TLB: %X",Address); @@ -1428,15 +1517,18 @@ void R4300iOp::SC (void) _GPR[m_Opcode.rt].UW[0] = (*_LLBit); } -void R4300iOp::LD (void) +void R4300iOp::LD (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } + if ((Address & 7) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } if (!g_MMU->LD_VAddr(Address,_GPR[m_Opcode.rt].UDW)) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1445,24 +1537,28 @@ void R4300iOp::LD (void) return; } #ifdef Interpreter_StackTest - if (m_Opcode.rt == 29) { + if (m_Opcode.rt == 29) + { StackValue = _GPR[m_Opcode.rt].W[0]; } #endif } -void R4300iOp::LDC1 (void) +void R4300iOp::LDC1 (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; TEST_COP1_USABLE_EXCEPTION - if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,TRUE); } + if ((Address & 7) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,TRUE); + } if (!g_MMU->LD_VAddr(Address,*(unsigned __int64 *)_FPR_D[m_Opcode.ft])) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1471,17 +1567,20 @@ void R4300iOp::LDC1 (void) } } -void R4300iOp::SWC1 (void) +void R4300iOp::SWC1 (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; TEST_COP1_USABLE_EXCEPTION - if ((Address & 3) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } + if ((Address & 3) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,FALSE); + } if (!g_MMU->SW_VAddr(Address,*(DWORD *)_FPR_S[m_Opcode.ft])) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1490,17 +1589,20 @@ void R4300iOp::SWC1 (void) } } -void R4300iOp::SDC1 (void) +void R4300iOp::SDC1 (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; TEST_COP1_USABLE_EXCEPTION - if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } + if ((Address & 7) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,FALSE); + } if (!g_MMU->SD_VAddr(Address,*(__int64 *)_FPR_D[m_Opcode.ft])) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1512,12 +1614,15 @@ void R4300iOp::SDC1 (void) void R4300iOp::SD (void) { DWORD Address = _GPR[m_Opcode.base].UW[0] + (short)m_Opcode.offset; - if ((Address & 7) != 0) { ADDRESS_ERROR_EXCEPTION(Address,FALSE); } + if ((Address & 7) != 0) + { + ADDRESS_ERROR_EXCEPTION(Address,FALSE); + } if (!g_MMU->SD_VAddr(Address,_GPR[m_Opcode.rt].UDW)) { if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (bShowTLBMisses()) { @@ -1526,45 +1631,44 @@ void R4300iOp::SD (void) } } /********************** R4300i OpCodes: Special **********************/ -void R4300iOp::SPECIAL_SLL (void) +void R4300iOp::SPECIAL_SLL (void) { _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].W[0] << m_Opcode.sa); } -void R4300iOp::SPECIAL_SRL (void) +void R4300iOp::SPECIAL_SRL (void) { _GPR[m_Opcode.rd].DW = (int)(_GPR[m_Opcode.rt].UW[0] >> m_Opcode.sa); } -void R4300iOp::SPECIAL_SRA (void) +void R4300iOp::SPECIAL_SRA (void) { _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].W[0] >> m_Opcode.sa); } -void R4300iOp::SPECIAL_SLLV (void) +void R4300iOp::SPECIAL_SLLV (void) { - if (m_Opcode.rd == 0) { return; } _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].W[0] << (_GPR[m_Opcode.rs].UW[0] & 0x1F)); } -void R4300iOp::SPECIAL_SRLV (void) +void R4300iOp::SPECIAL_SRLV (void) { _GPR[m_Opcode.rd].DW = (int)(_GPR[m_Opcode.rt].UW[0] >> (_GPR[m_Opcode.rs].UW[0] & 0x1F)); } -void R4300iOp::SPECIAL_SRAV (void) +void R4300iOp::SPECIAL_SRAV (void) { _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].W[0] >> (_GPR[m_Opcode.rs].UW[0] & 0x1F)); } -void R4300iOp::SPECIAL_JR (void) +void R4300iOp::SPECIAL_JR (void) { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = _GPR[m_Opcode.rs].UW[0]; m_TestTimer = TRUE; } -void R4300iOp::SPECIAL_JALR (void) +void R4300iOp::SPECIAL_JALR (void) { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = _GPR[m_Opcode.rs].UW[0]; @@ -1572,80 +1676,87 @@ void R4300iOp::SPECIAL_JALR (void) m_TestTimer = TRUE; } -void R4300iOp::SPECIAL_SYSCALL (void) +void R4300iOp::SPECIAL_SYSCALL (void) { g_Reg->DoSysCallException(m_NextInstruction == JUMP); m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER); } -void R4300iOp::SPECIAL_BREAK (void) +void R4300iOp::SPECIAL_BREAK (void) { g_Reg->DoBreakException(m_NextInstruction == JUMP); m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER); } -void R4300iOp::SPECIAL_SYNC (void) +void R4300iOp::SPECIAL_SYNC (void) { + } -void R4300iOp::SPECIAL_MFHI (void) +void R4300iOp::SPECIAL_MFHI (void) { _GPR[m_Opcode.rd].DW = _RegHI->DW; } -void R4300iOp::SPECIAL_MTHI (void) +void R4300iOp::SPECIAL_MTHI (void) { _RegHI->DW = _GPR[m_Opcode.rs].DW; } -void R4300iOp::SPECIAL_MFLO (void) +void R4300iOp::SPECIAL_MFLO (void) { _GPR[m_Opcode.rd].DW = _RegLO->DW; } -void R4300iOp::SPECIAL_MTLO (void) +void R4300iOp::SPECIAL_MTLO (void) { _RegLO->DW = _GPR[m_Opcode.rs].DW; } -void R4300iOp::SPECIAL_DSLLV (void) +void R4300iOp::SPECIAL_DSLLV (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rt].DW << (_GPR[m_Opcode.rs].UW[0] & 0x3F); } -void R4300iOp::SPECIAL_DSRLV (void) +void R4300iOp::SPECIAL_DSRLV (void) { _GPR[m_Opcode.rd].UDW = _GPR[m_Opcode.rt].UDW >> (_GPR[m_Opcode.rs].UW[0] & 0x3F); } -void R4300iOp::SPECIAL_DSRAV (void) +void R4300iOp::SPECIAL_DSRAV (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rt].DW >> (_GPR[m_Opcode.rs].UW[0] & 0x3F); } -void R4300iOp::SPECIAL_MULT (void) +void R4300iOp::SPECIAL_MULT (void) { _RegHI->DW = (__int64)(_GPR[m_Opcode.rs].W[0]) * (__int64)(_GPR[m_Opcode.rt].W[0]); _RegLO->DW = _RegHI->W[0]; _RegHI->DW = _RegHI->W[1]; } -void R4300iOp::SPECIAL_MULTU (void) +void R4300iOp::SPECIAL_MULTU (void) { _RegHI->DW = (unsigned __int64)(_GPR[m_Opcode.rs].UW[0]) * (unsigned __int64)(_GPR[m_Opcode.rt].UW[0]); _RegLO->DW = _RegHI->W[0]; _RegHI->DW = _RegHI->W[1]; } -void R4300iOp::SPECIAL_DIV (void) +void R4300iOp::SPECIAL_DIV (void) { - if ( _GPR[m_Opcode.rt].UDW != 0 ) { + if ( _GPR[m_Opcode.rt].UDW != 0 ) + { _RegLO->DW = _GPR[m_Opcode.rs].W[0] / _GPR[m_Opcode.rt].W[0]; _RegHI->DW = _GPR[m_Opcode.rs].W[0] % _GPR[m_Opcode.rt].W[0]; - } else { - if (bShowDivByZero()) { g_Notify->DisplayError(L"DIV by 0 ???"); } + } + else + { + if (bShowDivByZero()) + { + g_Notify->DisplayError(L"DIV by 0 ???"); + } _RegLO->DW = 0; _RegHI->DW = 0; } @@ -1657,14 +1768,19 @@ void R4300iOp::SPECIAL_DIVU (void) { _RegLO->DW = (int)(_GPR[m_Opcode.rs].UW[0] / _GPR[m_Opcode.rt].UW[0]); _RegHI->DW = (int)(_GPR[m_Opcode.rs].UW[0] % _GPR[m_Opcode.rt].UW[0]); - } else { - if (bShowDivByZero()) { g_Notify->DisplayError(L"DIVU by 0 ???"); } + } + else + { + if (bShowDivByZero()) + { + g_Notify->DisplayError(L"DIVU by 0 ???"); + } _RegLO->DW = 0; _RegHI->DW = 0; } } -void R4300iOp::SPECIAL_DMULT (void) +void R4300iOp::SPECIAL_DMULT (void) { MIPS_DWORD Tmp[3]; @@ -1692,12 +1808,15 @@ void R4300iOp::SPECIAL_DMULTU (void) _RegHI->UDW += (QWORD)Tmp[0].UW[1] + (QWORD)Tmp[1].UW[1] + Tmp[2].UW[1]; } -void R4300iOp::SPECIAL_DDIV (void) +void R4300iOp::SPECIAL_DDIV (void) { - if ( _GPR[m_Opcode.rt].UDW != 0 ) { + if ( _GPR[m_Opcode.rt].UDW != 0 ) + { _RegLO->DW = _GPR[m_Opcode.rs].DW / _GPR[m_Opcode.rt].DW; _RegHI->DW = _GPR[m_Opcode.rs].DW % _GPR[m_Opcode.rt].DW; - } else { + } + else + { if (bHaveDebugger()) { g_Notify->DisplayError(L"DDIV by 0 ???"); @@ -1705,12 +1824,15 @@ void R4300iOp::SPECIAL_DDIV (void) } } -void R4300iOp::SPECIAL_DDIVU (void) +void R4300iOp::SPECIAL_DDIVU (void) { - if ( _GPR[m_Opcode.rt].UDW != 0 ) { + if ( _GPR[m_Opcode.rt].UDW != 0 ) + { _RegLO->UDW = _GPR[m_Opcode.rs].UDW / _GPR[m_Opcode.rt].UDW; _RegHI->UDW = _GPR[m_Opcode.rs].UDW % _GPR[m_Opcode.rt].UDW; - } else { + } + else + { if (bHaveDebugger()) { g_Notify->DisplayError(L"DDIVU by 0 ???"); @@ -1718,90 +1840,97 @@ void R4300iOp::SPECIAL_DDIVU (void) } } -void R4300iOp::SPECIAL_ADD (void) +void R4300iOp::SPECIAL_ADD (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].W[0] + _GPR[m_Opcode.rt].W[0]; } -void R4300iOp::SPECIAL_ADDU (void) +void R4300iOp::SPECIAL_ADDU (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].W[0] + _GPR[m_Opcode.rt].W[0]; } -void R4300iOp::SPECIAL_SUB (void) +void R4300iOp::SPECIAL_SUB (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].W[0] - _GPR[m_Opcode.rt].W[0]; } -void R4300iOp::SPECIAL_SUBU (void) +void R4300iOp::SPECIAL_SUBU (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].W[0] - _GPR[m_Opcode.rt].W[0]; } -void R4300iOp::SPECIAL_AND (void) +void R4300iOp::SPECIAL_AND (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].DW & _GPR[m_Opcode.rt].DW; } -void R4300iOp::SPECIAL_OR (void) +void R4300iOp::SPECIAL_OR (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].DW | _GPR[m_Opcode.rt].DW; #ifdef Interpreter_StackTest - if (m_Opcode.rd == 29) { + if (m_Opcode.rd == 29) + { StackValue = _GPR[m_Opcode.rd].W[0]; } #endif } -void R4300iOp::SPECIAL_XOR (void) +void R4300iOp::SPECIAL_XOR (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].DW ^ _GPR[m_Opcode.rt].DW; } -void R4300iOp::SPECIAL_NOR (void) +void R4300iOp::SPECIAL_NOR (void) { _GPR[m_Opcode.rd].DW = ~(_GPR[m_Opcode.rs].DW | _GPR[m_Opcode.rt].DW); } -void R4300iOp::SPECIAL_SLT (void) +void R4300iOp::SPECIAL_SLT (void) { - if (_GPR[m_Opcode.rs].DW < _GPR[m_Opcode.rt].DW) { + if (_GPR[m_Opcode.rs].DW < _GPR[m_Opcode.rt].DW) + { _GPR[m_Opcode.rd].DW = 1; - } else { + } + else + { _GPR[m_Opcode.rd].DW = 0; } } -void R4300iOp::SPECIAL_SLTU (void) +void R4300iOp::SPECIAL_SLTU (void) { - if (_GPR[m_Opcode.rs].UDW < _GPR[m_Opcode.rt].UDW) { + if (_GPR[m_Opcode.rs].UDW < _GPR[m_Opcode.rt].UDW) + { _GPR[m_Opcode.rd].DW = 1; - } else { + } + else + { _GPR[m_Opcode.rd].DW = 0; } } -void R4300iOp::SPECIAL_DADD (void) +void R4300iOp::SPECIAL_DADD (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].DW + _GPR[m_Opcode.rt].DW; } -void R4300iOp::SPECIAL_DADDU (void) +void R4300iOp::SPECIAL_DADDU (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].DW + _GPR[m_Opcode.rt].DW; } -void R4300iOp::SPECIAL_DSUB (void) +void R4300iOp::SPECIAL_DSUB (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].DW - _GPR[m_Opcode.rt].DW; } -void R4300iOp::SPECIAL_DSUBU (void) +void R4300iOp::SPECIAL_DSUBU (void) { _GPR[m_Opcode.rd].DW = _GPR[m_Opcode.rs].DW - _GPR[m_Opcode.rt].DW; } -void R4300iOp::SPECIAL_TEQ (void) +void R4300iOp::SPECIAL_TEQ (void) { if (_GPR[m_Opcode.rs].DW == _GPR[m_Opcode.rt].DW && bHaveDebugger()) { @@ -1809,41 +1938,42 @@ void R4300iOp::SPECIAL_TEQ (void) } } -void R4300iOp::SPECIAL_DSLL (void) +void R4300iOp::SPECIAL_DSLL (void) { _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].DW << m_Opcode.sa); } -void R4300iOp::SPECIAL_DSRL (void) +void R4300iOp::SPECIAL_DSRL (void) { _GPR[m_Opcode.rd].UDW = (_GPR[m_Opcode.rt].UDW >> m_Opcode.sa); } -void R4300iOp::SPECIAL_DSRA (void) +void R4300iOp::SPECIAL_DSRA (void) { _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].DW >> m_Opcode.sa); } -void R4300iOp::SPECIAL_DSLL32 (void) +void R4300iOp::SPECIAL_DSLL32 (void) { _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].DW << (m_Opcode.sa + 32)); } -void R4300iOp::SPECIAL_DSRL32 (void) +void R4300iOp::SPECIAL_DSRL32 (void) { _GPR[m_Opcode.rd].UDW = (_GPR[m_Opcode.rt].UDW >> (m_Opcode.sa + 32)); } -void R4300iOp::SPECIAL_DSRA32 (void) +void R4300iOp::SPECIAL_DSRA32 (void) { _GPR[m_Opcode.rd].DW = (_GPR[m_Opcode.rt].DW >> (m_Opcode.sa + 32)); } /********************** R4300i OpCodes: RegImm **********************/ -void R4300iOp::REGIMM_BLTZ (void) +void R4300iOp::REGIMM_BLTZ (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW < 0) { + if (_GPR[m_Opcode.rs].DW < 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1852,15 +1982,18 @@ void R4300iOp::REGIMM_BLTZ (void) CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::REGIMM_BGEZ (void) +void R4300iOp::REGIMM_BGEZ (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW >= 0) { + if (_GPR[m_Opcode.rs].DW >= 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1869,14 +2002,17 @@ void R4300iOp::REGIMM_BGEZ (void) CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::REGIMM_BLTZL (void) +void R4300iOp::REGIMM_BLTZL (void) { - if (_GPR[m_Opcode.rs].DW < 0) { + if (_GPR[m_Opcode.rs].DW < 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -1886,15 +2022,18 @@ void R4300iOp::REGIMM_BLTZL (void) CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::REGIMM_BGEZL (void) +void R4300iOp::REGIMM_BGEZL (void) { - if (_GPR[m_Opcode.rs].DW >= 0) { + if (_GPR[m_Opcode.rs].DW >= 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) @@ -1904,16 +2043,19 @@ void R4300iOp::REGIMM_BGEZL (void) CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::REGIMM_BLTZAL (void) +void R4300iOp::REGIMM_BLTZAL (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW < 0) { + if (_GPR[m_Opcode.rs].DW < 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1922,16 +2064,19 @@ void R4300iOp::REGIMM_BLTZAL (void) CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } _GPR[31].DW= (long)((*_PROGRAM_COUNTER) + 8); } -void R4300iOp::REGIMM_BGEZAL (void) +void R4300iOp::REGIMM_BGEZAL (void) { m_NextInstruction = DELAY_SLOT; - if (_GPR[m_Opcode.rs].DW >= 0) { + if (_GPR[m_Opcode.rs].DW >= 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; if ((*_PROGRAM_COUNTER) == m_JumpToLocation) { @@ -1940,7 +2085,9 @@ void R4300iOp::REGIMM_BGEZAL (void) CInterpreterCPU::InPermLoop(); } } - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } _GPR[31].DW = (long)((*_PROGRAM_COUNTER) + 8); @@ -1960,7 +2107,7 @@ void R4300iOp::COP0_MF (void) _GPR[m_Opcode.rt].DW = (int)_CP0[m_Opcode.rd]; } -void R4300iOp::COP0_MT (void) +void R4300iOp::COP0_MT (void) { if (LogOptions.LogCP0changes) { @@ -1971,7 +2118,8 @@ void R4300iOp::COP0_MT (void) } } - switch (m_Opcode.rd) { + switch (m_Opcode.rd) + { case 0: //Index case 2: //EntryLo0 case 3: //EntryLo1 @@ -2005,10 +2153,13 @@ void R4300iOp::COP0_MT (void) g_SystemTimer->UpdateCompareTimer(); break; case 12: //Status - if ((_CP0[m_Opcode.rd] ^ _GPR[m_Opcode.rt].UW[0]) != 0) { + if ((_CP0[m_Opcode.rd] & STATUS_FR) != (_GPR[m_Opcode.rt].UW[0] & STATUS_FR)) + { _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; g_Reg->FixFpuLocations(); - } else { + } + else + { _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; } if ((_CP0[m_Opcode.rd] & 0x18) != 0 && bHaveDebugger()) @@ -2030,37 +2181,52 @@ void R4300iOp::COP0_MT (void) } /************************** COP0 CO functions ***********************/ -void R4300iOp::COP0_CO_TLBR (void) +void R4300iOp::COP0_CO_TLBR (void) { - if (!g_System->bUseTlb()) { return; } + if (!g_System->bUseTlb()) + { + return; + } g_TLB->ReadEntry(); } -void R4300iOp::COP0_CO_TLBWI (void) +void R4300iOp::COP0_CO_TLBWI (void) { - if (!g_System->bUseTlb()) { return; } + if (!g_System->bUseTlb()) + { + return; + } g_TLB->WriteEntry(g_Reg->INDEX_REGISTER & 0x1F,FALSE); } -void R4300iOp::COP0_CO_TLBWR (void) +void R4300iOp::COP0_CO_TLBWR (void) { - if (!g_System->bUseTlb()) { return; } + if (!g_System->bUseTlb()) + { + return; + } g_TLB->WriteEntry(g_Reg->RANDOM_REGISTER & 0x1F,true); } -void R4300iOp::COP0_CO_TLBP (void) +void R4300iOp::COP0_CO_TLBP (void) { - if (!g_System->bUseTlb()) { return; } + if (!g_System->bUseTlb()) + { + return; + } g_TLB->Probe(); } -void R4300iOp::COP0_CO_ERET (void) +void R4300iOp::COP0_CO_ERET (void) { m_NextInstruction = JUMP; - if ((g_Reg->STATUS_REGISTER & STATUS_ERL) != 0) { + if ((g_Reg->STATUS_REGISTER & STATUS_ERL) != 0) + { m_JumpToLocation = g_Reg->ERROREPC_REGISTER; g_Reg->STATUS_REGISTER &= ~STATUS_ERL; - } else { + } + else + { m_JumpToLocation = g_Reg->EPC_REGISTER; g_Reg->STATUS_REGISTER &= ~STATUS_EXL; } @@ -2070,47 +2236,51 @@ void R4300iOp::COP0_CO_ERET (void) } /************************** COP1 functions **************************/ -void R4300iOp::COP1_MF (void) +void R4300iOp::COP1_MF (void) { TEST_COP1_USABLE_EXCEPTION _GPR[m_Opcode.rt].DW = *(int *)_FPR_S[m_Opcode.fs]; } -void R4300iOp::COP1_DMF (void) +void R4300iOp::COP1_DMF (void) { TEST_COP1_USABLE_EXCEPTION _GPR[m_Opcode.rt].DW = *(__int64 *)_FPR_D[m_Opcode.fs]; } -void R4300iOp::COP1_CF (void) +void R4300iOp::COP1_CF (void) { TEST_COP1_USABLE_EXCEPTION if (m_Opcode.fs != 31 && m_Opcode.fs != 0) { - if (bHaveDebugger()) { g_Notify->DisplayError(L"CFC1 what register are you writing to ?"); } + if (bHaveDebugger()) + { + g_Notify->DisplayError(L"CFC1 what register are you writing to ?"); + } return; } _GPR[m_Opcode.rt].DW = (int)_FPCR[m_Opcode.fs]; } -void R4300iOp::COP1_MT (void) +void R4300iOp::COP1_MT (void) { TEST_COP1_USABLE_EXCEPTION *(int *)_FPR_S[m_Opcode.fs] = _GPR[m_Opcode.rt].W[0]; } -void R4300iOp::COP1_DMT (void) +void R4300iOp::COP1_DMT (void) { TEST_COP1_USABLE_EXCEPTION *(__int64 *)_FPR_D[m_Opcode.fs] = _GPR[m_Opcode.rt].DW; } -void R4300iOp::COP1_CT (void) +void R4300iOp::COP1_CT (void) { TEST_COP1_USABLE_EXCEPTION if (m_Opcode.fs == 31) { _FPCR[m_Opcode.fs] = _GPR[m_Opcode.rt].W[0]; - switch((_FPCR[m_Opcode.fs] & 3)) { + switch ((_FPCR[m_Opcode.fs] & 3)) + { case 0: *_RoundingModel = ROUND_NEAR; break; case 1: *_RoundingModel = ROUND_CHOP; break; case 2: *_RoundingModel = ROUND_UP; break; @@ -2118,58 +2288,75 @@ void R4300iOp::COP1_CT (void) } return; } - if (bHaveDebugger()) { g_Notify->DisplayError(L"CTC1 what register are you writing to ?"); } + if (bHaveDebugger()) + { + g_Notify->DisplayError(L"CTC1 what register are you writing to ?"); + } } /************************* COP1: BC1 functions ***********************/ -void R4300iOp::COP1_BCF (void) +void R4300iOp::COP1_BCF (void) { TEST_COP1_USABLE_EXCEPTION m_NextInstruction = DELAY_SLOT; - if ((_FPCR[31] & FPCSR_C) == 0) { + if ((_FPCR[31] & FPCSR_C) == 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::COP1_BCT (void) +void R4300iOp::COP1_BCT (void) { TEST_COP1_USABLE_EXCEPTION m_NextInstruction = DELAY_SLOT; - if ((_FPCR[31] & FPCSR_C) != 0) { + if ((_FPCR[31] & FPCSR_C) != 0) + { m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; - } else { + } + else + { m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::COP1_BCFL (void) +void R4300iOp::COP1_BCFL (void) { TEST_COP1_USABLE_EXCEPTION - if ((_FPCR[31] & FPCSR_C) == 0) { + if ((_FPCR[31] & FPCSR_C) == 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } -void R4300iOp::COP1_BCTL (void) +void R4300iOp::COP1_BCTL (void) { TEST_COP1_USABLE_EXCEPTION - if ((_FPCR[31] & FPCSR_C) != 0) { + if ((_FPCR[31] & FPCSR_C) != 0) + { m_NextInstruction = DELAY_SLOT; m_JumpToLocation = (*_PROGRAM_COUNTER) + ((short)m_Opcode.offset << 2) + 4; - } else { + } + else + { m_NextInstruction = JUMP; m_JumpToLocation = (*_PROGRAM_COUNTER) + 8; } } /************************** COP1: S functions ************************/ -__inline void Float_RoundToInteger32( int * Dest, float * Source ) { - _asm { +__inline void Float_RoundToInteger32( int * Dest, float * Source ) +{ + _asm + { mov esi, [Source] mov edi, [Dest] fld dword ptr [esi] @@ -2177,8 +2364,10 @@ __inline void Float_RoundToInteger32( int * Dest, float * Source ) { } } -__inline void Float_RoundToInteger64( __int64 * Dest, float * Source ) { - _asm { +__inline void Float_RoundToInteger64( __int64 * Dest, float * Source ) +{ + _asm + { mov esi, [Source] mov edi, [Dest] fld dword ptr [esi] @@ -2186,42 +2375,43 @@ __inline void Float_RoundToInteger64( __int64 * Dest, float * Source ) { } } -void R4300iOp::COP1_S_ADD (void) +void R4300iOp::COP1_S_ADD (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (*(float *)_FPR_S[m_Opcode.fs] + *(float *)_FPR_S[m_Opcode.ft]); } -void R4300iOp::COP1_S_SUB (void) +void R4300iOp::COP1_S_SUB (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (*(float *)_FPR_S[m_Opcode.fs] - *(float *)_FPR_S[m_Opcode.ft]); } -void R4300iOp::COP1_S_MUL (void) +void R4300iOp::COP1_S_MUL (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (*(float *)_FPR_S[m_Opcode.fs] * *(float *)_FPR_S[m_Opcode.ft]); } -void R4300iOp::COP1_S_DIV (void) +void R4300iOp::COP1_S_DIV (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (*(float *)_FPR_S[m_Opcode.fs] / *(float *)_FPR_S[m_Opcode.ft]); } -void R4300iOp::COP1_S_SQRT (void) +void R4300iOp::COP1_S_SQRT (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); float * Dest = (float *)_FPR_S[m_Opcode.fd]; float * Source = (float *)_FPR_S[m_Opcode.fs]; - _asm { + _asm + { push esi mov esi, dword ptr [Source] fld dword ptr [esi] @@ -2232,98 +2422,98 @@ void R4300iOp::COP1_S_SQRT (void) } } -void R4300iOp::COP1_S_ABS (void) +void R4300iOp::COP1_S_ABS (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (float)fabs(*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_MOV (void) +void R4300iOp::COP1_S_MOV (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = *(float *)_FPR_S[m_Opcode.fs]; } -void R4300iOp::COP1_S_NEG (void) +void R4300iOp::COP1_S_NEG (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (*(float *)_FPR_S[m_Opcode.fs] * -1.0f); } -void R4300iOp::COP1_S_TRUNC_L (void) +void R4300iOp::COP1_S_TRUNC_L (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_CHOP,_MCW_RC); Float_RoundToInteger64(&*(__int64 *)_FPR_D[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_CEIL_L (void) +void R4300iOp::COP1_S_CEIL_L (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_UP,_MCW_RC); Float_RoundToInteger64(&*(__int64 *)_FPR_D[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_FLOOR_L (void) +void R4300iOp::COP1_S_FLOOR_L (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_DOWN,_MCW_RC); Float_RoundToInteger64(&*(__int64 *)_FPR_D[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_ROUND_W (void) +void R4300iOp::COP1_S_ROUND_W (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_NEAR,_MCW_RC); Float_RoundToInteger32(&*(int *)_FPR_S[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_TRUNC_W (void) +void R4300iOp::COP1_S_TRUNC_W (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_CHOP,_MCW_RC); Float_RoundToInteger32(&*(int *)_FPR_S[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_CEIL_W (void) +void R4300iOp::COP1_S_CEIL_W (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_UP,_MCW_RC); Float_RoundToInteger32(&*(int *)_FPR_S[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_FLOOR_W (void) +void R4300iOp::COP1_S_FLOOR_W (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_DOWN,_MCW_RC); Float_RoundToInteger32(&*(int *)_FPR_S[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_CVT_D (void) +void R4300iOp::COP1_S_CVT_D (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = (double)(*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_CVT_W (void) +void R4300iOp::COP1_S_CVT_W (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); Float_RoundToInteger32(&*(int *)_FPR_S[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_CVT_L (void) +void R4300iOp::COP1_S_CVT_L (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); Float_RoundToInteger64(&*(__int64 *)_FPR_D[m_Opcode.fd],&*(float *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_S_CMP (void) +void R4300iOp::COP1_S_CMP (void) { int less, equal, unorded, condition; float Temp0, Temp1; @@ -2335,15 +2525,23 @@ void R4300iOp::COP1_S_CMP (void) if (_isnan(Temp0) || _isnan(Temp1)) { - if (bHaveDebugger()) { g_Notify->DisplayError(__FUNCTIONW__ L": Nan ?"); } + if (bHaveDebugger()) + { + g_Notify->DisplayError(__FUNCTIONW__ L": Nan ?"); + } less = FALSE; equal = FALSE; unorded = TRUE; if ((m_Opcode.funct & 8) != 0) { - if (bHaveDebugger()) { g_Notify->DisplayError(L"Signal InvalidOperationException\nin r4300i_COP1_S_CMP\n%X %ff\n%X %ff", Temp0,Temp0,Temp1,Temp1); } + if (bHaveDebugger()) + { + g_Notify->DisplayError(L"Signal InvalidOperationException\nin r4300i_COP1_S_CMP\n%X %ff\n%X %ff", Temp0,Temp0,Temp1,Temp1); + } } - } else { + } + else + { less = Temp0 < Temp1; equal = Temp0 == Temp1; unorded = FALSE; @@ -2352,17 +2550,22 @@ void R4300iOp::COP1_S_CMP (void) condition = ((m_Opcode.funct & 4) && less) | ((m_Opcode.funct & 2) && equal) | ((m_Opcode.funct & 1) && unorded); - if (condition) { + if (condition) + { _FPCR[31] |= FPCSR_C; - } else { + } + else + { _FPCR[31] &= ~FPCSR_C; } } /************************** COP1: D functions ************************/ -__inline void Double_RoundToInteger32( DWORD * Dest, double * Source ) { - _asm { +__inline void Double_RoundToInteger32( DWORD * Dest, double * Source ) +{ + _asm + { mov esi, [Source] mov edi, [Dest] fld qword ptr [esi] @@ -2370,8 +2573,10 @@ __inline void Double_RoundToInteger32( DWORD * Dest, double * Source ) { } } -__inline void Double_RoundToInteger64( unsigned __int64 * Dest, double * Source ) { - _asm { +__inline void Double_RoundToInteger64( unsigned __int64 * Dest, double * Source ) +{ + _asm + { mov esi, [Source] mov edi, [Dest] fld qword ptr [esi] @@ -2379,105 +2584,105 @@ __inline void Double_RoundToInteger64( unsigned __int64 * Dest, double * Source } } -void R4300iOp::COP1_D_ADD (void) +void R4300iOp::COP1_D_ADD (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = *(double *)_FPR_D[m_Opcode.fs] + *(double *)_FPR_D[m_Opcode.ft]; } -void R4300iOp::COP1_D_SUB (void) +void R4300iOp::COP1_D_SUB (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = *(double *)_FPR_D[m_Opcode.fs] - *(double *)_FPR_D[m_Opcode.ft]; } -void R4300iOp::COP1_D_MUL (void) +void R4300iOp::COP1_D_MUL (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = *(double *)_FPR_D[m_Opcode.fs] * *(double *)_FPR_D[m_Opcode.ft]; } -void R4300iOp::COP1_D_DIV (void) +void R4300iOp::COP1_D_DIV (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = *(double *)_FPR_D[m_Opcode.fs] / *(double *)_FPR_D[m_Opcode.ft]; } -void R4300iOp::COP1_D_SQRT (void) +void R4300iOp::COP1_D_SQRT (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = (double)sqrt(*(double *)_FPR_D[m_Opcode.fs]); } -void R4300iOp::COP1_D_ABS (void) +void R4300iOp::COP1_D_ABS (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = fabs(*(double *)_FPR_D[m_Opcode.fs]); } -void R4300iOp::COP1_D_MOV (void) +void R4300iOp::COP1_D_MOV (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(__int64 *)_FPR_D[m_Opcode.fd] = *(__int64 *)_FPR_D[m_Opcode.fs]; } -void R4300iOp::COP1_D_NEG (void) +void R4300iOp::COP1_D_NEG (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(double *)_FPR_D[m_Opcode.fd] = (*(double *)_FPR_D[m_Opcode.fs] * -1.0); } -void R4300iOp::COP1_D_TRUNC_L (void) +void R4300iOp::COP1_D_TRUNC_L (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(RC_CHOP,_MCW_RC); Double_RoundToInteger64(&*(QWORD *)_FPR_S[m_Opcode.fd],&*(double *)_FPR_D[m_Opcode.fs] ); } -void R4300iOp::COP1_D_CEIL_L (void) +void R4300iOp::COP1_D_CEIL_L (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(RC_UP,_MCW_RC); Double_RoundToInteger64(&*(QWORD *)_FPR_S[m_Opcode.fd],&*(double *)_FPR_D[m_Opcode.fs] ); } -void R4300iOp::COP1_D_FLOOR_L (void) +void R4300iOp::COP1_D_FLOOR_L (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_DOWN,_MCW_RC); Double_RoundToInteger64(&*(QWORD *)_FPR_D[m_Opcode.fd],&*(double *)_FPR_S[m_Opcode.fs]); } -void R4300iOp::COP1_D_ROUND_W (void) +void R4300iOp::COP1_D_ROUND_W (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_NEAR,_MCW_RC); Double_RoundToInteger32(&*(DWORD *)_FPR_S[m_Opcode.fd],&*(double *)_FPR_D[m_Opcode.fs] ); } -void R4300iOp::COP1_D_TRUNC_W (void) +void R4300iOp::COP1_D_TRUNC_W (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(RC_CHOP,_MCW_RC); Double_RoundToInteger32(&*(DWORD *)_FPR_S[m_Opcode.fd],&*(double *)_FPR_D[m_Opcode.fs] ); } -void R4300iOp::COP1_D_CEIL_W (void) +void R4300iOp::COP1_D_CEIL_W (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(RC_UP,_MCW_RC); Double_RoundToInteger32(&*(DWORD *)_FPR_S[m_Opcode.fd],&*(double *)_FPR_D[m_Opcode.fs] ); } -void R4300iOp::COP1_D_FLOOR_W (void) +void R4300iOp::COP1_D_FLOOR_W (void) { //added by Witten TEST_COP1_USABLE_EXCEPTION _controlfp(_RC_DOWN,_MCW_RC); @@ -2517,13 +2722,19 @@ void R4300iOp::COP1_D_CMP (void) if (_isnan(Temp0.D) || _isnan(Temp1.D)) { - if (bHaveDebugger()) { g_Notify->DisplayError(__FUNCTIONW__ L": Nan ?"); } + if (bHaveDebugger()) + { + g_Notify->DisplayError(__FUNCTIONW__ L": Nan ?"); + } less = FALSE; equal = FALSE; unorded = TRUE; if ((m_Opcode.funct & 8) != 0) { - if (bHaveDebugger()) { g_Notify->DisplayError(L"Signal InvalidOperationException\nin " __FUNCTIONW__); } + if (bHaveDebugger()) + { + g_Notify->DisplayError(L"Signal InvalidOperationException\nin " __FUNCTIONW__); + } } } else @@ -2536,22 +2747,25 @@ void R4300iOp::COP1_D_CMP (void) condition = ((m_Opcode.funct & 4) && less) | ((m_Opcode.funct & 2) && equal) | ((m_Opcode.funct & 1) && unorded); - if (condition) { + if (condition) + { _FPCR[31] |= FPCSR_C; - } else { + } + else + { _FPCR[31] &= ~FPCSR_C; } } /************************** COP1: W functions ************************/ -void R4300iOp::COP1_W_CVT_S (void) +void R4300iOp::COP1_W_CVT_S (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (float)*(int *)_FPR_S[m_Opcode.fs]; } -void R4300iOp::COP1_W_CVT_D (void) +void R4300iOp::COP1_W_CVT_D (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); @@ -2559,14 +2773,14 @@ void R4300iOp::COP1_W_CVT_D (void) } /************************** COP1: L functions ************************/ -void R4300iOp::COP1_L_CVT_S (void) +void R4300iOp::COP1_L_CVT_S (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); *(float *)_FPR_S[m_Opcode.fd] = (float)*(__int64 *)_FPR_D[m_Opcode.fs]; } -void R4300iOp::COP1_L_CVT_D (void) +void R4300iOp::COP1_L_CVT_D (void) { TEST_COP1_USABLE_EXCEPTION _controlfp(*_RoundingModel,_MCW_RC); @@ -2580,19 +2794,23 @@ void R4300iOp::UnknownOpcode (void) R4300iOpcodeName(m_Opcode.Hex,(*_PROGRAM_COUNTER))); g_System->m_EndEmulation = true; - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix - if (HaveDebugger && !inFullScreen) { + if (HaveDebugger && !inFullScreen) + { int response; strcat(Message,"\n\nDo you wish to enter the debugger ?"); response = MessageBox(NULL,Message,GS(MSG_MSGBOX_TITLE), MB_YESNO | MB_ICONERROR ); - if (response == IDYES) { + if (response == IDYES) + { Enter_R4300i_Commands_Window (); } ExitThread(0); - } else { + } + else + { g_Notify->DisplayError(Message); ExitThread(0); } diff --git a/Source/Project64/N64 System/Mips/Audio.cpp b/Source/Project64/N64 System/Mips/Audio.cpp index 45b8d8a49..f8228dd66 100644 --- a/Source/Project64/N64 System/Mips/Audio.cpp +++ b/Source/Project64/N64 System/Mips/Audio.cpp @@ -17,6 +17,7 @@ CAudio::CAudio (void) CAudio::~CAudio (void) { + } void CAudio::Reset ( void ) @@ -61,16 +62,20 @@ void CAudio::LenChanged ( void ) { if (m_SecondBuff) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } WriteTraceF(TraceAudio,__FUNCTION__ ": Set Timer AI_LEN_REG: %d m_CountsPerByte: %d",g_Reg->AI_LEN_REG,m_CountsPerByte); g_SystemTimer->SetTimer(CSystemTimer::AiTimerInterrupt,g_Reg->AI_LEN_REG * m_CountsPerByte,false); - } else { + } + else + { WriteTraceF(TraceAudio,__FUNCTION__ ": Increasing Second Buffer (m_SecondBuff %d Increase: %d)",m_SecondBuff,g_Reg->AI_LEN_REG); m_SecondBuff += g_Reg->AI_LEN_REG; } } - } else { + } + else + { WriteTraceF(TraceAudio,__FUNCTION__ ": *** Reset Timer to 0"); g_SystemTimer->StopTimer(CSystemTimer::AiTimerBusy); g_SystemTimer->StopTimer(CSystemTimer::AiTimerInterrupt); @@ -92,7 +97,9 @@ void CAudio::InterruptTimerDone ( void ) { g_SystemTimer->SetTimer(CSystemTimer::AiTimerInterrupt,m_SecondBuff * m_CountsPerByte,false); m_SecondBuff = 0; - } else { + } + else + { if (g_Reg->m_AudioIntrReg == 0) { g_System->SyncToAudio(); @@ -107,7 +114,7 @@ void CAudio::InterruptTimerDone ( void ) void CAudio::BusyTimerDone ( void ) { WriteTraceF(TraceAudio,__FUNCTION__ ": Start (m_SecondBuff = %d)",m_SecondBuff); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); m_Status &= ~ai_busy; } @@ -128,7 +135,8 @@ void CAudio::SetFrequency (DWORD Dacrate, DWORD System) WriteTraceF(TraceAudio,__FUNCTION__ "(Dacrate: %X System: %d): AI_BITRATE_REG = %X",Dacrate,System,g_Reg->AI_BITRATE_REG); DWORD Frequency; - switch (System) { + switch (System) + { case SYSTEM_PAL: Frequency = 49656530 / (Dacrate + 1); break; case SYSTEM_MPAL: Frequency = 48628316 / (Dacrate + 1); break; default: Frequency = 48681812 / (Dacrate + 1); break; @@ -141,4 +149,3 @@ void CAudio::SetFrequency (DWORD Dacrate, DWORD System) m_FramesPerSecond = System == SYSTEM_PAL ? 50 : 60; } - diff --git a/Source/Project64/N64 System/Mips/Audio.h b/Source/Project64/N64 System/Mips/Audio.h index 6caca8141..2a17f3e6a 100644 --- a/Source/Project64/N64 System/Mips/Audio.h +++ b/Source/Project64/N64 System/Mips/Audio.h @@ -12,7 +12,8 @@ class CAudio { - enum { + enum + { ai_full = 0x80000000, ai_busy = 0x40000000, }; diff --git a/Source/Project64/N64 System/Mips/Dma.cpp b/Source/Project64/N64 System/Mips/Dma.cpp index bd2037461..8022cca03 100644 --- a/Source/Project64/N64 System/Mips/Dma.cpp +++ b/Source/Project64/N64 System/Mips/Dma.cpp @@ -14,10 +14,13 @@ CDMA::CDMA(CFlashram & FlashRam, CSram & Sram) : m_FlashRam(FlashRam), m_Sram(Sram) { + } -void CDMA::OnFirstDMA (void) { - switch (g_Rom->CicChipID()) { +void CDMA::OnFirstDMA (void) +{ + switch (g_Rom->CicChipID()) + { case CIC_NUS_6101: *(DWORD *)&((g_MMU->Rdram())[0x318]) = g_MMU->RdramSize(); break; case CIC_UNKNOWN: case CIC_NUS_6102: *(DWORD *)&((g_MMU->Rdram())[0x318]) = g_MMU->RdramSize(); break; @@ -28,21 +31,30 @@ void CDMA::OnFirstDMA (void) { } } -void CDMA::PI_DMA_READ (void) { +void CDMA::PI_DMA_READ (void) +{ // PI_STATUS_REG |= PI_STATUS_DMA_BUSY; if ( g_Reg->PI_DRAM_ADDR_REG + g_Reg->PI_RD_LEN_REG + 1 > g_MMU->RdramSize()) { - if (bHaveDebugger()) { g_Notify->DisplayError(L"PI_DMA_READ not in Memory"); } + if (bHaveDebugger()) + { + g_Notify->DisplayError(L"PI_DMA_READ not in Memory"); + } g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->CheckInterrupts(); return; } - if ( g_Reg->PI_CART_ADDR_REG >= 0x08000000 && g_Reg->PI_CART_ADDR_REG <= 0x08010000) { - if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_Sram; } - if (g_System->m_SaveUsing == SaveChip_Sram) { + if ( g_Reg->PI_CART_ADDR_REG >= 0x08000000 && g_Reg->PI_CART_ADDR_REG <= 0x08010000) + { + if (g_System->m_SaveUsing == SaveChip_Auto) + { + g_System->m_SaveUsing = SaveChip_Sram; + } + if (g_System->m_SaveUsing == SaveChip_Sram) + { m_Sram.DmaToSram( g_MMU->Rdram() + g_Reg->PI_DRAM_ADDR_REG, g_Reg->PI_CART_ADDR_REG - 0x08000000, @@ -53,7 +65,8 @@ void CDMA::PI_DMA_READ (void) { g_Reg->CheckInterrupts(); return; } - if (g_System->m_SaveUsing == SaveChip_FlashRam) { + if (g_System->m_SaveUsing == SaveChip_FlashRam) + { m_FlashRam.DmaToFlashram( g_MMU->Rdram()+g_Reg->PI_DRAM_ADDR_REG, g_Reg->PI_CART_ADDR_REG - 0x08000000, @@ -102,9 +115,14 @@ void CDMA::PI_DMA_WRITE (void) return; } - if ( g_Reg->PI_CART_ADDR_REG >= 0x08000000 && g_Reg->PI_CART_ADDR_REG <= 0x08010000) { - if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_Sram; } - if (g_System->m_SaveUsing == SaveChip_Sram) { + if ( g_Reg->PI_CART_ADDR_REG >= 0x08000000 && g_Reg->PI_CART_ADDR_REG <= 0x08010000) + { + if (g_System->m_SaveUsing == SaveChip_Auto) + { + g_System->m_SaveUsing = SaveChip_Sram; + } + if (g_System->m_SaveUsing == SaveChip_Sram) + { m_Sram.DmaFromSram( g_MMU->Rdram()+g_Reg->PI_DRAM_ADDR_REG, g_Reg->PI_CART_ADDR_REG - 0x08000000, @@ -115,7 +133,8 @@ void CDMA::PI_DMA_WRITE (void) g_Reg->CheckInterrupts(); return; } - if (g_System->m_SaveUsing == SaveChip_FlashRam) { + if (g_System->m_SaveUsing == SaveChip_FlashRam) + { m_FlashRam.DmaFromFlashram( g_MMU->Rdram()+g_Reg->PI_DRAM_ADDR_REG, g_Reg->PI_CART_ADDR_REG - 0x08000000, @@ -133,7 +152,8 @@ void CDMA::PI_DMA_WRITE (void) DWORD i; #ifdef tofix #ifdef ROM_IN_MAPSPACE - if (WrittenToRom) { + if (WrittenToRom) + { DWORD OldProtect; VirtualProtect(ROM,m_RomFileSize,PAGE_READONLY, &OldProtect); } @@ -142,17 +162,23 @@ void CDMA::PI_DMA_WRITE (void) BYTE * ROM = g_Rom->GetRomAddress(); BYTE * RDRAM = g_MMU->Rdram(); g_Reg->PI_CART_ADDR_REG -= 0x10000000; - if (g_Reg->PI_CART_ADDR_REG + PI_WR_LEN_REG < g_Rom->GetRomSize()) { - for (i = 0; i < PI_WR_LEN_REG; i ++) { + if (g_Reg->PI_CART_ADDR_REG + PI_WR_LEN_REG < g_Rom->GetRomSize()) + { + for (i = 0; i < PI_WR_LEN_REG; i ++) + { *(RDRAM+((g_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = *(ROM+((g_Reg->PI_CART_ADDR_REG + i) ^ 3)); } - } else { + } + else + { DWORD Len; Len = g_Rom->GetRomSize() - g_Reg->PI_CART_ADDR_REG; - for (i = 0; i < Len; i ++) { + for (i = 0; i < Len; i ++) + { *(RDRAM+((g_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = *(ROM+((g_Reg->PI_CART_ADDR_REG + i) ^ 3)); } - for (i = Len; i < PI_WR_LEN_REG - Len; i ++) { + for (i = Len; i < PI_WR_LEN_REG - Len; i ++) + { *(RDRAM+((g_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = 0; } } @@ -182,7 +208,8 @@ void CDMA::PI_DMA_WRITE (void) } -void CDMA::SP_DMA_READ (void) { +void CDMA::SP_DMA_READ (void) +{ g_Reg->SP_DRAM_ADDR_REG &= 0x1FFFFFFF; if (g_Reg->SP_DRAM_ADDR_REG > g_MMU->RdramSize()) @@ -205,9 +232,18 @@ void CDMA::SP_DMA_READ (void) { return; } - if ((g_Reg->SP_MEM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } - if ((g_Reg->SP_DRAM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } - if (((g_Reg->SP_RD_LEN_REG + 1) & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if ((g_Reg->SP_MEM_ADDR_REG & 3) != 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } + if ((g_Reg->SP_DRAM_ADDR_REG & 3) != 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } + if (((g_Reg->SP_RD_LEN_REG + 1) & 3) != 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } memcpy( g_MMU->Dmem() + (g_Reg->SP_MEM_ADDR_REG & 0x1FFF), g_MMU->Rdram() + g_Reg->SP_DRAM_ADDR_REG, g_Reg->SP_RD_LEN_REG + 1 ); @@ -236,9 +272,19 @@ void CDMA::SP_DMA_WRITE (void) return; } - if ((g_Reg->SP_MEM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } - if ((g_Reg->SP_DRAM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } - if (((g_Reg->SP_WR_LEN_REG + 1) & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if ((g_Reg->SP_MEM_ADDR_REG & 3) != 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } + + if ((g_Reg->SP_DRAM_ADDR_REG & 3) != 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } + if (((g_Reg->SP_WR_LEN_REG + 1) & 3) != 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } memcpy( g_MMU->Rdram() + g_Reg->SP_DRAM_ADDR_REG, g_MMU->Dmem() + (g_Reg->SP_MEM_ADDR_REG & 0x1FFF), g_Reg->SP_WR_LEN_REG + 1); @@ -246,4 +292,3 @@ void CDMA::SP_DMA_WRITE (void) g_Reg->SP_DMA_BUSY_REG = 0; g_Reg->SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY; } - diff --git a/Source/Project64/N64 System/Mips/Dma.h b/Source/Project64/N64 System/Mips/Dma.h index 2dc7f1ff9..f1fd29164 100644 --- a/Source/Project64/N64 System/Mips/Dma.h +++ b/Source/Project64/N64 System/Mips/Dma.h @@ -33,5 +33,3 @@ private: void OnFirstDMA ( void ); }; - - diff --git a/Source/Project64/N64 System/Mips/Eeprom.cpp b/Source/Project64/N64 System/Mips/Eeprom.cpp index c338c2fdb..27b3870a5 100644 --- a/Source/Project64/N64 System/Mips/Eeprom.cpp +++ b/Source/Project64/N64 System/Mips/Eeprom.cpp @@ -18,8 +18,10 @@ CEeprom::CEeprom (bool ReadOnly): memset(m_EEPROM,0xFF,sizeof(m_EEPROM)); } -CEeprom::~CEeprom (void) { - if (m_hFile) { +CEeprom::~CEeprom (void) +{ + if (m_hFile) + { CloseHandle(m_hFile); m_hFile = NULL; } @@ -31,15 +33,21 @@ unsigned char byte2bcd(int n) return (unsigned char)(((n / 10) << 4) | (n % 10)); } -void CEeprom::EepromCommand ( BYTE * Command) { +void CEeprom::EepromCommand ( BYTE * Command) +{ time_t curtime_time; struct tm curtime; - if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_Eeprom_4K; } + if (g_System->m_SaveUsing == SaveChip_Auto) + { + g_System->m_SaveUsing = SaveChip_Eeprom_4K; + } - switch (Command[2]) { + switch (Command[2]) + { case 0: // check - if (g_System->m_SaveUsing != SaveChip_Eeprom_4K && g_System->m_SaveUsing != SaveChip_Eeprom_16K) { + if (g_System->m_SaveUsing != SaveChip_Eeprom_4K && g_System->m_SaveUsing != SaveChip_Eeprom_16K) + { Command[1] |= 0x80; break; } @@ -52,20 +60,34 @@ void CEeprom::EepromCommand ( BYTE * Command) { Command[4] = (g_System->m_SaveUsing == SaveChip_Eeprom_4K) ? 0x80 : 0xC0; if ((Command[1] & 3) > 2) Command[5] = 0x00; - } else { + } + else + { Command[3] = 0x00; Command[4] = g_System->m_SaveUsing == SaveChip_Eeprom_4K?0x80:0xC0; Command[5] = 0x00; } break; case 4: // Read from Eeprom - if (Command[0] != 2 && bHaveDebugger()) { g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); } - if (Command[1] != 8 && bHaveDebugger()) { g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); } + if (Command[0] != 2 && bHaveDebugger()) + { + g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); + } + if (Command[1] != 8 && bHaveDebugger()) + { + g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); + } ReadFrom(&Command[4],Command[3]); break; case 5: //Write to Eeprom - if (Command[0] != 10 && bHaveDebugger()) { g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); } - if (Command[1] != 1 && bHaveDebugger()) { g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); } + if (Command[0] != 10 && bHaveDebugger()) + { + g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); + } + if (Command[1] != 1 && bHaveDebugger()) + { + g_Notify->DisplayError(L"What am I meant to do with this Eeprom Command"); + } WriteTo(&Command[4],Command[3]); break; case 6: //RTC Status query @@ -74,7 +96,7 @@ void CEeprom::EepromCommand ( BYTE * Command) { Command[5] = 0x00; break; case 7: //Read RTC block - switch(Command[3]) + switch (Command[3]) { case 0: //Block number Command[4] = 0x00; @@ -101,18 +123,25 @@ void CEeprom::EepromCommand ( BYTE * Command) { break; case 8: //Write RTC, unimplemented - if (g_Settings->LoadDword(Debugger_ShowPifErrors)) { g_Notify->DisplayError(L"Write RTC, unimplemented"); } + if (g_Settings->LoadDword(Debugger_ShowPifErrors)) + { + g_Notify->DisplayError(L"Write RTC, unimplemented"); + } break; default: - if (g_Settings->LoadDword(Debugger_ShowPifErrors)) { g_Notify->DisplayError(L"Unknown EepromCommand %d",Command[2]); } + if (g_Settings->LoadDword(Debugger_ShowPifErrors)) + { + g_Notify->DisplayError(L"Unknown EepromCommand %d",Command[2]); + } } } -void CEeprom::LoadEeprom (void) { +void CEeprom::LoadEeprom (void) +{ CPath FileName; DWORD dwRead; - memset(m_EEPROM,0,sizeof(m_EEPROM)); + memset(m_EEPROM,0xFF,sizeof(m_EEPROM)); FileName.SetDriveDirectory( g_Settings->LoadString(Directory_NativeSave).c_str()); FileName.SetName(g_Settings->LoadString(Game_GameName).c_str()); @@ -135,7 +164,8 @@ void CEeprom::LoadEeprom (void) { ReadFile(m_hFile,m_EEPROM,sizeof(m_EEPROM),&dwRead,NULL); } -void CEeprom::ReadFrom(BYTE * Buffer, int line) { +void CEeprom::ReadFrom(BYTE * Buffer, int line) +{ int i; if (m_hFile == NULL) @@ -143,13 +173,14 @@ void CEeprom::ReadFrom(BYTE * Buffer, int line) { LoadEeprom(); } - for(i=0; i < 8; i++) + for (i=0; i < 8; i++) { Buffer[i] = m_EEPROM[line*8+i]; } } -void CEeprom::WriteTo(BYTE * Buffer, int line) { +void CEeprom::WriteTo(BYTE * Buffer, int line) +{ DWORD dwWritten; int i; @@ -157,7 +188,10 @@ void CEeprom::WriteTo(BYTE * Buffer, int line) { { LoadEeprom(); } - for(i=0;i<8;i++) { m_EEPROM[line*8+i]=Buffer[i]; } + for (i=0;i<8;i++) + { + m_EEPROM[line*8+i]=Buffer[i]; + } SetFilePointer(m_hFile,line*8,NULL,FILE_BEGIN); WriteFile( m_hFile,Buffer,8,&dwWritten,NULL ); FlushFileBuffers(m_hFile); diff --git a/Source/Project64/N64 System/Mips/FlashRam.cpp b/Source/Project64/N64 System/Mips/FlashRam.cpp index 25d471ba0..c4191f129 100644 --- a/Source/Project64/N64 System/Mips/FlashRam.cpp +++ b/Source/Project64/N64 System/Mips/FlashRam.cpp @@ -18,10 +18,13 @@ CFlashram::CFlashram (bool ReadOnly): m_ReadOnly(ReadOnly), m_hFile(NULL) { + } -CFlashram::~CFlashram (void) { - if (m_hFile) { +CFlashram::~CFlashram (void) +{ + if (m_hFile) + { CloseHandle(m_hFile); m_hFile = NULL; } @@ -32,10 +35,15 @@ void CFlashram::DmaFromFlashram ( BYTE * dest, int StartOffset, int len) BYTE FlipBuffer[0x10000]; DWORD dwRead, count; - switch (m_FlashFlag) { + switch (m_FlashFlag) + { case FLASHRAM_MODE_READ: - if (m_hFile == NULL) { - if (!LoadFlashram()) { return; } + if (m_hFile == NULL) + { + if (!LoadFlashram()) + { + return; + } } if (len > 0x10000) { @@ -57,10 +65,12 @@ void CFlashram::DmaFromFlashram ( BYTE * dest, int StartOffset, int len) StartOffset = StartOffset << 1; SetFilePointer(m_hFile,StartOffset,NULL,FILE_BEGIN); ReadFile(m_hFile,FlipBuffer,len,&dwRead,NULL); - for (count = dwRead; (int)count < len; count ++) { + for (count = dwRead; (int)count < len; count ++) + { FlipBuffer[count] = 0xFF; } - _asm { + _asm + { mov edi, dest lea ecx, [FlipBuffer] mov edx, 0 @@ -94,8 +104,10 @@ void CFlashram::DmaFromFlashram ( BYTE * dest, int StartOffset, int len) } } -void CFlashram::DmaToFlashram(BYTE * Source, int StartOffset, int len) { - switch (m_FlashFlag) { +void CFlashram::DmaToFlashram(BYTE * Source, int StartOffset, int len) +{ + switch (m_FlashFlag) + { case FLASHRAM_MODE_WRITE: m_FlashRamPointer = Source; break; @@ -110,7 +122,8 @@ void CFlashram::DmaToFlashram(BYTE * Source, int StartOffset, int len) { DWORD CFlashram::ReadFromFlashStatus (DWORD PAddr) { - switch (PAddr) { + switch (PAddr) + { case 0x08000000: return (DWORD)(m_FlashStatus >> 32); default: if (bHaveDebugger()) @@ -122,7 +135,8 @@ DWORD CFlashram::ReadFromFlashStatus (DWORD PAddr) return (DWORD)(m_FlashStatus >> 32); } -bool CFlashram::LoadFlashram (void) { +bool CFlashram::LoadFlashram (void) +{ CPath FileName; FileName.SetDriveDirectory( g_Settings->LoadString(Directory_NativeSave).c_str()); @@ -146,27 +160,36 @@ bool CFlashram::LoadFlashram (void) { return true; } -void CFlashram::WriteToFlashCommand(DWORD FlashRAM_Command) { +void CFlashram::WriteToFlashCommand(DWORD FlashRAM_Command) +{ BYTE EmptyBlock[128]; DWORD dwWritten; - switch (FlashRAM_Command & 0xFF000000) { + switch (FlashRAM_Command & 0xFF000000) + { case 0xD2000000: - switch (m_FlashFlag) { + switch (m_FlashFlag) + { case FLASHRAM_MODE_NOPES: break; case FLASHRAM_MODE_READ: break; case FLASHRAM_MODE_STATUS: break; case FLASHRAM_MODE_ERASE: memset(EmptyBlock,0xFF,sizeof(EmptyBlock)); if (m_hFile == NULL) { - if (!LoadFlashram()) { return; } + if (!LoadFlashram()) + { + return; + } } SetFilePointer(m_hFile,m_FlashRAM_Offset,NULL,FILE_BEGIN); WriteFile(m_hFile,EmptyBlock,128,&dwWritten,NULL); break; case FLASHRAM_MODE_WRITE: if (m_hFile == NULL) { - if (!LoadFlashram()) { return; } + if (!LoadFlashram()) + { + return; + } } { BYTE FlipBuffer[128]; @@ -174,7 +197,8 @@ void CFlashram::WriteToFlashCommand(DWORD FlashRAM_Command) { BYTE * FlashRamPointer = m_FlashRamPointer; memset(FlipBuffer,0,sizeof(FlipBuffer)); - _asm { + _asm + { lea edi, [FlipBuffer] mov ecx, FlashRamPointer mov edx, 0 diff --git a/Source/Project64/N64 System/Mips/FlashRam.h b/Source/Project64/N64 System/Mips/FlashRam.h index 59681c670..9bf8b80be 100644 --- a/Source/Project64/N64 System/Mips/FlashRam.h +++ b/Source/Project64/N64 System/Mips/FlashRam.h @@ -13,7 +13,8 @@ class CFlashram : private CDebugSettings { - enum Modes { + enum Modes + { FLASHRAM_MODE_NOPES = 0, FLASHRAM_MODE_ERASE = 1, FLASHRAM_MODE_WRITE = 2, diff --git a/Source/Project64/N64 System/Mips/Memory Labels Class.cpp b/Source/Project64/N64 System/Mips/Memory Labels Class.cpp index f27b85cfb..243e19b31 100644 --- a/Source/Project64/N64 System/Mips/Memory Labels Class.cpp +++ b/Source/Project64/N64 System/Mips/Memory Labels Class.cpp @@ -10,15 +10,21 @@ ****************************************************************************/ #include "stdafx.h" -DWORD CMemoryLabel::AsciiToHex (char * HexValue) { +DWORD CMemoryLabel::AsciiToHex (char * HexValue) +{ DWORD Count, Finish, Value = 0; Finish = strlen(HexValue); - if (Finish > 8 ) { Finish = 8; } + if (Finish > 8 ) + { + Finish = 8; + } - for (Count = 0; Count < Finish; Count++){ + for (Count = 0; Count < Finish; Count++) + { Value = (Value << 4); - switch( HexValue[Count] ) { + switch ( HexValue[Count] ) + { case '0': break; case '1': Value += 1; break; case '2': Value += 2; break; @@ -49,9 +55,11 @@ DWORD CMemoryLabel::AsciiToHex (char * HexValue) { return Value; } -void CMemoryLabel::AddMemoryLabel ( DWORD Address, const char * Message, ... ) { +void CMemoryLabel::AddMemoryLabel ( DWORD Address, const char * Message, ... ) +{ StringMap::iterator Item = m_LabelList.find(Address); - if (Item == m_LabelList.end()) { + if (Item == m_LabelList.end()) + { char Msg[1000]; va_list ap; @@ -65,9 +73,11 @@ void CMemoryLabel::AddMemoryLabel ( DWORD Address, const char * Message, ... ) { } } -stdstr CMemoryLabel::LabelName ( DWORD Address ) const { +stdstr CMemoryLabel::LabelName ( DWORD Address ) const +{ //StringMap::iterator theIterator = m_LabelList.find(Address); - //if (theIterator != m_LabelList.end()) { + //if (theIterator != m_LabelList.end()) + //{ // return (*theIterator).second; //} @@ -76,36 +86,47 @@ stdstr CMemoryLabel::LabelName ( DWORD Address ) const { return stdstr(strLabelName); } -stdstr CMemoryLabel::StoredLabelName ( DWORD Address ) { +stdstr CMemoryLabel::StoredLabelName ( DWORD Address ) +{ StringMap::iterator theIterator = m_LabelList.find(Address); - if (theIterator != m_LabelList.end()) { + if (theIterator != m_LabelList.end()) + { return (*theIterator).second; } return stdstr(""); } -void CMemoryLabel::LoadLabelList ( char * file ) { +void CMemoryLabel::LoadLabelList ( char * file ) +{ m_LabelList.clear(); CurrentLabelFile = file; HANDLE hFile = CreateFile(file,GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); - if (hFile == INVALID_HANDLE_VALUE) { return; } + if (hFile == INVALID_HANDLE_VALUE) + { + return; + } SetFilePointer(hFile,0,NULL,FILE_BEGIN); DWORD FileSize = GetFileSize(hFile,NULL); void * FileContents = VirtualAlloc(NULL,FileSize,MEM_COMMIT,PAGE_READWRITE ); - if (FileContents) { + if (FileContents) + { DWORD dwRead; - if (!ReadFile(hFile,FileContents,FileSize,&dwRead,NULL)) { + if (!ReadFile(hFile,FileContents,FileSize,&dwRead,NULL)) + { VirtualFree(FileContents, 0, MEM_RELEASE); FileContents = NULL; } } - if (FileContents) { ProcessCODFile((BYTE *)FileContents, FileSize); } + if (FileContents) + { + ProcessCODFile((BYTE *)FileContents, FileSize); + } VirtualFree(FileContents, 0, MEM_RELEASE); CloseHandle(hFile); @@ -113,21 +134,27 @@ void CMemoryLabel::LoadLabelList ( char * file ) { m_NewLabels = 0; } -// How many new labels been added since loading/saveing label file -int CMemoryLabel::NewLabels ( void ) { +// How many new labels been added since loading/saving label file +int CMemoryLabel::NewLabels ( void ) +{ return m_NewLabels; } -void CMemoryLabel::SaveLabelList ( void ) { +void CMemoryLabel::SaveLabelList ( void ) +{ m_NewLabels = 0; - if (CurrentLabelFile.length() == 0) { return; } + if (CurrentLabelFile.length() == 0) + { + return; + } HANDLE hFile = CreateFile(CurrentLabelFile.c_str(),GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); SetFilePointer(hFile,0,NULL,FILE_BEGIN); - for (StringMap::iterator Item = m_LabelList.begin(); Item != m_LabelList.end(); Item++) { + for (StringMap::iterator Item = m_LabelList.begin(); Item != m_LabelList.end(); Item++) + { char Text[300]; DWORD dwWritten; @@ -140,33 +167,51 @@ void CMemoryLabel::SaveLabelList ( void ) { } -void CMemoryLabel::ProcessCODFile(BYTE * File, DWORD FileLen) { +void CMemoryLabel::ProcessCODFile(BYTE * File, DWORD FileLen) +{ char * CurrentPos = (char *)File; char Label[40]; DWORD Address; int Length; - while ( CurrentPos < (char *)File + FileLen ) { - if (*CurrentPos != '0') { return; } + while ( CurrentPos < (char *)File + FileLen ) + { + if (*CurrentPos != '0') + { + return; + } CurrentPos += 1; - if (*CurrentPos != 'x') { return; } + if (*CurrentPos != 'x') + { + return; + } CurrentPos += 1; - if (strchr(CurrentPos,',') - CurrentPos != 8) { return; } + if (strchr(CurrentPos,',') - CurrentPos != 8) + { + return; + } Address = AsciiToHex (CurrentPos); CurrentPos += 9; - if (strchr(CurrentPos,'\r') == NULL) { + if (strchr(CurrentPos,'\r') == NULL) + { Length = strchr(CurrentPos,'\n') - CurrentPos; - } else { + } + else + { Length = strchr(CurrentPos,'\r') - CurrentPos; - if (Length > (strchr(CurrentPos,'\n') - CurrentPos)) { + if (Length > (strchr(CurrentPos,'\n') - CurrentPos)) + { Length = strchr(CurrentPos,'\n') - CurrentPos; } } - if (Length > 40) { Length = 40; } + if (Length > 40) + { + Length = 40; + } memcpy(Label,CurrentPos,Length); Label[Length] = '\0'; diff --git a/Source/Project64/N64 System/Mips/Memory Labels Class.h b/Source/Project64/N64 System/Mips/Memory Labels Class.h index ce856553b..563caeef4 100644 --- a/Source/Project64/N64 System/Mips/Memory Labels Class.h +++ b/Source/Project64/N64 System/Mips/Memory Labels Class.h @@ -12,7 +12,8 @@ typedef std::map StringMap; -class CMemoryLabel { +class CMemoryLabel +{ // Variable dealing with Labels StringMap m_LabelList; int m_NewLabels; diff --git a/Source/Project64/N64 System/Mips/Memory Virtual Mem.cpp b/Source/Project64/N64 System/Mips/Memory Virtual Mem.cpp index 4a2860cde..a451af77b 100644 --- a/Source/Project64/N64 System/Mips/Memory Virtual Mem.cpp +++ b/Source/Project64/N64 System/Mips/Memory Virtual Mem.cpp @@ -64,7 +64,8 @@ void CMipsMemoryVM::Reset( bool /*EraseMemory*/ ) DWORD Len = g_Settings->LoadDword(Rdb_TLB_VAddrLen); //0x01000000; DWORD PAddr = g_Settings->LoadDword(Rdb_TLB_PAddrStart); //0x10034b30; DWORD End = Start + Len; - for (DWORD address = Start; address < End; address += 0x1000) { + for (DWORD address = Start; address < End; address += 0x1000) + { m_TLB_ReadMap[address >> 12] = ((DWORD)m_RDRAM + (address - Start + PAddr)) - address; m_TLB_WriteMap[address >> 12] = ((DWORD)m_RDRAM + (address - Start + PAddr)) - address; } @@ -102,10 +103,19 @@ BOOL CMipsMemoryVM::Initialize ( void ) return true; } - if (m_Reserve1) { m_RDRAM = m_Reserve1; m_Reserve1 = NULL; } - if (m_RDRAM == NULL && m_Reserve2) { m_RDRAM = m_Reserve2; m_Reserve2 = NULL; } - if (m_RDRAM == NULL) { m_RDRAM = (unsigned char *) VirtualAlloc( NULL, 0x20000000, MEM_RESERVE | MEM_TOP_DOWN, PAGE_READWRITE ); } - if( m_RDRAM == NULL ) + if (m_Reserve1) + { + m_RDRAM = m_Reserve1; m_Reserve1 = NULL; + } + if (m_RDRAM == NULL && m_Reserve2) + { + m_RDRAM = m_Reserve2; m_Reserve2 = NULL; + } + if (m_RDRAM == NULL) + { + m_RDRAM = (unsigned char *) VirtualAlloc( NULL, 0x20000000, MEM_RESERVE | MEM_TOP_DOWN, PAGE_READWRITE ); + } + if ( m_RDRAM == NULL ) { WriteTraceF(TraceError,__FUNCTION__ ": Failed to Reserve RDRAM (Size: 0x%X)",0x20000000); FreeMemory(); @@ -113,14 +123,14 @@ BOOL CMipsMemoryVM::Initialize ( void ) } m_AllocatedRdramSize = g_Settings->LoadDword(Game_RDRamSize); - if(VirtualAlloc(m_RDRAM, m_AllocatedRdramSize, MEM_COMMIT, PAGE_READWRITE)==NULL) + if (VirtualAlloc(m_RDRAM, m_AllocatedRdramSize, MEM_COMMIT, PAGE_READWRITE)==NULL) { WriteTraceF(TraceError,__FUNCTION__ ": Failed to Allocate RDRAM (Size: 0x%X)",m_AllocatedRdramSize); FreeMemory(); return false; } - if(VirtualAlloc(m_RDRAM + 0x04000000, 0x2000, MEM_COMMIT, PAGE_READWRITE)==NULL) + if (VirtualAlloc(m_RDRAM + 0x04000000, 0x2000, MEM_COMMIT, PAGE_READWRITE)==NULL) { WriteTraceF(TraceError,__FUNCTION__ ": Failed to Allocate DMEM/IMEM (Size: 0x%X)",0x2000); FreeMemory(); @@ -135,7 +145,7 @@ BOOL CMipsMemoryVM::Initialize ( void ) m_RomMapped = true; m_Rom = m_RDRAM + 0x10000000; m_RomSize = g_Rom->GetRomSize(); - if(VirtualAlloc(m_Rom, g_Rom->GetRomSize(), MEM_COMMIT, PAGE_READWRITE)==NULL) + if (VirtualAlloc(m_Rom, g_Rom->GetRomSize(), MEM_COMMIT, PAGE_READWRITE)==NULL) { WriteTraceF(TraceError,__FUNCTION__ ": Failed to Allocate Rom (Size: 0x%X)",g_Rom->GetRomSize()); FreeMemory(); @@ -145,7 +155,9 @@ BOOL CMipsMemoryVM::Initialize ( void ) DWORD OldProtect; VirtualProtect(m_Rom,g_Rom->GetRomSize(),PAGE_READONLY, &OldProtect); - } else { + } + else + { m_RomMapped = false; m_Rom = g_Rom->GetRomAddress(); m_RomSize = g_Rom->GetRomSize(); @@ -177,9 +189,18 @@ void CMipsMemoryVM::FreeMemory ( void ) { if (VirtualFree( m_RDRAM, 0x20000000,MEM_DECOMMIT) != 0) { - if (m_Reserve1 == NULL) { m_Reserve1 = m_RDRAM; } - else if (m_Reserve2 == NULL) { m_Reserve2 = m_RDRAM; } - else { VirtualFree( m_RDRAM, 0 , MEM_RELEASE); } + if (m_Reserve1 == NULL) + { + m_Reserve1 = m_RDRAM; + } + else if (m_Reserve2 == NULL) + { + m_Reserve2 = m_RDRAM; + } + else + { + VirtualFree( m_RDRAM, 0 , MEM_RELEASE); + } } else { VirtualFree( m_RDRAM, 0 , MEM_RELEASE); } @@ -227,14 +248,20 @@ BYTE * CMipsMemoryVM::PifRam ( void ) BOOL CMipsMemoryVM::LB_VAddr ( DWORD VAddr, BYTE & Value ) { - if (m_TLB_ReadMap[VAddr >> 12] == 0) { return FALSE; } + if (m_TLB_ReadMap[VAddr >> 12] == 0) + { + return FALSE; + } Value = *(BYTE *)(m_TLB_ReadMap[VAddr >> 12] + (VAddr ^ 3)); return TRUE; } BOOL CMipsMemoryVM::LH_VAddr ( DWORD VAddr, WORD & Value ) { - if (m_TLB_ReadMap[VAddr >> 12] == 0) { return FALSE; } + if (m_TLB_ReadMap[VAddr >> 12] == 0) + { + return FALSE; + } Value = *(WORD *)(m_TLB_ReadMap[VAddr >> 12] + (VAddr ^ 2)); return TRUE; } @@ -251,13 +278,17 @@ BOOL CMipsMemoryVM::LW_VAddr ( DWORD VAddr, DWORD & Value ) } } BYTE * BaseAddress = (BYTE *)m_TLB_ReadMap[VAddr >> 12]; - if (BaseAddress == 0) { return FALSE; } + if (BaseAddress == 0) + { + return FALSE; + } Value = *(DWORD *)(BaseAddress + VAddr); // if (LookUpMode == FuncFind_ChangeMemory) // { -// g_Notify->BreakPoint(__FILE__,__LINE__); -// if ( (Command.Hex >> 16) == 0x7C7C) { +// g_Notify->BreakPoint(__FILEW__,__LINE__); +// if ( (Command.Hex >> 16) == 0x7C7C) +// { // Command.Hex = OrigMem[(Command.Hex & 0xFFFF)].OriginalValue; // } // } @@ -266,7 +297,10 @@ BOOL CMipsMemoryVM::LW_VAddr ( DWORD VAddr, DWORD & Value ) BOOL CMipsMemoryVM::LD_VAddr ( DWORD VAddr, QWORD & Value ) { - if (m_TLB_ReadMap[VAddr >> 12] == 0) { return FALSE; } + if (m_TLB_ReadMap[VAddr >> 12] == 0) + { + return FALSE; + } *((DWORD *)(&Value) + 1) = *(DWORD *)(m_TLB_ReadMap[VAddr >> 12] + VAddr); *((DWORD *)(&Value)) = *(DWORD *)(m_TLB_ReadMap[VAddr >> 12] + VAddr + 4); return TRUE; @@ -283,7 +317,7 @@ BOOL CMipsMemoryVM::LB_PAddr ( DWORD PAddr, BYTE & Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -298,7 +332,7 @@ BOOL CMipsMemoryVM::LH_PAddr ( DWORD PAddr, WORD & Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -313,7 +347,7 @@ BOOL CMipsMemoryVM::LW_PAddr ( DWORD PAddr, DWORD & Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -329,20 +363,26 @@ BOOL CMipsMemoryVM::LD_PAddr ( DWORD PAddr, QWORD & Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } BOOL CMipsMemoryVM::SB_VAddr ( DWORD VAddr, BYTE Value ) { - if (m_TLB_WriteMap[VAddr >> 12] == 0) { return FALSE; } + if (m_TLB_WriteMap[VAddr >> 12] == 0) + { + return FALSE; + } *(BYTE *)(m_TLB_WriteMap[VAddr >> 12] + (VAddr ^ 3)) = Value; return TRUE; } BOOL CMipsMemoryVM::SH_VAddr ( DWORD VAddr, WORD Value ) { - if (m_TLB_WriteMap[VAddr >> 12] == 0) { return FALSE; } + if (m_TLB_WriteMap[VAddr >> 12] == 0) + { + return FALSE; + } *(WORD *)(m_TLB_WriteMap[VAddr >> 12] + (VAddr ^ 2)) = Value; return TRUE; } @@ -358,7 +398,10 @@ BOOL CMipsMemoryVM::SW_VAddr ( DWORD VAddr, DWORD Value ) return true; } } - if (m_TLB_WriteMap[VAddr >> 12] == 0) { return FALSE; } + if (m_TLB_WriteMap[VAddr >> 12] == 0) + { + return FALSE; + } *(DWORD *)(m_TLB_WriteMap[VAddr >> 12] + VAddr) = Value; return TRUE; } @@ -366,7 +409,10 @@ BOOL CMipsMemoryVM::SW_VAddr ( DWORD VAddr, DWORD Value ) BOOL CMipsMemoryVM::SD_VAddr ( DWORD VAddr, QWORD Value ) { - if (m_TLB_WriteMap[VAddr >> 12] == 0) { return FALSE; } + if (m_TLB_WriteMap[VAddr >> 12] == 0) + { + return FALSE; + } *(DWORD *)(m_TLB_WriteMap[VAddr >> 12] + VAddr) = *((DWORD *)(&Value) + 1); *(DWORD *)(m_TLB_WriteMap[VAddr >> 12] + VAddr + 4) = *((DWORD *)(&Value)); return TRUE; @@ -383,7 +429,7 @@ BOOL CMipsMemoryVM::SB_PAddr ( DWORD PAddr, BYTE Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -398,7 +444,7 @@ BOOL CMipsMemoryVM::SH_PAddr ( DWORD PAddr, WORD Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -413,7 +459,7 @@ BOOL CMipsMemoryVM::SW_PAddr ( DWORD PAddr, DWORD Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -430,7 +476,7 @@ BOOL CMipsMemoryVM::SD_PAddr ( DWORD PAddr, QWORD Value ) { return false; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -441,20 +487,27 @@ bool CMipsMemoryVM::ValidVaddr ( DWORD VAddr ) const bool CMipsMemoryVM::VAddrToRealAddr ( DWORD VAddr, void * &RealAddress ) const { - if (m_TLB_ReadMap[VAddr >> 12] == 0) { return false; } + if (m_TLB_ReadMap[VAddr >> 12] == 0) + { + return false; + } RealAddress = (BYTE *)(m_TLB_ReadMap[VAddr >> 12] + VAddr); return true; } bool CMipsMemoryVM::TranslateVaddr ( DWORD VAddr, DWORD &PAddr) const { - //Change the Virtual address to a Phyiscal Address - if (m_TLB_ReadMap[VAddr >> 12] == 0) { return false; } + //Change the Virtual address to a Physical Address + if (m_TLB_ReadMap[VAddr >> 12] == 0) + { + return false; + } PAddr = (DWORD)((BYTE *)(m_TLB_ReadMap[VAddr >> 12] + VAddr) - m_RDRAM); return true; } -void CMipsMemoryVM::Compile_LB ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { +void CMipsMemoryVM::Compile_LB ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) +{ DWORD PAddr; char VarName[100]; @@ -462,7 +515,7 @@ void CMipsMemoryVM::Compile_LB ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { { if (!g_System->bUseTlb()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } @@ -472,22 +525,30 @@ void CMipsMemoryVM::Compile_LB ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { MoveConstToX86reg(VAddr,AddrReg); MoveVariableDispToX86Reg(m_TLB_ReadMap,"m_TLB_ReadMap",TlbMappReg,TlbMappReg,4); CompileReadTLBMiss(AddrReg,TlbMappReg); - if (SignExtend) { + if (SignExtend) + { MoveSxByteX86regPointerToX86reg(AddrReg, TlbMappReg,Reg); - } else { + } + else + { MoveZxByteX86regPointerToX86reg(AddrReg, TlbMappReg,Reg); } return; } - if (!TranslateVaddr(VAddr,PAddr)) { + if (!TranslateVaddr(VAddr,PAddr)) + { MoveConstToX86reg(0,Reg); CPU_Message("Compile_LB\nFailed to translate address %X",VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_LB\nFailed to translate address %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_LB\nFailed to translate address %X",VAddr); + } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -498,19 +559,26 @@ void CMipsMemoryVM::Compile_LB ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { case 0x00700000: case 0x10000000: sprintf(VarName,"m_RDRAM + %X",PAddr); - if (SignExtend) { + if (SignExtend) + { MoveSxVariableToX86regByte(PAddr + m_RDRAM,VarName,Reg); - } else { + } + else + { MoveZxVariableToX86regByte(PAddr + m_RDRAM,VarName,Reg); } break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_LB\nFailed to compile address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_LB\nFailed to compile address: %X",VAddr); + } } } -void CMipsMemoryVM::Compile_LH ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { +void CMipsMemoryVM::Compile_LH ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) +{ char VarName[100]; DWORD PAddr; @@ -518,7 +586,7 @@ void CMipsMemoryVM::Compile_LH ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { { if (!g_System->bUseTlb()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } @@ -528,22 +596,30 @@ void CMipsMemoryVM::Compile_LH ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { MoveConstToX86reg(VAddr,AddrReg); MoveVariableDispToX86Reg(m_TLB_ReadMap,"m_TLB_ReadMap",TlbMappReg,TlbMappReg,4); CompileReadTLBMiss(AddrReg,TlbMappReg); - if (SignExtend) { + if (SignExtend) + { MoveSxHalfX86regPointerToX86reg(AddrReg, TlbMappReg,Reg); - } else { + } + else + { MoveZxHalfX86regPointerToX86reg(AddrReg, TlbMappReg,Reg); } return; } - if (!TranslateVaddr(VAddr, PAddr)) { + if (!TranslateVaddr(VAddr, PAddr)) + { MoveConstToX86reg(0,Reg); CPU_Message("Compile_LH\nFailed to translate address %X",VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_LH\nFailed to translate address %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_LH\nFailed to translate address %X",VAddr); + } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -554,19 +630,26 @@ void CMipsMemoryVM::Compile_LH ( x86Reg Reg, DWORD VAddr, BOOL SignExtend) { case 0x00700000: case 0x10000000: sprintf(VarName,"m_RDRAM + %X",PAddr); - if (SignExtend) { + if (SignExtend) + { MoveSxVariableToX86regHalf(PAddr + m_RDRAM,VarName,Reg); - } else { + } + else + { MoveZxVariableToX86regHalf(PAddr + m_RDRAM,VarName,Reg); } break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_LHU\nFailed to compile address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_LHU\nFailed to compile address: %X",VAddr); + } } } -void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { +void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) +{ char VarName[100]; DWORD PAddr; @@ -575,7 +658,7 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { { if (!g_System->bUseTlb()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } @@ -585,13 +668,16 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { CompileReadTLBMiss(VAddr,TlbMappReg); AddConstToX86Reg(TlbMappReg,VAddr); MoveX86PointerToX86reg(Reg,TlbMappReg); - } else { + } + else + { if (!TranslateVaddr(VAddr, PAddr)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -604,12 +690,14 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { MoveVariableToX86reg(PAddr + m_RDRAM,VarName,Reg); break; case 0x04000000: - if (PAddr < 0x04002000) { + if (PAddr < 0x04002000) + { sprintf(VarName,"m_RDRAM + %X",PAddr); MoveVariableToX86reg(PAddr + m_RDRAM,VarName,Reg); break; } - switch (PAddr) { + switch (PAddr) + { case 0x04040010: MoveVariableToX86reg(&g_Reg->SP_STATUS_REG,"SP_STATUS_REG",Reg); break; case 0x04040014: MoveVariableToX86reg(&g_Reg->SP_DMA_FULL_REG,"SP_DMA_FULL_REG",Reg); break; case 0x04040018: MoveVariableToX86reg(&g_Reg->SP_DMA_BUSY_REG,"SP_DMA_BUSY_REG",Reg); break; @@ -620,7 +708,10 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { case 0x04080000: MoveVariableToX86reg(&g_Reg->SP_PC_REG,"SP_PC_REG",Reg); break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); + } } break; case 0x04100000: @@ -636,7 +727,8 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { } break; case 0x04300000: - switch (PAddr) { + switch (PAddr) + { case 0x04300000: MoveVariableToX86reg(&g_Reg->MI_MODE_REG,"MI_MODE_REG",Reg); break; case 0x04300004: MoveVariableToX86reg(&g_Reg->MI_VERSION_REG,"MI_VERSION_REG",Reg); break; case 0x04300008: MoveVariableToX86reg(&g_Reg->MI_INTR_REG,"MI_INTR_REG",Reg); break; @@ -647,7 +739,8 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { } break; case 0x04400000: - switch (PAddr) { + switch (PAddr) + { case 0x04400010: m_RegWorkingSet.SetBlockCycleCount(m_RegWorkingSet.GetBlockCycleCount() - g_System->CountPerOp()); UpdateCounters(m_RegWorkingSet,false, true); @@ -660,11 +753,15 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); + } } break; case 0x04500000: /* AI registers */ - switch (PAddr) { + switch (PAddr) + { case 0x04500004: if (g_System->bFixedAudio()) { @@ -677,14 +774,19 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { MoveX86regToVariable(x86_EAX,&m_TempValue,"m_TempValue"); AfterCallDirect(m_RegWorkingSet); MoveVariableToX86reg(&m_TempValue,"m_TempValue",Reg); - } else { - if (g_Plugins->Audio()->AiReadLength != NULL) { + } + else + { + if (g_Plugins->Audio()->AiReadLength != NULL) + { BeforeCallDirect(m_RegWorkingSet); Call_Direct(g_Plugins->Audio()->AiReadLength, "AiReadLength"); MoveX86regToVariable(x86_EAX,&m_TempValue,"m_TempValue"); AfterCallDirect(m_RegWorkingSet); MoveVariableToX86reg(&m_TempValue,"m_TempValue",Reg); - } else { + } + else + { MoveConstToX86reg(0,Reg); } } @@ -698,17 +800,23 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { MoveX86regToVariable(x86_EAX,&m_TempValue,"m_TempValue"); AfterCallDirect(m_RegWorkingSet); MoveVariableToX86reg(&m_TempValue,"m_TempValue",Reg); - } else { + } + else + { MoveVariableToX86reg(&g_Reg->AI_STATUS_REG,"AI_STATUS_REG",Reg); } break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); + } } break; case 0x04600000: - switch (PAddr) { + switch (PAddr) + { case 0x04600010: MoveVariableToX86reg(&g_Reg->PI_STATUS_REG,"PI_STATUS_REG",Reg); break; case 0x04600014: MoveVariableToX86reg(&g_Reg->PI_DOMAIN1_REG,"PI_DOMAIN1_REG",Reg); break; case 0x04600018: MoveVariableToX86reg(&g_Reg->PI_BSD_DOM1_PWD_REG,"PI_BSD_DOM1_PWD_REG",Reg); break; @@ -720,24 +828,35 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { case 0x04600030: MoveVariableToX86reg(&g_Reg->PI_BSD_DOM2_RLS_REG,"PI_BSD_DOM2_RLS_REG",Reg); break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); + } } break; case 0x04700000: - switch (PAddr) { + switch (PAddr) + { case 0x0470000C: MoveVariableToX86reg(&g_Reg->RI_SELECT_REG,"RI_SELECT_REG",Reg); break; case 0x04700010: MoveVariableToX86reg(&g_Reg->RI_REFRESH_REG,"RI_REFRESH_REG",Reg); break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); + } } break; case 0x04800000: - switch (PAddr) { + switch (PAddr) + { case 0x04800018: MoveVariableToX86reg(&g_Reg->SI_STATUS_REG,"SI_STATUS_REG",Reg); break; default: MoveConstToX86reg(0,Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); + } } break; case 0x1FC00000: @@ -750,9 +869,12 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { // read from rom sprintf(VarName,"m_RDRAM + %X",PAddr); MoveVariableToX86reg(PAddr + m_RDRAM,VarName,Reg); - } else { + } + else + { MoveConstToX86reg(((PAddr & 0xFFFF) << 16) | (PAddr & 0xFFFF),Reg); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { CPU_Message(__FUNCTION__ "\nFailed to translate address: %X",VAddr); g_Notify->DisplayError(__FUNCTIONW__ L"\nFailed to translate address: %X",VAddr); } @@ -761,7 +883,8 @@ void CMipsMemoryVM::Compile_LW (x86Reg Reg, DWORD VAddr ) { } } -void CMipsMemoryVM::Compile_SB_Const ( BYTE Value, DWORD VAddr ) { +void CMipsMemoryVM::Compile_SB_Const ( BYTE Value, DWORD VAddr ) +{ char VarName[100]; DWORD PAddr; @@ -778,13 +901,15 @@ void CMipsMemoryVM::Compile_SB_Const ( BYTE Value, DWORD VAddr ) { return; } - if (!TranslateVaddr(VAddr, PAddr)) { + if (!TranslateVaddr(VAddr, PAddr)) + { CPU_Message("Compile_SB\nFailed to translate address %X",VAddr); if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SB\nFailed to translate address %X",VAddr); } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -797,11 +922,15 @@ void CMipsMemoryVM::Compile_SB_Const ( BYTE Value, DWORD VAddr ) { MoveConstByteToVariable(Value,PAddr + m_RDRAM,VarName); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SB_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SB_Const\ntrying to store %X in %X?",Value,VAddr); + } } } -void CMipsMemoryVM::Compile_SB_Register ( x86Reg Reg, DWORD VAddr ) { +void CMipsMemoryVM::Compile_SB_Register ( x86Reg Reg, DWORD VAddr ) +{ char VarName[100]; DWORD PAddr; @@ -820,13 +949,18 @@ void CMipsMemoryVM::Compile_SB_Register ( x86Reg Reg, DWORD VAddr ) { return; } - if (!TranslateVaddr(VAddr, PAddr)) { + if (!TranslateVaddr(VAddr, PAddr)) + { CPU_Message("Compile_SB\nFailed to translate address %X",VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SB\nFailed to translate address %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SB\nFailed to translate address %X",VAddr); + } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -839,11 +973,15 @@ void CMipsMemoryVM::Compile_SB_Register ( x86Reg Reg, DWORD VAddr ) { MoveX86regByteToVariable(Reg,PAddr + m_RDRAM,VarName); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SB_Register\ntrying to store in %X?",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SB_Register\ntrying to store in %X?",VAddr); + } } } -void CMipsMemoryVM::Compile_SH_Const ( WORD Value, DWORD VAddr ) { +void CMipsMemoryVM::Compile_SH_Const ( WORD Value, DWORD VAddr ) +{ char VarName[100]; DWORD PAddr; @@ -862,11 +1000,15 @@ void CMipsMemoryVM::Compile_SH_Const ( WORD Value, DWORD VAddr ) { if (!TranslateVaddr(VAddr, PAddr)) { CPU_Message("Compile_SH\nFailed to translate address %X",VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SH\nFailed to translate address %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SH\nFailed to translate address %X",VAddr); + } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -879,11 +1021,15 @@ void CMipsMemoryVM::Compile_SH_Const ( WORD Value, DWORD VAddr ) { MoveConstHalfToVariable(Value,PAddr + m_RDRAM,VarName); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\ntrying to store %X in %X?",Value,VAddr); + } } } -void CMipsMemoryVM::Compile_SH_Register ( x86Reg Reg, DWORD VAddr ) { +void CMipsMemoryVM::Compile_SH_Register ( x86Reg Reg, DWORD VAddr ) +{ char VarName[100]; DWORD PAddr; @@ -904,11 +1050,15 @@ void CMipsMemoryVM::Compile_SH_Register ( x86Reg Reg, DWORD VAddr ) { if (!TranslateVaddr(VAddr, PAddr)) { CPU_Message("Compile_SH\nFailed to translate address %X",VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SH\nFailed to translate address %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SH\nFailed to translate address %X",VAddr); + } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -921,11 +1071,15 @@ void CMipsMemoryVM::Compile_SH_Register ( x86Reg Reg, DWORD VAddr ) { MoveX86regHalfToVariable(Reg,PAddr + m_RDRAM,VarName); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(__FUNCTIONW__ L"\ntrying to store in %X?",PAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(__FUNCTIONW__ L"\ntrying to store in %X?",PAddr); + } } } -void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { +void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) +{ char VarName[100]; BYTE * Jump; DWORD PAddr; @@ -943,13 +1097,18 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { return; } - if (!TranslateVaddr(VAddr, PAddr)) { + if (!TranslateVaddr(VAddr, PAddr)) + { CPU_Message("Compile_SW\nFailed to translate address %X",VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW\nFailed to translate address %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW\nFailed to translate address %X",VAddr); + } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -962,7 +1121,8 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { MoveConstToVariable(Value,PAddr + m_RDRAM,VarName); break; case 0x03F00000: - switch (PAddr) { + switch (PAddr) + { case 0x03F00000: MoveConstToVariable(Value,&g_Reg->RDRAM_CONFIG_REG,"RDRAM_CONFIG_REG"); break; case 0x03F00004: MoveConstToVariable(Value,&g_Reg->RDRAM_DEVICE_ID_REG,"RDRAM_DEVICE_ID_REG"); break; case 0x03F00008: MoveConstToVariable(Value,&g_Reg->RDRAM_DELAY_REG,"RDRAM_DELAY_REG"); break; @@ -980,16 +1140,21 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { case 0x03F8000C: break; case 0x03F80014: break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04000000: - if (PAddr < 0x04002000) { + if (PAddr < 0x04002000) + { sprintf(VarName,"m_RDRAM + %X",PAddr); MoveConstToVariable(Value,PAddr + m_RDRAM,VarName); break; } - switch (PAddr) { + switch (PAddr) + { case 0x04040000: MoveConstToVariable(Value,&g_Reg->SP_MEM_ADDR_REG,"SP_MEM_ADDR_REG"); break; case 0x04040004: MoveConstToVariable(Value,&g_Reg->SP_DRAM_ADDR_REG,"SP_DRAM_ADDR_REG"); break; case 0x04040008: @@ -1016,7 +1181,10 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { case 0x0404001C: MoveConstToVariable(0,&g_Reg->SP_SEMAPHORE_REG,"SP_SEMAPHORE_REG"); break; case 0x04080000: MoveConstToVariable(Value & 0xFFC,&g_Reg->SP_PC_REG,"SP_PC_REG"); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04100000: @@ -1031,30 +1199,54 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { AfterCallDirect(m_RegWorkingSet); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04300000: - switch (PAddr) { + switch (PAddr) + { case 0x04300000: { DWORD ModValue; ModValue = 0x7F; - if ( ( Value & MI_CLR_INIT ) != 0 ) { ModValue |= MI_MODE_INIT; } - if ( ( Value & MI_CLR_EBUS ) != 0 ) { ModValue |= MI_MODE_EBUS; } - if ( ( Value & MI_CLR_RDRAM ) != 0 ) { ModValue |= MI_MODE_RDRAM; } - if (ModValue != 0) { + if ( ( Value & MI_CLR_INIT ) != 0 ) + { + ModValue |= MI_MODE_INIT; + } + if ( ( Value & MI_CLR_EBUS ) != 0 ) + { + ModValue |= MI_MODE_EBUS; + } + if ( ( Value & MI_CLR_RDRAM ) != 0 ) + { + ModValue |= MI_MODE_RDRAM; + } + if (ModValue != 0) + { AndConstToVariable(~ModValue,&g_Reg->MI_MODE_REG,"MI_MODE_REG"); } ModValue = (Value & 0x7F); - if ( ( Value & MI_SET_INIT ) != 0 ) { ModValue |= MI_MODE_INIT; } - if ( ( Value & MI_SET_EBUS ) != 0 ) { ModValue |= MI_MODE_EBUS; } - if ( ( Value & MI_SET_RDRAM ) != 0 ) { ModValue |= MI_MODE_RDRAM; } + if ( ( Value & MI_SET_INIT ) != 0 ) + { + ModValue |= MI_MODE_INIT; + } + if ( ( Value & MI_SET_EBUS ) != 0 ) + { + ModValue |= MI_MODE_EBUS; + } + if ( ( Value & MI_SET_RDRAM ) != 0 ) + { + ModValue |= MI_MODE_RDRAM; + } if (ModValue != 0) { OrConstToVariable(ModValue,&g_Reg->MI_MODE_REG,"MI_MODE_REG"); } - if ( ( Value & MI_CLR_DP_INTR ) != 0 ) { + if ( ( Value & MI_CLR_DP_INTR ) != 0 ) + { AndConstToVariable((DWORD)~MI_INTR_DP,&g_Reg->MI_INTR_REG,"MI_INTR_REG"); AndConstToVariable((DWORD)~MI_INTR_DP,&g_Reg->m_GfxIntrReg,"m_GfxIntrReg"); } @@ -1064,36 +1256,79 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { { DWORD ModValue; ModValue = 0; - if ( ( Value & MI_INTR_MASK_CLR_SP ) != 0 ) { ModValue |= MI_INTR_MASK_SP; } - if ( ( Value & MI_INTR_MASK_CLR_SI ) != 0 ) { ModValue |= MI_INTR_MASK_SI; } - if ( ( Value & MI_INTR_MASK_CLR_AI ) != 0 ) { ModValue |= MI_INTR_MASK_AI; } - if ( ( Value & MI_INTR_MASK_CLR_VI ) != 0 ) { ModValue |= MI_INTR_MASK_VI; } - if ( ( Value & MI_INTR_MASK_CLR_PI ) != 0 ) { ModValue |= MI_INTR_MASK_PI; } - if ( ( Value & MI_INTR_MASK_CLR_DP ) != 0 ) { ModValue |= MI_INTR_MASK_DP; } - if (ModValue != 0) { + if ( ( Value & MI_INTR_MASK_CLR_SP ) != 0 ) + { + ModValue |= MI_INTR_MASK_SP; + } + if ( ( Value & MI_INTR_MASK_CLR_SI ) != 0 ) + { + ModValue |= MI_INTR_MASK_SI; + } + if ( ( Value & MI_INTR_MASK_CLR_AI ) != 0 ) + { + ModValue |= MI_INTR_MASK_AI; + } + if ( ( Value & MI_INTR_MASK_CLR_VI ) != 0 ) + { + ModValue |= MI_INTR_MASK_VI; + } + if ( ( Value & MI_INTR_MASK_CLR_PI ) != 0 ) + { + ModValue |= MI_INTR_MASK_PI; + } + if ( ( Value & MI_INTR_MASK_CLR_DP ) != 0 ) + { + ModValue |= MI_INTR_MASK_DP; + } + if (ModValue != 0) + { AndConstToVariable(~ModValue,&g_Reg->MI_INTR_MASK_REG,"MI_INTR_MASK_REG"); } ModValue = 0; - if ( ( Value & MI_INTR_MASK_SET_SP ) != 0 ) { ModValue |= MI_INTR_MASK_SP; } - if ( ( Value & MI_INTR_MASK_SET_SI ) != 0 ) { ModValue |= MI_INTR_MASK_SI; } - if ( ( Value & MI_INTR_MASK_SET_AI ) != 0 ) { ModValue |= MI_INTR_MASK_AI; } - if ( ( Value & MI_INTR_MASK_SET_VI ) != 0 ) { ModValue |= MI_INTR_MASK_VI; } - if ( ( Value & MI_INTR_MASK_SET_PI ) != 0 ) { ModValue |= MI_INTR_MASK_PI; } - if ( ( Value & MI_INTR_MASK_SET_DP ) != 0 ) { ModValue |= MI_INTR_MASK_DP; } - if (ModValue != 0) { + if ( ( Value & MI_INTR_MASK_SET_SP ) != 0 ) + { + ModValue |= MI_INTR_MASK_SP; + } + if ( ( Value & MI_INTR_MASK_SET_SI ) != 0 ) + { + ModValue |= MI_INTR_MASK_SI; + } + if ( ( Value & MI_INTR_MASK_SET_AI ) != 0 ) + { + ModValue |= MI_INTR_MASK_AI; + } + if ( ( Value & MI_INTR_MASK_SET_VI ) != 0 ) + { + ModValue |= MI_INTR_MASK_VI; + } + if ( ( Value & MI_INTR_MASK_SET_PI ) != 0 ) + { + ModValue |= MI_INTR_MASK_PI; + } + if ( ( Value & MI_INTR_MASK_SET_DP ) != 0 ) + { + ModValue |= MI_INTR_MASK_DP; + } + if (ModValue != 0) + { OrConstToVariable(ModValue,&g_Reg->MI_INTR_MASK_REG,"MI_INTR_MASK_REG"); } } break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04400000: - switch (PAddr) { + switch (PAddr) + { case 0x04400000: - if (g_Plugins->Gfx()->ViStatusChanged != NULL) { + if (g_Plugins->Gfx()->ViStatusChanged != NULL) + { CompConstToVariable(Value,&g_Reg->VI_STATUS_REG,"VI_STATUS_REG"); JeLabel8("Continue",0); Jump = m_RecompPos - 1; @@ -1108,7 +1343,8 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { break; case 0x04400004: MoveConstToVariable((Value & 0xFFFFFF),&g_Reg->VI_ORIGIN_REG,"VI_ORIGIN_REG"); break; case 0x04400008: - if (g_Plugins->Gfx()->ViWidthChanged != NULL) { + if (g_Plugins->Gfx()->ViWidthChanged != NULL) + { CompConstToVariable(Value,&g_Reg->VI_WIDTH_REG,"VI_WIDTH_REG"); JeLabel8("Continue",0); Jump = m_RecompPos - 1; @@ -1139,21 +1375,27 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { case 0x04400030: MoveConstToVariable(Value,&g_Reg->VI_X_SCALE_REG,"VI_X_SCALE_REG"); break; case 0x04400034: MoveConstToVariable(Value,&g_Reg->VI_Y_SCALE_REG,"VI_Y_SCALE_REG"); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04500000: /* AI registers */ - switch (PAddr) { + switch (PAddr) + { case 0x04500000: MoveConstToVariable(Value,&g_Reg->AI_DRAM_ADDR_REG,"AI_DRAM_ADDR_REG"); break; case 0x04500004: MoveConstToVariable(Value,&g_Reg->AI_LEN_REG,"AI_LEN_REG"); BeforeCallDirect(m_RegWorkingSet); if (g_System->bFixedAudio()) { - X86BreakPoint(__FILE__,__LINE__); + X86BreakPoint(__FILEW__,__LINE__); MoveConstToX86reg((DWORD)g_Audio,x86_ECX); Call_Direct(AddressOf(&CAudio::LenChanged),"LenChanged"); - } else { + } + else + { Call_Direct(g_Plugins->Audio()->AiLenChanged,"AiLenChanged"); } AfterCallDirect(m_RegWorkingSet); @@ -1176,11 +1418,15 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { default: sprintf(VarName,"m_RDRAM + %X",PAddr); MoveConstToVariable(Value,PAddr + m_RDRAM,VarName); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04600000: - switch (PAddr) { + switch (PAddr) + { case 0x04600000: MoveConstToVariable(Value,&g_Reg->PI_DRAM_ADDR_REG,"PI_DRAM_ADDR_REG"); break; case 0x04600004: MoveConstToVariable(Value,&g_Reg->PI_CART_ADDR_REG,"PI_CART_ADDR_REG"); break; case 0x04600008: @@ -1198,7 +1444,8 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { AfterCallDirect(m_RegWorkingSet); break; case 0x04600010: - if ((Value & PI_CLR_INTR) != 0 ) { + if ((Value & PI_CLR_INTR) != 0 ) + { AndConstToVariable((DWORD)~MI_INTR_PI,&g_Reg->MI_INTR_REG,"MI_INTR_REG"); BeforeCallDirect(m_RegWorkingSet); MoveConstToX86reg((DWORD)g_Reg,x86_ECX); @@ -1211,21 +1458,29 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { case 0x0460001C: MoveConstToVariable((Value & 0xFF),&g_Reg->PI_BSD_DOM1_PGS_REG,"PI_BSD_DOM1_PGS_REG"); break; case 0x04600020: MoveConstToVariable((Value & 0xFF),&g_Reg->PI_BSD_DOM1_RLS_REG,"PI_BSD_DOM1_RLS_REG"); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04700000: - switch (PAddr) { + switch (PAddr) + { case 0x04700000: MoveConstToVariable(Value,&g_Reg->RI_MODE_REG,"RI_MODE_REG"); break; case 0x04700004: MoveConstToVariable(Value,&g_Reg->RI_CONFIG_REG,"RI_CONFIG_REG"); break; case 0x04700008: MoveConstToVariable(Value,&g_Reg->RI_CURRENT_LOAD_REG,"RI_CURRENT_LOAD_REG"); break; case 0x0470000C: MoveConstToVariable(Value,&g_Reg->RI_SELECT_REG,"RI_SELECT_REG"); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; case 0x04800000: - switch (PAddr) { + switch (PAddr) + { case 0x04800000: MoveConstToVariable(Value,&g_Reg->SI_DRAM_ADDR_REG,"SI_DRAM_ADDR_REG"); break; case 0x04800004: m_RegWorkingSet.SetBlockCycleCount(m_RegWorkingSet.GetBlockCycleCount() - g_System->CountPerOp()); @@ -1256,11 +1511,17 @@ void CMipsMemoryVM::Compile_SW_Const ( DWORD Value, DWORD VAddr ) { AfterCallDirect(m_RegWorkingSet); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Const\ntrying to store %X in %X?",Value,VAddr); + } } } @@ -1285,13 +1546,18 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) BYTE * Jump; DWORD PAddr; - if (!TranslateVaddr(VAddr, PAddr)) { + if (!TranslateVaddr(VAddr, PAddr)) + { CPU_Message("Compile_SW_Register\nFailed to translate address %X",VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\nFailed to translate address %X",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Register\nFailed to translate address %X",VAddr); + } return; } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -1304,7 +1570,8 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) MoveX86regToVariable(Reg,PAddr + m_RDRAM,VarName); break; case 0x04000000: - switch (PAddr) { + switch (PAddr) + { case 0x04040000: MoveX86regToVariable(Reg,&g_Reg->SP_MEM_ADDR_REG,"SP_MEM_ADDR_REG"); break; case 0x04040004: MoveX86regToVariable(Reg,&g_Reg->SP_DRAM_ADDR_REG,"SP_DRAM_ADDR_REG"); break; case 0x04040008: @@ -1336,12 +1603,18 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) AndConstToVariable(0xFFC,&g_Reg->SP_PC_REG,"SP_PC_REG"); break; default: - if (PAddr < 0x04002000) { + if (PAddr < 0x04002000) + { sprintf(VarName,"m_RDRAM + %X",PAddr); MoveX86regToVariable(Reg,PAddr + m_RDRAM,VarName); - } else { + } + else + { CPU_Message(" Should be moving %s in to %X ?!?",x86_Name(Reg),VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); + } } } break; @@ -1360,7 +1633,8 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) AfterCallDirect(m_RegWorkingSet); break; case 0x04300000: - switch (PAddr) { + switch (PAddr) + { case 0x04300000: MoveX86regToVariable(Reg,&RegModValue,"RegModValue"); BeforeCallDirect(m_RegWorkingSet); @@ -1375,13 +1649,17 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) break; default: CPU_Message(" Should be moving %s in to %X ?!?",x86_Name(Reg),VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); + } } break; case 0x04400000: switch (PAddr) { case 0x04400000: - if (g_Plugins->Gfx()->ViStatusChanged != NULL) { + if (g_Plugins->Gfx()->ViStatusChanged != NULL) + { CompX86regToVariable(Reg,&g_Reg->VI_STATUS_REG,"VI_STATUS_REG"); JeLabel8("Continue",0); Jump = m_RecompPos - 1; @@ -1399,7 +1677,8 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) AndConstToVariable(0xFFFFFF,&g_Reg->VI_ORIGIN_REG,"VI_ORIGIN_REG"); break; case 0x04400008: - if (g_Plugins->Gfx()->ViWidthChanged != NULL) { + if (g_Plugins->Gfx()->ViWidthChanged != NULL) + { CompX86regToVariable(Reg,&g_Reg->VI_WIDTH_REG,"VI_WIDTH_REG"); JeLabel8("Continue",0); Jump = m_RecompPos - 1; @@ -1431,7 +1710,10 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) case 0x04400034: MoveX86regToVariable(Reg,&g_Reg->VI_Y_SCALE_REG,"VI_Y_SCALE_REG"); break; default: CPU_Message(" Should be moving %s in to %X ?!?",x86_Name(Reg),VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); + } } break; case 0x04500000: /* AI registers */ @@ -1447,7 +1729,9 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) { MoveConstToX86reg((DWORD)g_Audio,x86_ECX); Call_Direct(AddressOf(&CAudio::LenChanged),"LenChanged"); - } else { + } + else + { Call_Direct(g_Plugins->Audio()->AiLenChanged, "g_Plugins->Audio()->LenChanged"); } AfterCallDirect(m_RegWorkingSet); @@ -1475,7 +1759,8 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); } } break; case 0x04600000: - switch (PAddr) { + switch (PAddr) + { case 0x04600000: MoveX86regToVariable(Reg,&g_Reg->PI_DRAM_ADDR_REG,"PI_DRAM_ADDR_REG"); break; case 0x04600004: MoveX86regToVariable(Reg,&g_Reg->PI_CART_ADDR_REG,"PI_CART_ADDR_REG"); break; case 0x04600008: @@ -1518,18 +1803,26 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) break; default: CPU_Message(" Should be moving %s in to %X ?!?",x86_Name(Reg),VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); + } } break; case 0x04700000: - switch (PAddr) { + switch (PAddr) + { case 0x04700010: MoveX86regToVariable(Reg,&g_Reg->RI_REFRESH_REG,"RI_REFRESH_REG"); break; default: - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store at %X?",VAddr); + } } break; case 0x04800000: - switch (PAddr) { + switch (PAddr) + { case 0x04800000: MoveX86regToVariable(Reg,&g_Reg->SI_DRAM_ADDR_REG,"SI_DRAM_ADDR_REG"); break; case 0x04800004: MoveX86regToVariable(Reg,&g_Reg->SI_PIF_ADDR_RD64B_REG,"SI_PIF_ADDR_RD64B_REG"); @@ -1563,7 +1856,10 @@ void CMipsMemoryVM::Compile_SW_Register (x86Reg Reg, DWORD VAddr ) break; default: CPU_Message(" Should be moving %s in to %X ?!?",x86_Name(Reg),VAddr); - if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store in %X?",VAddr); } + if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) + { + g_Notify->DisplayError(L"Compile_SW_Register\ntrying to store in %X?",VAddr); + } } } @@ -1577,12 +1873,19 @@ void CMipsMemoryVM::ResetMemoryStack ( void) if (Reg == x86_Unknown) { Reg = Map_TempReg(x86_Any, MipsReg, FALSE); - } else { - if (IsUnknown(MipsReg)) { + } + else + { + if (IsUnknown(MipsReg)) + { MoveVariableToX86reg(&_GPR[MipsReg].UW[0],CRegName::GPR_Lo[MipsReg],Reg); - } else if (IsMapped(MipsReg)) { + } + else if (IsMapped(MipsReg)) + { MoveX86RegToX86Reg(GetMipsRegMapLo(MipsReg),Reg); - } else { + } + else + { MoveConstToX86reg(GetMipsRegLo(MipsReg),Reg); } } @@ -1594,7 +1897,9 @@ void CMipsMemoryVM::ResetMemoryStack ( void) ShiftRightUnsignImmed(TempReg,12); MoveVariableDispToX86Reg(m_TLB_ReadMap,"m_TLB_ReadMap",TempReg,TempReg,4); AddX86RegToX86Reg(Reg,TempReg); - } else { + } + else + { AndConstToX86Reg(Reg,0x1FFFFFFF); AddConstToX86Reg(Reg,(DWORD)m_RDRAM); } @@ -1605,17 +1910,23 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) { if (dwExptCode != EXCEPTION_ACCESS_VIOLATION) { - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } - //convert the pointer since we are not having win32 stuctures in headers + //convert the pointer since we are not having win32 structures in headers LPEXCEPTION_POINTERS lpEP = (LPEXCEPTION_POINTERS)lpExceptionPointer; DWORD MemAddress = (char *)lpEP->ExceptionRecord->ExceptionInformation[1] - (char *)g_MMU->Rdram(); if ((int)(MemAddress) < 0 || MemAddress > 0x1FFFFFFF) { -// if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } +// if (bHaveDebugger()) +// { +// g_Notify->BreakPoint(__FILEW__,__LINE__); +// } return EXCEPTION_EXECUTE_HANDLER; } @@ -1624,23 +1935,30 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) BYTE * TypePos = (unsigned char *)lpEP->ContextRecord->Eip; EXCEPTION_RECORD exRec = *lpEP->ExceptionRecord; - if (*TypePos == 0xF3 && *(TypePos + 1) == 0xA5) { + if (*TypePos == 0xF3 && *(TypePos + 1) == 0xA5) + { DWORD Start, End; Start = (lpEP->ContextRecord->Edi - (DWORD)m_RDRAM); End = (Start + (lpEP->ContextRecord->Ecx << 2) - 1); if ((int)Start < 0) { - if (bHaveDebugger()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); } return EXCEPTION_EXECUTE_HANDLER; } #ifdef CFB_READ DWORD count, OldProtect; - if (Start >= CFBStart && End < CFBEnd) { - for ( count = Start; count < End; count += 0x1000 ) { + if (Start >= CFBStart && End < CFBEnd) + { + for ( count = Start; count < End; count += 0x1000 ) + { VirtualProtect(m_RDRAM+count,4,PAGE_READONLY, &OldProtect); - if (FrameBufferRead) { FrameBufferRead(count & ~0xFFF); } + if (FrameBufferRead) + { + FrameBufferRead(count & ~0xFFF); + } } return EXCEPTION_CONTINUE_EXECUTION; } @@ -1653,30 +1971,46 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) } return EXCEPTION_CONTINUE_EXECUTION; } - if (Start >= 0x04000000 && End < 0x04002000) { + if (Start >= 0x04000000 && End < 0x04002000) + { g_Recompiler->ClearRecompCode_Phys(Start & ~0xFFF,0x1000,CRecompiler::Remove_ProtectedMem); return EXCEPTION_CONTINUE_EXECUTION; } - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } BYTE * ReadPos; - if (*TypePos == 0x0F && *(TypePos + 1) == 0xB6) { + if (*TypePos == 0x0F && *(TypePos + 1) == 0xB6) + { ReadPos = TypePos + 2; - } else if (*TypePos == 0x0F && *(TypePos + 1) == 0xB7) { + } + else if (*TypePos == 0x0F && *(TypePos + 1) == 0xB7) + { ReadPos = TypePos + 2; - } else if (*TypePos == 0x0F && *(TypePos + 1) == 0xBE) { + } + else if (*TypePos == 0x0F && *(TypePos + 1) == 0xBE) + { ReadPos = TypePos + 2; - } else if (*TypePos == 0x0F && *(TypePos + 1) == 0xBF) { + } + else if (*TypePos == 0x0F && *(TypePos + 1) == 0xBF) + { ReadPos = TypePos + 2; - } else if (*TypePos == 0x66) { + } + else if (*TypePos == 0x66) + { ReadPos = TypePos + 2; - } else { + } + else + { ReadPos = TypePos + 1; } - switch ((*ReadPos & 0x38)) { + switch ((*ReadPos & 0x38)) + { case 0x00: Reg = &lpEP->ContextRecord->Eax; break; case 0x08: Reg = &lpEP->ContextRecord->Ecx; break; case 0x10: Reg = &lpEP->ContextRecord->Edx; break; @@ -1687,14 +2021,16 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) case 0x38: Reg = &lpEP->ContextRecord->Edi; break; } - switch ((*ReadPos & 0xC7)) { + switch ((*ReadPos & 0xC7)) + { case 0: ReadPos += 1; break; case 1: ReadPos += 1; break; case 2: ReadPos += 1; break; case 3: ReadPos += 1; break; case 4: ReadPos += 1; - switch ((*ReadPos & 0xC7)) { + switch ((*ReadPos & 0xC7)) + { case 0: ReadPos += 1; break; case 1: ReadPos += 1; break; case 2: ReadPos += 1; break; @@ -1703,7 +2039,7 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) case 7: ReadPos += 1; break; case 0x80: ReadPos += 1; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case 5: ReadPos += 5; break; @@ -1723,22 +2059,32 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) case 0x86: ReadPos += 5; break; case 0x87: ReadPos += 5; break; default: - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } if (Reg == NULL) { - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } - switch(*TypePos) { + switch (*TypePos) + { case 0x0F: - switch(*(TypePos + 1)) { + switch (*(TypePos + 1)) + { case 0xB6: - if (!LB_NonMemory(MemAddress,(DWORD *)Reg,FALSE)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!LB_NonMemory(MemAddress,(DWORD *)Reg,FALSE)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to load byte\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1747,8 +2093,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; case 0xB7: - if (!LH_NonMemory(MemAddress,(DWORD *)Reg,FALSE)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!LH_NonMemory(MemAddress,(DWORD *)Reg,FALSE)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to load half word\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1757,8 +2105,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; case 0xBE: - if (!LB_NonMemory(MemAddress,Reg,TRUE)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!LB_NonMemory(MemAddress,Reg,TRUE)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to load byte\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1767,8 +2117,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; case 0xBF: - if (!LH_NonMemory(MemAddress,Reg,TRUE)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!LH_NonMemory(MemAddress,Reg,TRUE)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to load half word\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1777,15 +2129,21 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; default: - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } break; case 0x66: - switch(*(TypePos + 1)) { + switch (*(TypePos + 1)) + { case 0x8B: - if (!LH_NonMemory(MemAddress,Reg,FALSE)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!LH_NonMemory(MemAddress,Reg,FALSE)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to half word\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1794,8 +2152,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; case 0x89: - if (!SH_NonMemory(MemAddress,*(WORD *)Reg)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!SH_NonMemory(MemAddress,*(WORD *)Reg)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to store half word\n\nMIPS Address: %X\nX86 Address",MemAddress, *(unsigned char *)lpEP->ContextRecord->Eip); } @@ -1805,11 +2165,15 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) case 0xC7: if (Reg != &lpEP->ContextRecord->Eax) { - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } if (!SH_NonMemory(MemAddress,*(WORD *)ReadPos)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to store half word\n\nMIPS Address: %X\nX86 Address",MemAddress, *(unsigned char *)lpEP->ContextRecord->Eip); } @@ -1817,13 +2181,18 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)(ReadPos + 2); return EXCEPTION_CONTINUE_EXECUTION; default: - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } break; case 0x88: - if (!SB_NonMemory(MemAddress,*(BYTE *)Reg)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!SB_NonMemory(MemAddress,*(BYTE *)Reg)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to store byte\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1832,8 +2201,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; case 0x8A: - if (!LB_NonMemory(MemAddress,Reg,FALSE)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!LB_NonMemory(MemAddress,Reg,FALSE)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to load byte\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1842,8 +2213,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; case 0x8B: - if (!LW_NonMemory(MemAddress,Reg)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!LW_NonMemory(MemAddress,Reg)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to load word\n\nMIPS Address: %X\nX86 Address", (char *)exRec.ExceptionInformation[1] - (char *)m_RDRAM, *(unsigned char *)lpEP->ContextRecord->Eip); @@ -1852,8 +2225,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)ReadPos; return EXCEPTION_CONTINUE_EXECUTION; case 0x89: - if (!SW_NonMemory(MemAddress,*(DWORD *)Reg)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!SW_NonMemory(MemAddress,*(DWORD *)Reg)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to store word\n\nMIPS Address: %X\nX86 Address",MemAddress, *(unsigned char *)lpEP->ContextRecord->Eip); } @@ -1863,11 +2238,16 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) case 0xC6: if (Reg != &lpEP->ContextRecord->Eax) { - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } - if (!SB_NonMemory(MemAddress,*(BYTE *)ReadPos)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!SB_NonMemory(MemAddress,*(BYTE *)ReadPos)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to store byte\n\nMIPS Address: %X\nX86 Address",MemAddress, *(unsigned char *)lpEP->ContextRecord->Eip); } @@ -1877,11 +2257,16 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) case 0xC7: if (Reg != &lpEP->ContextRecord->Eax) { - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } - if (!SW_NonMemory(MemAddress,*(DWORD *)ReadPos)) { - if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) { + if (!SW_NonMemory(MemAddress,*(DWORD *)ReadPos)) + { + if (g_Settings->LoadDword(Debugger_ShowUnhandledMemory)) + { g_Notify->DisplayError(L"Failed to store word\n\nMIPS Address: %X\nX86 Address",MemAddress, *(unsigned char *)lpEP->ContextRecord->Eip); } @@ -1889,7 +2274,10 @@ int CMipsMemoryVM::MemoryFilter( DWORD dwExptCode, void * lpExceptionPointer ) lpEP->ContextRecord->Eip = (DWORD)(ReadPos + 4); return EXCEPTION_CONTINUE_EXECUTION; } - if (bHaveDebugger()) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (bHaveDebugger()) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } return EXCEPTION_EXECUTE_HANDLER; } @@ -1902,24 +2290,37 @@ int CMipsMemoryVM::LB_NonMemory ( DWORD PAddr, DWORD * Value, BOOL /*SignExtend* } if (PAddr >= 0x10000000 && PAddr < 0x16000000) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix - if (WrittenToRom) { return FALSE; } - if ((PAddr & 2) == 0) { PAddr = (PAddr + 4) ^ 2; } - if ((PAddr - 0x10000000) < RomFileSize) { - if (SignExtend) { + if (WrittenToRom) + { + return FALSE; + } + if ((PAddr & 2) == 0) + { + PAddr = (PAddr + 4) ^ 2; + } + if ((PAddr - 0x10000000) < RomFileSize) + { + if (SignExtend) + { *Value = (int)((char)ROM[PAddr - 0x10000000]); - } else { + } + else + { *Value = ROM[PAddr - 0x10000000]; } return TRUE; - } else { + } + else + { *Value = 0; return FALSE; } #endif } -// switch (PAddr & 0xFFF00000) { +// switch (PAddr & 0xFFF00000) +//{ // default: * Value = 0; // return FALSE; @@ -1938,9 +2339,10 @@ int CMipsMemoryVM::LH_NonMemory ( DWORD PAddr, DWORD * Value, int/* SignExtend*/ if (PAddr >= 0x10000000 && PAddr < 0x16000000) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } -// switch (PAddr & 0xFFF00000) { +// switch (PAddr & 0xFFF00000) +// { // default: * Value = 0; return FALSE; @@ -1949,12 +2351,17 @@ int CMipsMemoryVM::LH_NonMemory ( DWORD PAddr, DWORD * Value, int/* SignExtend*/ // return TRUE; } -int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { +int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) +{ #ifdef CFB_READ - if (PAddr >= CFBStart && PAddr < CFBEnd) { + if (PAddr >= CFBStart && PAddr < CFBEnd) + { DWORD OldProtect; VirtualProtect(m_RDRAM+(PAddr & ~0xFFF),0xFFC,PAGE_READONLY, &OldProtect); - if (FrameBufferRead) { FrameBufferRead(PAddr & ~0xFFF); } + if (FrameBufferRead) + { + FrameBufferRead(PAddr & ~0xFFF); + } *Value = *(DWORD *)(m_RDRAM+PAddr); return TRUE; } @@ -1974,19 +2381,24 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { #endif return TRUE; } - if ((PAddr - 0x10000000) < m_RomSize) { + if ((PAddr - 0x10000000) < m_RomSize) + { *Value = *(DWORD *)&m_Rom[PAddr - 0x10000000]; return TRUE; - } else { + } + else + { *Value = PAddr & 0xFFFF; *Value = (*Value << 16) | *Value; return FALSE; } } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x03F00000: - switch (PAddr) { + switch (PAddr) + { case 0x03F00000: * Value = g_Reg->RDRAM_CONFIG_REG; break; case 0x03F00004: * Value = g_Reg->RDRAM_DEVICE_ID_REG; break; case 0x03F00008: * Value = g_Reg->RDRAM_DELAY_REG; break; @@ -2003,7 +2415,8 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04000000: - switch (PAddr) { + switch (PAddr) + { case 0x04040010: *Value = g_Reg->SP_STATUS_REG; break; case 0x04040014: *Value = g_Reg->SP_DMA_FULL_REG; break; case 0x04040018: *Value = g_Reg->SP_DMA_BUSY_REG; break; @@ -2018,7 +2431,8 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04100000: - switch (PAddr) { + switch (PAddr) + { case 0x0410000C: *Value = g_Reg->DPC_STATUS_REG; break; case 0x04100010: *Value = g_Reg->DPC_CLOCK_REG; break; case 0x04100014: *Value = g_Reg->DPC_BUFBUSY_REG; break; @@ -2030,7 +2444,8 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04300000: - switch (PAddr) { + switch (PAddr) + { case 0x04300000: * Value = g_Reg->MI_MODE_REG; break; case 0x04300004: * Value = g_Reg->MI_VERSION_REG; break; case 0x04300008: * Value = g_Reg->MI_INTR_REG; break; @@ -2041,7 +2456,8 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04400000: - switch (PAddr) { + switch (PAddr) + { case 0x04400000: *Value = g_Reg->VI_STATUS_REG; break; case 0x04400004: *Value = g_Reg->VI_ORIGIN_REG; break; case 0x04400008: *Value = g_Reg->VI_WIDTH_REG; break; @@ -2065,15 +2481,21 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04500000: - switch (PAddr) { + switch (PAddr) + { case 0x04500004: if (g_System->bFixedAudio()) { *Value = g_Audio->GetLength(); - } else { - if (g_Plugins->Audio()->AiReadLength != NULL) { + } + else + { + if (g_Plugins->Audio()->AiReadLength != NULL) + { *Value = g_Plugins->Audio()->AiReadLength(); - } else { + } + else + { *Value = 0; } } @@ -2082,7 +2504,9 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { if (g_System->bFixedAudio()) { *Value = g_Audio->GetStatus(); - } else { + } + else + { *Value = g_Reg->AI_STATUS_REG; } break; @@ -2092,7 +2516,8 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04600000: - switch (PAddr) { + switch (PAddr) + { case 0x04600010: *Value = g_Reg->PI_STATUS_REG; break; case 0x04600014: *Value = g_Reg->PI_DOMAIN1_REG; break; case 0x04600018: *Value = g_Reg->PI_BSD_DOM1_PWD_REG; break; @@ -2108,7 +2533,8 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04700000: - switch (PAddr) { + switch (PAddr) + { case 0x04700000: * Value = g_Reg->RI_MODE_REG; break; case 0x04700004: * Value = g_Reg->RI_CONFIG_REG; break; case 0x04700008: * Value = g_Reg->RI_CURRENT_LOAD_REG; break; @@ -2123,7 +2549,8 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { } break; case 0x04800000: - switch (PAddr) { + switch (PAddr) + { case 0x04800018: *Value = g_Reg->SI_STATUS_REG; break; default: *Value = 0; @@ -2135,8 +2562,12 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { *Value = (*Value << 16) | *Value; return FALSE; case 0x08000000: - if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_FlashRam; } - if (g_System->m_SaveUsing != SaveChip_FlashRam) { + if (g_System->m_SaveUsing == SaveChip_Auto) + { + g_System->m_SaveUsing = SaveChip_FlashRam; + } + if (g_System->m_SaveUsing != SaveChip_FlashRam) + { *Value = PAddr & 0xFFFF; *Value = (*Value << 16) | *Value; return FALSE; @@ -2144,29 +2575,34 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { *Value = ReadFromFlashStatus(PAddr); break; case 0x1FC00000: - if (PAddr < 0x1FC007C0) { + if (PAddr < 0x1FC007C0) + { /* DWORD ToSwap = *(DWORD *)(&PifRom[PAddr - 0x1FC00000]); - _asm { + _asm + { mov eax,ToSwap bswap eax mov ToSwap,eax } * Value = ToSwap;*/ - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return TRUE; } else if (PAddr < 0x1FC00800) { BYTE * PIF_Ram = g_MMU->PifRam(); DWORD ToSwap = *(DWORD *)(&PIF_Ram[PAddr - 0x1FC007C0]); - _asm { + _asm + { mov eax,ToSwap bswap eax mov ToSwap,eax } * Value = ToSwap; return TRUE; - } else { + } + else + { * Value = 0; return FALSE; } @@ -2180,8 +2616,10 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) { return TRUE; } -int CMipsMemoryVM::SB_NonMemory ( DWORD PAddr, BYTE Value ) { - switch (PAddr & 0xFFF00000) { +int CMipsMemoryVM::SB_NonMemory ( DWORD PAddr, BYTE Value ) +{ + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -2191,7 +2629,8 @@ int CMipsMemoryVM::SB_NonMemory ( DWORD PAddr, BYTE Value ) { case 0x00600000: case 0x00700000: #ifdef CFB_READ - if (PAddr >= CFBStart && PAddr < CFBEnd) { + if (PAddr >= CFBStart && PAddr < CFBEnd) + { DWORD OldProtect; VirtualProtect(m_RDRAM+(PAddr & ~0xFFF),0xFFC,PAGE_READWRITE, &OldProtect); *(BYTE *)(m_RDRAM+PAddr) = Value; @@ -2216,8 +2655,10 @@ int CMipsMemoryVM::SB_NonMemory ( DWORD PAddr, BYTE Value ) { return TRUE; } -int CMipsMemoryVM::SH_NonMemory ( DWORD PAddr, WORD Value ) { - switch (PAddr & 0xFFF00000) { +int CMipsMemoryVM::SH_NonMemory ( DWORD PAddr, WORD Value ) +{ + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -2227,7 +2668,8 @@ int CMipsMemoryVM::SH_NonMemory ( DWORD PAddr, WORD Value ) { case 0x00600000: case 0x00700000: #ifdef CFB_READ - if (PAddr >= CFBStart && PAddr < CFBEnd) { + if (PAddr >= CFBStart && PAddr < CFBEnd) + { DWORD OldProtect; VirtualProtect(m_RDRAM+(PAddr & ~0xFFF),0xFFC,PAGE_READWRITE, &OldProtect); *(WORD *)(m_RDRAM+PAddr) = Value; @@ -2238,7 +2680,8 @@ int CMipsMemoryVM::SH_NonMemory ( DWORD PAddr, WORD Value ) { break; } #endif - if (PAddr < RdramSize()) { + if (PAddr < RdramSize()) + { DWORD OldProtect; g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF,0x1000,CRecompiler::Remove_ProtectedMem); VirtualProtect(m_RDRAM+(PAddr & ~0xFFF),0xFFC,PAGE_READWRITE, &OldProtect); @@ -2252,10 +2695,12 @@ int CMipsMemoryVM::SH_NonMemory ( DWORD PAddr, WORD Value ) { return TRUE; } -int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { +int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) +{ if (PAddr >= 0x10000000 && PAddr < 0x16000000) { - if ((PAddr - 0x10000000) < g_Rom->GetRomSize()) { + if ((PAddr - 0x10000000) < g_Rom->GetRomSize()) + { m_RomWrittenTo = TRUE; m_RomWroteValue = Value; #ifdef ROM_IN_MAPSPACE @@ -2265,12 +2710,15 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } #endif //LogMessage("%X: Wrote To Rom %X from %X",PROGRAM_COUNTER,Value,PAddr); - } else { + } + else + { return FALSE; } } - switch (PAddr & 0xFFF00000) { + switch (PAddr & 0xFFF00000) + { case 0x00000000: case 0x00100000: case 0x00200000: @@ -2280,7 +2728,8 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { case 0x00600000: case 0x00700000: #ifdef CFB_READ - if (PAddr >= CFBStart && PAddr < CFBEnd) { + if (PAddr >= CFBStart && PAddr < CFBEnd) + { DWORD OldProtect; VirtualProtect(m_RDRAM+(PAddr & ~0xFFF),0xFFC,PAGE_READWRITE, &OldProtect); *(DWORD *)(m_RDRAM+PAddr) = Value; @@ -2290,7 +2739,8 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { break; } #endif - if (PAddr < RdramSize()) { + if (PAddr < RdramSize()) + { DWORD OldProtect; g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF,0x1000,CRecompiler::Remove_ProtectedMem); VirtualProtect(m_RDRAM+(PAddr & ~0xFFF),0xFFC,PAGE_READWRITE, &OldProtect); @@ -2298,7 +2748,8 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x03F00000: - switch (PAddr) { + switch (PAddr) + { case 0x03F00000: g_Reg->RDRAM_CONFIG_REG = Value; break; case 0x03F00004: g_Reg->RDRAM_DEVICE_ID_REG = Value; break; case 0x03F00008: g_Reg->RDRAM_DELAY_REG = Value; break; @@ -2320,11 +2771,15 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x04000000: - if (PAddr < 0x04002000) { + if (PAddr < 0x04002000) + { g_Recompiler->ClearRecompCode_Phys(PAddr & ~0xFFF,0xFFF,CRecompiler::Remove_ProtectedMem); *(DWORD *)(m_RDRAM+PAddr) = Value; - } else { - switch (PAddr) { + } + else + { + switch (PAddr) + { case 0x04040000: g_Reg->SP_MEM_ADDR_REG = Value; break; case 0x04040004: g_Reg->SP_DRAM_ADDR_REG = Value; break; case 0x04040008: @@ -2336,51 +2791,126 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { SP_DMA_WRITE(); break; case 0x04040010: - if ( ( Value & SP_CLR_HALT ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_HALT; } - if ( ( Value & SP_SET_HALT ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_HALT; } - if ( ( Value & SP_CLR_BROKE ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_BROKE; } - if ( ( Value & SP_CLR_INTR ) != 0) { + if ( ( Value & SP_CLR_HALT ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_HALT; + } + if ( ( Value & SP_SET_HALT ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_HALT; + } + if ( ( Value & SP_CLR_BROKE ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_BROKE; + } + if ( ( Value & SP_CLR_INTR ) != 0) + { g_Reg->MI_INTR_REG &= ~MI_INTR_SP; g_Reg->m_RspIntrReg &= ~MI_INTR_SP; g_Reg->CheckInterrupts(); } - if ( ( Value & SP_SET_INTR ) != 0) { g_Notify->DisplayError(L"SP_SET_INTR"); } - if ( ( Value & SP_CLR_SSTEP ) != 0) { + if ( ( Value & SP_SET_INTR ) != 0) + { + g_Notify->DisplayError(L"SP_SET_INTR"); + } + if ( ( Value & SP_CLR_SSTEP ) != 0) + { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SSTEP; } - if ( ( Value & SP_SET_SSTEP ) != 0) { + if ( ( Value & SP_SET_SSTEP ) != 0) + { g_Reg->SP_STATUS_REG |= SP_STATUS_SSTEP; } - if ( ( Value & SP_CLR_INTR_BREAK ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_INTR_BREAK; } - if ( ( Value & SP_SET_INTR_BREAK ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_INTR_BREAK; } - if ( ( Value & SP_CLR_SIG0 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG0; } - if ( ( Value & SP_SET_SIG0 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG0; } - if ( ( Value & SP_CLR_SIG1 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG1; } - if ( ( Value & SP_SET_SIG1 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG1; } - if ( ( Value & SP_CLR_SIG2 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG2; } - if ( ( Value & SP_SET_SIG2 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG2; } - if ( ( Value & SP_CLR_SIG3 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG3; } - if ( ( Value & SP_SET_SIG3 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG3; } - if ( ( Value & SP_CLR_SIG4 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG4; } - if ( ( Value & SP_SET_SIG4 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG4; } - if ( ( Value & SP_CLR_SIG5 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG5; } - if ( ( Value & SP_SET_SIG5 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG5; } - if ( ( Value & SP_CLR_SIG6 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG6; } - if ( ( Value & SP_SET_SIG6 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG6; } - if ( ( Value & SP_CLR_SIG7 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG7; } - if ( ( Value & SP_SET_SIG7 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG7; } + if ( ( Value & SP_CLR_INTR_BREAK ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_INTR_BREAK; + } + if ( ( Value & SP_SET_INTR_BREAK ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_INTR_BREAK; + } + if ( ( Value & SP_CLR_SIG0 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG0; + } + if ( ( Value & SP_SET_SIG0 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG0; + } + if ( ( Value & SP_CLR_SIG1 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG1; + } + if ( ( Value & SP_SET_SIG1 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG1; + } + if ( ( Value & SP_CLR_SIG2 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG2; + } + if ( ( Value & SP_SET_SIG2 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG2; + } + if ( ( Value & SP_CLR_SIG3 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG3; + } + if ( ( Value & SP_SET_SIG3 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG3; + } + if ( ( Value & SP_CLR_SIG4 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG4; + } + if ( ( Value & SP_SET_SIG4 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG4; + } + if ( ( Value & SP_CLR_SIG5 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG5; + } + if ( ( Value & SP_SET_SIG5 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG5; + } + if ( ( Value & SP_CLR_SIG6 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG6; + } + if ( ( Value & SP_SET_SIG6 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG6; + } + if ( ( Value & SP_CLR_SIG7 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG7; + } + if ( ( Value & SP_SET_SIG7 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG7; + } if ( ( Value & SP_SET_SIG0 ) != 0 && g_System->RspAudioSignal()) { g_Reg->MI_INTR_REG |= MI_INTR_SP; g_Reg->CheckInterrupts(); } - //if (*( DWORD *)(DMEM + 0xFC0) == 1) { + //if (*( DWORD *)(DMEM + 0xFC0) == 1) + //{ // ChangeTimer(RspTimer,0x30000); - //} else { - try { + //} + //else + //{ + try + { g_System->RunRSP(); - } catch (...) { - g_Notify->BreakPoint(__FILE__,__LINE__); + } + catch (...) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); } //} break; @@ -2392,43 +2922,81 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x04100000: - switch (PAddr) { + switch (PAddr) + { case 0x04100000: g_Reg->DPC_START_REG = Value; g_Reg->DPC_CURRENT_REG = Value; break; case 0x04100004: g_Reg->DPC_END_REG = Value; - if (g_Plugins->Gfx()->ProcessRDPList) { g_Plugins->Gfx()->ProcessRDPList(); } + if (g_Plugins->Gfx()->ProcessRDPList) + { + g_Plugins->Gfx()->ProcessRDPList(); + } break; //case 0x04100008: g_Reg->DPC_CURRENT_REG = Value; break; case 0x0410000C: - if ( ( Value & DPC_CLR_XBUS_DMEM_DMA ) != 0) { g_Reg->DPC_STATUS_REG &= ~DPC_STATUS_XBUS_DMEM_DMA; } - if ( ( Value & DPC_SET_XBUS_DMEM_DMA ) != 0) { g_Reg->DPC_STATUS_REG |= DPC_STATUS_XBUS_DMEM_DMA; } - if ( ( Value & DPC_CLR_FREEZE ) != 0) { g_Reg->DPC_STATUS_REG &= ~DPC_STATUS_FREEZE; } - if ( ( Value & DPC_SET_FREEZE ) != 0) { g_Reg->DPC_STATUS_REG |= DPC_STATUS_FREEZE; } - if ( ( Value & DPC_CLR_FLUSH ) != 0) { g_Reg->DPC_STATUS_REG &= ~DPC_STATUS_FLUSH; } - if ( ( Value & DPC_SET_FLUSH ) != 0) { g_Reg->DPC_STATUS_REG |= DPC_STATUS_FLUSH; } + if ( ( Value & DPC_CLR_XBUS_DMEM_DMA ) != 0) + { + g_Reg->DPC_STATUS_REG &= ~DPC_STATUS_XBUS_DMEM_DMA; + } + if ( ( Value & DPC_SET_XBUS_DMEM_DMA ) != 0) + { + g_Reg->DPC_STATUS_REG |= DPC_STATUS_XBUS_DMEM_DMA; + } + if ( ( Value & DPC_CLR_FREEZE ) != 0) + { + g_Reg->DPC_STATUS_REG &= ~DPC_STATUS_FREEZE; + } + if ( ( Value & DPC_SET_FREEZE ) != 0) + { + g_Reg->DPC_STATUS_REG |= DPC_STATUS_FREEZE; + } + if ( ( Value & DPC_CLR_FLUSH ) != 0) + { + g_Reg->DPC_STATUS_REG &= ~DPC_STATUS_FLUSH; + } + if ( ( Value & DPC_SET_FLUSH ) != 0) + { + g_Reg->DPC_STATUS_REG |= DPC_STATUS_FLUSH; + } if ( ( Value & DPC_CLR_FREEZE ) != 0) { if ( ( g_Reg->SP_STATUS_REG & SP_STATUS_HALT ) == 0) { if ( ( g_Reg->SP_STATUS_REG & SP_STATUS_BROKE ) == 0 ) { - try { + try + { g_System->RunRSP(); - } catch (...) { - g_Notify->BreakPoint(__FILE__,__LINE__); + } + catch (...) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); } } } } #ifdef tofix - if (ShowUnhandledMemory) { - //if ( ( Value & DPC_CLR_TMEM_CTR ) != 0) { g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_TMEM_CTR"); } - //if ( ( Value & DPC_CLR_PIPE_CTR ) != 0) { g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_PIPE_CTR"); } - //if ( ( Value & DPC_CLR_CMD_CTR ) != 0) { g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_CMD_CTR"); } - //if ( ( Value & DPC_CLR_CLOCK_CTR ) != 0) { g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_CLOCK_CTR"); } + if (ShowUnhandledMemory) + { + //if ( ( Value & DPC_CLR_TMEM_CTR ) != 0) + //{ + // g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_TMEM_CTR"); + //} + //if ( ( Value & DPC_CLR_PIPE_CTR ) != 0) + //{ + // g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_PIPE_CTR"); + //} + //if ( ( Value & DPC_CLR_CMD_CTR ) != 0) + //{ + // g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_CMD_CTR"); + //} + //if ( ( Value & DPC_CLR_CLOCK_CTR ) != 0) + //{ + // g_Notify->DisplayError(L"RSP: DPC_STATUS_REG: DPC_CLR_CLOCK_CTR"); + //} } #endif break; @@ -2437,61 +3005,130 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x04300000: - switch (PAddr) { + switch (PAddr) + { case 0x04300000: g_Reg->MI_MODE_REG &= ~0x7F; g_Reg->MI_MODE_REG |= (Value & 0x7F); - if ( ( Value & MI_CLR_INIT ) != 0 ) { g_Reg->MI_MODE_REG &= ~MI_MODE_INIT; } - if ( ( Value & MI_SET_INIT ) != 0 ) { g_Reg->MI_MODE_REG |= MI_MODE_INIT; } - if ( ( Value & MI_CLR_EBUS ) != 0 ) { g_Reg->MI_MODE_REG &= ~MI_MODE_EBUS; } - if ( ( Value & MI_SET_EBUS ) != 0 ) { g_Reg->MI_MODE_REG |= MI_MODE_EBUS; } - if ( ( Value & MI_CLR_DP_INTR ) != 0 ) { + if ( ( Value & MI_CLR_INIT ) != 0 ) + { + g_Reg->MI_MODE_REG &= ~MI_MODE_INIT; + } + if ( ( Value & MI_SET_INIT ) != 0 ) + { + g_Reg->MI_MODE_REG |= MI_MODE_INIT; + } + if ( ( Value & MI_CLR_EBUS ) != 0 ) + { + g_Reg->MI_MODE_REG &= ~MI_MODE_EBUS; + } + if ( ( Value & MI_SET_EBUS ) != 0 ) + { + g_Reg->MI_MODE_REG |= MI_MODE_EBUS; + } + if ( ( Value & MI_CLR_DP_INTR ) != 0 ) + { g_Reg->MI_INTR_REG &= ~MI_INTR_DP; g_Reg->m_GfxIntrReg &= ~MI_INTR_DP; g_Reg->CheckInterrupts(); } - if ( ( Value & MI_CLR_RDRAM ) != 0 ) { g_Reg->MI_MODE_REG &= ~MI_MODE_RDRAM; } - if ( ( Value & MI_SET_RDRAM ) != 0 ) { g_Reg->MI_MODE_REG |= MI_MODE_RDRAM; } + if ( ( Value & MI_CLR_RDRAM ) != 0 ) + { + g_Reg->MI_MODE_REG &= ~MI_MODE_RDRAM; + } + if ( ( Value & MI_SET_RDRAM ) != 0 ) + { + g_Reg->MI_MODE_REG |= MI_MODE_RDRAM; + } break; case 0x0430000C: - if ( ( Value & MI_INTR_MASK_CLR_SP ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SP; } - if ( ( Value & MI_INTR_MASK_SET_SP ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SP; } - if ( ( Value & MI_INTR_MASK_CLR_SI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SI; } - if ( ( Value & MI_INTR_MASK_SET_SI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SI; } - if ( ( Value & MI_INTR_MASK_CLR_AI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_AI; } - if ( ( Value & MI_INTR_MASK_SET_AI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_AI; } - if ( ( Value & MI_INTR_MASK_CLR_VI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_VI; } - if ( ( Value & MI_INTR_MASK_SET_VI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_VI; } - if ( ( Value & MI_INTR_MASK_CLR_PI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_PI; } - if ( ( Value & MI_INTR_MASK_SET_PI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_PI; } - if ( ( Value & MI_INTR_MASK_CLR_DP ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_DP; } - if ( ( Value & MI_INTR_MASK_SET_DP ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_DP; } + if ( ( Value & MI_INTR_MASK_CLR_SP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SP; + } + if ( ( Value & MI_INTR_MASK_SET_SP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SP; + } + if ( ( Value & MI_INTR_MASK_CLR_SI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SI; + } + if ( ( Value & MI_INTR_MASK_SET_SI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SI; + } + if ( ( Value & MI_INTR_MASK_CLR_AI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_AI; + } + if ( ( Value & MI_INTR_MASK_SET_AI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_AI; + } + if ( ( Value & MI_INTR_MASK_CLR_VI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_VI; + } + if ( ( Value & MI_INTR_MASK_SET_VI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_VI; + } + if ( ( Value & MI_INTR_MASK_CLR_PI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_PI; + } + if ( ( Value & MI_INTR_MASK_SET_PI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_PI; + } + if ( ( Value & MI_INTR_MASK_CLR_DP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_DP; + } + if ( ( Value & MI_INTR_MASK_SET_DP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_DP; + } break; default: return FALSE; } break; case 0x04400000: - switch (PAddr) { + switch (PAddr) + { case 0x04400000: - if (g_Reg->VI_STATUS_REG != Value) { + if (g_Reg->VI_STATUS_REG != Value) + { g_Reg->VI_STATUS_REG = Value; - if (g_Plugins->Gfx()->ViStatusChanged != NULL ) { g_Plugins->Gfx()->ViStatusChanged(); } + if (g_Plugins->Gfx()->ViStatusChanged != NULL ) + { + g_Plugins->Gfx()->ViStatusChanged(); + } } break; case 0x04400004: #ifdef CFB_READ - if (g_Reg->VI_ORIGIN_REG > 0x280) { + if (g_Reg->VI_ORIGIN_REG > 0x280) + { SetFrameBuffer(g_Reg->VI_ORIGIN_REG, (DWORD)(VI_WIDTH_REG * (VI_WIDTH_REG *.75))); } #endif g_Reg->VI_ORIGIN_REG = (Value & 0xFFFFFF); - //if (UpdateScreen != NULL ) { UpdateScreen(); } + //if (UpdateScreen != NULL ) + //{ + // UpdateScreen(); + //} break; case 0x04400008: - if (g_Reg->VI_WIDTH_REG != Value) { + if (g_Reg->VI_WIDTH_REG != Value) + { g_Reg->VI_WIDTH_REG = Value; - if (g_Plugins->Gfx()->ViWidthChanged != NULL ) { g_Plugins->Gfx()->ViWidthChanged(); } + if (g_Plugins->Gfx()->ViWidthChanged != NULL ) + { + g_Plugins->Gfx()->ViWidthChanged(); + } } break; case 0x0440000C: g_Reg->VI_INTR_REG = Value; break; @@ -2513,15 +3150,21 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x04500000: - switch (PAddr) { + switch (PAddr) + { case 0x04500000: g_Reg->AI_DRAM_ADDR_REG = Value; break; case 0x04500004: g_Reg->AI_LEN_REG = Value; if (g_System->bFixedAudio()) { g_Audio->LenChanged(); - } else { - if (g_Plugins->Audio()->AiLenChanged != NULL) { g_Plugins->Audio()->AiLenChanged(); } + } + else + { + if (g_Plugins->Audio()->AiLenChanged != NULL) + { + g_Plugins->Audio()->AiLenChanged(); + } } break; case 0x04500008: g_Reg->AI_CONTROL_REG = (Value & 1); break; @@ -2545,7 +3188,8 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x04600000: - switch (PAddr) { + switch (PAddr) + { case 0x04600000: g_Reg->PI_DRAM_ADDR_REG = Value; break; case 0x04600004: g_Reg->PI_CART_ADDR_REG = Value; break; case 0x04600008: @@ -2557,8 +3201,12 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { PI_DMA_WRITE(); break; case 0x04600010: - //if ((Value & PI_SET_RESET) != 0 ) { g_Notify->DisplayError(L"reset Controller"); } - if ((Value & PI_CLR_INTR) != 0 ) { + //if ((Value & PI_SET_RESET) != 0 ) + //{ + // g_Notify->DisplayError(L"reset Controller"); + //} + if ((Value & PI_CLR_INTR) != 0 ) + { g_Reg->MI_INTR_REG &= ~MI_INTR_PI; g_Reg->CheckInterrupts(); } @@ -2576,7 +3224,8 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x04700000: - switch (PAddr) { + switch (PAddr) + { case 0x04700000: g_Reg->RI_MODE_REG = Value; break; case 0x04700004: g_Reg->RI_CONFIG_REG = Value; break; case 0x04700008: g_Reg->RI_CURRENT_LOAD_REG = Value; break; @@ -2590,7 +3239,8 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x04800000: - switch (PAddr) { + switch (PAddr) + { case 0x04800000: g_Reg->SI_DRAM_ADDR_REG = Value; break; case 0x04800004: g_Reg->SI_PIF_ADDR_RD64B_REG = Value; @@ -2610,24 +3260,38 @@ int CMipsMemoryVM::SW_NonMemory ( DWORD PAddr, DWORD Value ) { } break; case 0x08000000: - if (PAddr != 0x08010000) { return FALSE; } - if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_FlashRam; } - if (g_System->m_SaveUsing != SaveChip_FlashRam) { return TRUE; } + if (PAddr != 0x08010000) + { + return FALSE; + } + if (g_System->m_SaveUsing == SaveChip_Auto) + { + g_System->m_SaveUsing = SaveChip_FlashRam; + } + if (g_System->m_SaveUsing != SaveChip_FlashRam) + { + return TRUE; + } WriteToFlashCommand(Value); return TRUE; break; case 0x1FC00000: - if (PAddr < 0x1FC007C0) { + if (PAddr < 0x1FC007C0) + { return FALSE; - } else if (PAddr < 0x1FC00800) { - _asm { + } + else if (PAddr < 0x1FC00800) + { + _asm + { mov eax,Value bswap eax mov Value,eax } *(DWORD *)(&m_PifRam[PAddr - 0x1FC007C0]) = Value; - if (PAddr == 0x1FC007FC) { + if (PAddr == 0x1FC007FC) + { PifRamWrite(); } return TRUE; @@ -2645,7 +3309,8 @@ void CMipsMemoryVM::UpdateHalfLine (void) { DWORD NextViTimer = g_SystemTimer->GetTimer(CSystemTimer::ViTimer); - if (*g_NextTimer < 0) { + if (*g_NextTimer < 0) + { m_HalfLine = 0; return; } @@ -2676,18 +3341,30 @@ void CMipsMemoryVM::UpdateFieldSerration (unsigned int interlaced) void CMipsMemoryVM::ProtectMemory( DWORD StartVaddr, DWORD EndVaddr ) { WriteTraceF(TraceProtectedMem,__FUNCTION__ ": StartVaddr: %X EndVaddr: %X",StartVaddr,EndVaddr); - if (!ValidVaddr(StartVaddr) || !ValidVaddr(EndVaddr)) { return; } + if (!ValidVaddr(StartVaddr) || !ValidVaddr(EndVaddr)) + { + return; + } //Get Physical Addresses passed DWORD StartPAddr, EndPAddr; - if (!TranslateVaddr(StartVaddr,StartPAddr)) { g_Notify->BreakPoint(__FILE__,__LINE__); } - if (!TranslateVaddr(EndVaddr,EndPAddr)) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (!TranslateVaddr(StartVaddr,StartPAddr)) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } + if (!TranslateVaddr(EndVaddr,EndPAddr)) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } //Get Length of memory being protected int Length = ((EndPAddr + 3) - StartPAddr) & ~3; - if (Length < 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (Length < 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } - //Proect that memory address space + //Protect that memory address space DWORD OldProtect; BYTE * MemLoc = Rdram() + StartPAddr; WriteTraceF(TraceProtectedMem, __FUNCTION__ ": Paddr: %X Length: %X",StartPAddr,Length); @@ -2702,14 +3379,23 @@ void CMipsMemoryVM::UnProtectMemory( DWORD StartVaddr, DWORD EndVaddr ) //Get Physical Addresses passed DWORD StartPAddr, EndPAddr; - if (!TranslateVaddr(StartVaddr,StartPAddr)) { g_Notify->BreakPoint(__FILE__,__LINE__); } - if (!TranslateVaddr(EndVaddr,EndPAddr)) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (!TranslateVaddr(StartVaddr,StartPAddr)) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } + if (!TranslateVaddr(EndVaddr,EndPAddr)) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } //Get Length of memory being protected int Length = ((EndPAddr + 3) - StartPAddr) & ~3; - if (Length < 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (Length < 0) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + } - //Proect that memory address space + //Protect that memory address space DWORD OldProtect; BYTE * MemLoc = Rdram() + StartPAddr; @@ -2723,28 +3409,42 @@ void CMipsMemoryVM::Compile_LB (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.rt == 0) return; + if (Opcode.rt == 0) + { + return; + } - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = (GetMipsRegLo(Opcode.base) + (short)Opcode.offset) ^ 3; Map_GPR_32bit(Opcode.rt,TRUE,-1); Compile_LB(GetMipsRegMapLo(Opcode.rt),Address,TRUE); return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -2753,7 +3453,9 @@ void CMipsMemoryVM::Compile_LB (void) XorConstToX86Reg(TempReg1,3); Map_GPR_32bit(Opcode.rt,TRUE,-1); MoveSxByteX86regPointerToX86reg(TempReg1, TempReg2,GetMipsRegMapLo(Opcode.rt)); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); XorConstToX86Reg(TempReg1,3); Map_GPR_32bit(Opcode.rt,TRUE,-1); @@ -2768,28 +3470,42 @@ void CMipsMemoryVM::Compile_LBU (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.rt == 0) return; + if (Opcode.rt == 0) + { + return; + } - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = (GetMipsRegLo(Opcode.base) + (short)Opcode.offset) ^ 3; Map_GPR_32bit(Opcode.rt,FALSE,-1); Compile_LB(GetMipsRegMapLo(Opcode.rt),Address,FALSE); return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -2798,7 +3514,9 @@ void CMipsMemoryVM::Compile_LBU (void) XorConstToX86Reg(TempReg1,3); Map_GPR_32bit(Opcode.rt,FALSE,-1); MoveZxByteX86regPointerToX86reg(TempReg1, TempReg2,GetMipsRegMapLo(Opcode.rt)); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); XorConstToX86Reg(TempReg1,3); Map_GPR_32bit(Opcode.rt,FALSE,-1); @@ -2815,26 +3533,37 @@ void CMipsMemoryVM::Compile_LH (void) if (Opcode.rt == 0) return; - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = (GetMipsRegLo(Opcode.base) + (short)Opcode.offset) ^ 2; Map_GPR_32bit(Opcode.rt,TRUE,-1); Compile_LH(GetMipsRegMapLo(Opcode.rt),Address,TRUE); return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -2843,7 +3572,9 @@ void CMipsMemoryVM::Compile_LH (void) XorConstToX86Reg(TempReg1,2); Map_GPR_32bit(Opcode.rt,TRUE,-1); MoveSxHalfX86regPointerToX86reg(TempReg1, TempReg2,GetMipsRegMapLo(Opcode.rt)); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); XorConstToX86Reg(TempReg1,2); Map_GPR_32bit(Opcode.rt,TRUE,-1); @@ -2858,28 +3589,42 @@ void CMipsMemoryVM::Compile_LHU (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.rt == 0) return; + if (Opcode.rt == 0) + { + return; + } - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = (GetMipsRegLo(Opcode.base) + (short)Opcode.offset) ^ 2; Map_GPR_32bit(Opcode.rt,FALSE,-1); Compile_LH(GetMipsRegMapLo(Opcode.rt),Address,FALSE); return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -2888,7 +3633,9 @@ void CMipsMemoryVM::Compile_LHU (void) XorConstToX86Reg(TempReg1,2); Map_GPR_32bit(Opcode.rt,FALSE,-1); MoveZxHalfX86regPointerToX86reg(TempReg1, TempReg2,GetMipsRegMapLo(Opcode.rt)); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); XorConstToX86Reg(TempReg1,2); Map_GPR_32bit(Opcode.rt,TRUE,-1); @@ -2914,7 +3661,8 @@ void CMipsMemoryVM::Compile_LW (bool ResultSigned, bool bRecordLLBit) if (Opcode.rt == 0) return; x86Reg TempReg1, TempReg2; - if (Opcode.base == 29 && g_System->bFastSP()) { + if (Opcode.base == 29 && g_System->bFastSP()) + { char String[100]; Map_GPR_32bit(Opcode.rt,ResultSigned,-1); @@ -2923,33 +3671,50 @@ void CMipsMemoryVM::Compile_LW (bool ResultSigned, bool bRecordLLBit) MoveVariableDispToX86Reg((void *)((DWORD)(short)Opcode.offset),String,GetMipsRegMapLo(Opcode.rt),TempReg1,1); if (bRecordLLBit) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } - } else { - if (IsConst(Opcode.base)) { + } + else + { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; Map_GPR_32bit(Opcode.rt,ResultSigned,-1); Compile_LW(GetMipsRegMapLo(Opcode.rt),Address); if (bRecordLLBit) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } - } else { - if (g_System->bUseTlb()) { - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base) && Opcode.offset == 0) { + } + else + { + if (g_System->bUseTlb()) + { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base) && Opcode.offset == 0) + { ProtectGPR(Opcode.base); TempReg1 = GetMipsRegMapLo(Opcode.base); - } else { - if (IsMapped(Opcode.base)) { + } + else + { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); if (Opcode.offset != 0) { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } @@ -2965,16 +3730,24 @@ void CMipsMemoryVM::Compile_LW (bool ResultSigned, bool bRecordLLBit) { MoveConstToVariable(1,_LLBit,"LLBit"); } - } else { - if (IsMapped(Opcode.base)) { + } + else + { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { Map_GPR_32bit(Opcode.rt,ResultSigned,-1); LeaSourceAndOffset(GetMipsRegMapLo(Opcode.rt),GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { Map_GPR_32bit(Opcode.rt,ResultSigned,Opcode.base); } - } else { + } + else + { Map_GPR_32bit(Opcode.rt,ResultSigned,Opcode.base); AddConstToX86Reg(GetMipsRegMapLo(Opcode.rt),(short)Opcode.immediate); } @@ -3003,17 +3776,23 @@ void CMipsMemoryVM::Compile_LWC1 (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); m_Section->CompileCop1Test(); - if ((Opcode.ft & 1) != 0) { - if (RegInStack(Opcode.ft-1,CRegInfo::FPU_Double) || RegInStack(Opcode.ft-1,CRegInfo::FPU_Qword)) { + if ((Opcode.ft & 1) != 0) + { + if (RegInStack(Opcode.ft-1,CRegInfo::FPU_Double) || RegInStack(Opcode.ft-1,CRegInfo::FPU_Qword)) + { UnMap_FPR(Opcode.ft-1,TRUE); } } - if (RegInStack(Opcode.ft,CRegInfo::FPU_Double) || RegInStack(Opcode.ft,CRegInfo::FPU_Qword)) { + if (RegInStack(Opcode.ft,CRegInfo::FPU_Double) || RegInStack(Opcode.ft,CRegInfo::FPU_Qword)) + { UnMap_FPR(Opcode.ft,TRUE); - } else { + } + else + { UnMap_FPR(Opcode.ft,FALSE); } - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; TempReg1 = Map_TempReg(x86_Any,-1,FALSE); @@ -3025,37 +3804,58 @@ void CMipsMemoryVM::Compile_LWC1 (void) MoveX86regToX86Pointer(TempReg1,TempReg2); return; } - if (IsMapped(Opcode.base) && Opcode.offset == 0) { - if (g_System->bUseTlb()) { + if (IsMapped(Opcode.base) && Opcode.offset == 0) + { + if (g_System->bUseTlb()) + { ProtectGPR(Opcode.base); TempReg1 = GetMipsRegMapLo(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { - if (IsMapped(Opcode.base)) { + } + else + { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); - if (Opcode.immediate == 0) { - } else if (Opcode.immediate == 1) { + if (Opcode.immediate == 0) + { + + } + else if (Opcode.immediate == 1) + { IncX86reg(TempReg1); - } else if (Opcode.immediate == 0xFFFF) { + } + else if (Opcode.immediate == 0xFFFF) + { DecX86reg(TempReg1); - } else { + } + else + { AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } } } TempReg2 = Map_TempReg(x86_Any,-1,FALSE); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); MoveVariableDispToX86Reg(m_TLB_ReadMap,"m_TLB_ReadMap",TempReg2,TempReg2,4); @@ -3063,7 +3863,9 @@ void CMipsMemoryVM::Compile_LWC1 (void) TempReg3 = Map_TempReg(x86_Any,-1,FALSE); MoveX86regPointerToX86reg(TempReg1, TempReg2,TempReg3); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); TempReg3 = Map_TempReg(x86_Any,-1,FALSE); MoveN64MemToX86reg(TempReg3,TempReg1); @@ -3080,9 +3882,13 @@ void CMipsMemoryVM::Compile_LWL (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.rt == 0) return; + if (Opcode.rt == 0) + { + return; + } - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; DWORD Offset = Address & 3; @@ -3096,21 +3902,31 @@ void CMipsMemoryVM::Compile_LWL (void) } shift = Map_TempReg(x86_ECX,-1,FALSE); - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -3126,9 +3942,12 @@ void CMipsMemoryVM::Compile_LWL (void) Map_GPR_32bit(Opcode.rt,TRUE,Opcode.rt); AndVariableDispToX86Reg((void *)LWL_MASK,"LWL_MASK",GetMipsRegMapLo(Opcode.rt),OffsetReg,Multip_x4); MoveVariableDispToX86Reg((void *)LWL_SHIFT,"LWL_SHIFT",shift,OffsetReg,4); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86regPointerToX86reg(TempReg1, TempReg2,TempReg1); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); MoveN64MemToX86reg(TempReg1,TempReg1); } @@ -3143,9 +3962,13 @@ void CMipsMemoryVM::Compile_LWR (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.rt == 0) return; + if (Opcode.rt == 0) + { + return; + } - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; DWORD Offset = Address & 3; @@ -3159,22 +3982,32 @@ void CMipsMemoryVM::Compile_LWR (void) } shift = Map_TempReg(x86_ECX,-1,FALSE); - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -3190,9 +4023,12 @@ void CMipsMemoryVM::Compile_LWR (void) Map_GPR_32bit(Opcode.rt,TRUE,Opcode.rt); AndVariableDispToX86Reg((void *)LWR_MASK,"LWR_MASK",GetMipsRegMapLo(Opcode.rt),OffsetReg,Multip_x4); MoveVariableDispToX86Reg((void *)LWR_SHIFT,"LWR_SHIFT",shift,OffsetReg,4); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86regPointerToX86reg(TempReg1, TempReg2,TempReg1); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); MoveN64MemToX86reg(TempReg1,TempReg1); } @@ -3210,11 +4046,15 @@ void CMipsMemoryVM::Compile_LD (void) OPCODE & Opcode = CRecompilerOps::m_Opcode; CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.rt == 0) return; + if (Opcode.rt == 0) + { + return; + } x86Reg TempReg1, TempReg2; - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; Map_GPR_64bit(Opcode.rt,-1); Compile_LW(GetMipsRegMapHi(Opcode.rt),Address); @@ -3225,29 +4065,45 @@ void CMipsMemoryVM::Compile_LD (void) } return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base) && Opcode.offset == 0) { - if (g_System->bUseTlb()) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base) && Opcode.offset == 0) + { + if (g_System->bUseTlb()) + { ProtectGPR(Opcode.base); TempReg1 = GetMipsRegMapLo(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { - if (IsMapped(Opcode.base)) { + } + else + { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -3256,7 +4112,9 @@ void CMipsMemoryVM::Compile_LD (void) Map_GPR_64bit(Opcode.rt,-1); MoveX86regPointerToX86reg(TempReg1, TempReg2,GetMipsRegMapHi(Opcode.rt)); MoveX86regPointerToX86regDisp8(TempReg1, TempReg2,GetMipsRegMapLo(Opcode.rt),4); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); Map_GPR_64bit(Opcode.rt,-1); MoveN64MemToX86reg(GetMipsRegMapHi(Opcode.rt),TempReg1); @@ -3280,7 +4138,8 @@ void CMipsMemoryVM::Compile_LDC1 (void) m_Section->CompileCop1Test(); UnMap_FPR(Opcode.ft,FALSE); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; TempReg1 = Map_TempReg(x86_Any,-1,FALSE); Compile_LW(TempReg1,Address); @@ -3297,37 +4156,58 @@ void CMipsMemoryVM::Compile_LDC1 (void) MoveX86regToX86Pointer(TempReg1,TempReg2); return; } - if (IsMapped(Opcode.base) && Opcode.offset == 0) { - if (g_System->bUseTlb()) { + if (IsMapped(Opcode.base) && Opcode.offset == 0) + { + if (g_System->bUseTlb()) + { ProtectGPR(Opcode.base); TempReg1 = GetMipsRegMapLo(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { - if (IsMapped(Opcode.base)) { + } + else + { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); - if (Opcode.immediate == 0) { - } else if (Opcode.immediate == 1) { + if (Opcode.immediate == 0) + { + + } + else if (Opcode.immediate == 1) + { IncX86reg(TempReg1); - } else if (Opcode.immediate == 0xFFFF) { + } + else if (Opcode.immediate == 0xFFFF) + { DecX86reg(TempReg1); - } else { + } + else + { AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } } } TempReg2 = Map_TempReg(x86_Any,-1,FALSE); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); MoveVariableDispToX86Reg(m_TLB_ReadMap,"m_TLB_ReadMap",TempReg2,TempReg2,4); @@ -3344,7 +4224,9 @@ void CMipsMemoryVM::Compile_LDC1 (void) sprintf(Name,"_FPR_S[%d]",Opcode.ft); MoveVariableToX86reg(&_FPR_D[Opcode.ft],Name,TempReg2); MoveX86regToX86Pointer(TempReg3,TempReg2); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); TempReg3 = Map_TempReg(x86_Any,-1,FALSE); MoveN64MemToX86reg(TempReg3,TempReg1); @@ -3366,8 +4248,14 @@ void CMipsMemoryVM::Compile_LDL (void) OPCODE & Opcode = CRecompilerOps::m_Opcode; CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.base != 0) { UnMap_GPR(Opcode.base,TRUE); } - if (Opcode.rt != 0) { UnMap_GPR(Opcode.rt,TRUE); } + if (Opcode.base != 0) + { + UnMap_GPR(Opcode.base,TRUE); + } + if (Opcode.rt != 0) + { + UnMap_GPR(Opcode.rt,TRUE); + } BeforeCallDirect(m_RegWorkingSet); MoveConstToVariable(Opcode.Hex, &R4300iOp::m_Opcode.Hex, "R4300iOp::m_Opcode.Hex"); Call_Direct(R4300iOp::LDL, "R4300iOp::LDL"); @@ -3379,8 +4267,14 @@ void CMipsMemoryVM::Compile_LDR (void) OPCODE & Opcode = CRecompilerOps::m_Opcode; CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.base != 0) { UnMap_GPR(Opcode.base,TRUE); } - if (Opcode.rt != 0) { UnMap_GPR(Opcode.rt,TRUE); } + if (Opcode.base != 0) + { + UnMap_GPR(Opcode.base,TRUE); + } + if (Opcode.rt != 0) + { + UnMap_GPR(Opcode.rt,TRUE); + } BeforeCallDirect(m_RegWorkingSet); MoveConstToVariable(Opcode.Hex, &R4300iOp::m_Opcode.Hex, "R4300iOp::m_Opcode.Hex"); Call_Direct(R4300iOp::LDR, "R4300iOp::LDR"); @@ -3394,56 +4288,83 @@ void CMipsMemoryVM::Compile_SB (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = (GetMipsRegLo(Opcode.base) + (short)Opcode.offset) ^ 3; - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { Compile_SB_Const((BYTE)(GetMipsRegLo(Opcode.rt) & 0xFF), Address); - } else if (IsMapped(Opcode.rt) && Is8BitReg(GetMipsRegMapLo(Opcode.rt))) { + } + else if (IsMapped(Opcode.rt) && Is8BitReg(GetMipsRegMapLo(Opcode.rt))) + { Compile_SB_Register(GetMipsRegMapLo(Opcode.rt), Address); - } else { + } + else + { Compile_SB_Register(Map_TempReg(x86_Any8Bit,Opcode.rt,FALSE), Address); } return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } Compile_StoreInstructClean(TempReg1,4); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); MoveVariableDispToX86Reg(m_TLB_WriteMap,"m_TLB_WriteMap",TempReg2,TempReg2,4); CompileWriteTLBMiss(TempReg1,TempReg2); XorConstToX86Reg(TempReg1,3); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstByteToX86regPointer((BYTE)(GetMipsRegLo(Opcode.rt) & 0xFF),TempReg1, TempReg2); - } else if (IsMapped(Opcode.rt) && Is8BitReg(GetMipsRegMapLo(Opcode.rt))) { + } + else if (IsMapped(Opcode.rt) && Is8BitReg(GetMipsRegMapLo(Opcode.rt))) + { MoveX86regByteToX86regPointer(GetMipsRegMapLo(Opcode.rt),TempReg1, TempReg2); - } else { + } + else + { UnProtectGPR(Opcode.rt); MoveX86regByteToX86regPointer(Map_TempReg(x86_Any8Bit,Opcode.rt,FALSE),TempReg1, TempReg2); } - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); XorConstToX86Reg(TempReg1,3); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstByteToN64Mem((BYTE)(GetMipsRegLo(Opcode.rt) & 0xFF),TempReg1); - } else if (IsMapped(Opcode.rt) && Is8BitReg(GetMipsRegMapLo(Opcode.rt))) { + } else if (IsMapped(Opcode.rt) && Is8BitReg(GetMipsRegMapLo(Opcode.rt))) + { MoveX86regByteToN64Mem(GetMipsRegMapLo(Opcode.rt),TempReg1); - } else { + } + else + { UnProtectGPR(Opcode.rt); MoveX86regByteToN64Mem(Map_TempReg(x86_Any8Bit,Opcode.rt,FALSE),TempReg1); } @@ -3457,54 +4378,82 @@ void CMipsMemoryVM::Compile_SH (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = (GetMipsRegLo(Opcode.base) + (short)Opcode.offset) ^ 2; - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { Compile_SH_Const((WORD)(GetMipsRegLo(Opcode.rt) & 0xFFFF), Address); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { Compile_SH_Register(GetMipsRegMapLo(Opcode.rt), Address); - } else { + } + else + { Compile_SH_Register(Map_TempReg(x86_Any,Opcode.rt,FALSE), Address); } return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); MoveVariableDispToX86Reg(m_TLB_WriteMap,"m_TLB_WriteMap",TempReg2,TempReg2,4); CompileWriteTLBMiss(TempReg1,TempReg2); XorConstToX86Reg(TempReg1,2); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstHalfToX86regPointer((WORD)(GetMipsRegLo(Opcode.rt) & 0xFFFF),TempReg1, TempReg2); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { MoveX86regHalfToX86regPointer(GetMipsRegMapLo(Opcode.rt),TempReg1, TempReg2); - } else { + } + else + { MoveX86regHalfToX86regPointer(Map_TempReg(x86_Any,Opcode.rt,FALSE),TempReg1, TempReg2); } - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); XorConstToX86Reg(TempReg1,2); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstHalfToN64Mem((WORD)(GetMipsRegLo(Opcode.rt) & 0xFFFF),TempReg1); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { MoveX86regHalfToN64Mem(GetMipsRegMapLo(Opcode.rt),TempReg1); - } else { + } + else + { MoveX86regHalfToN64Mem(Map_TempReg(x86_Any,Opcode.rt,FALSE),TempReg1); } } @@ -3526,41 +4475,62 @@ void CMipsMemoryVM::Compile_SW (bool bCheckLLbit) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); x86Reg TempReg1, TempReg2; - if (Opcode.base == 29 && g_System->bFastSP()) { + if (Opcode.base == 29 && g_System->bFastSP()) + { if (bCheckLLbit) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); + } + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } TempReg1 = Map_MemoryStack(x86_Any,true); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstToMemoryDisp (GetMipsRegLo(Opcode.rt),TempReg1, (DWORD)((short)Opcode.offset)); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { MoveX86regToMemory(GetMipsRegMapLo(Opcode.rt),TempReg1,(DWORD)((short)Opcode.offset)); - } else { + } + else + { TempReg2 = Map_TempReg(x86_Any,Opcode.rt,FALSE); MoveX86regToMemory(TempReg2,TempReg1,(DWORD)((short)Opcode.offset)); } - } else { - if (IsConst(Opcode.base)) { + } + else + { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; if (bCheckLLbit) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { Compile_SW_Const(GetMipsRegLo(Opcode.rt), Address); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { Compile_SW_Register(GetMipsRegMapLo(Opcode.rt), Address); - } else { + } + else + { Compile_SW_Register(Map_TempReg(x86_Any,Opcode.rt,FALSE), Address); } return; } - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); if (g_System->bDelaySI() || g_System->bDelayDP()) { @@ -3568,19 +4538,25 @@ void CMipsMemoryVM::Compile_SW (bool bCheckLLbit) UpdateCounters(m_RegWorkingSet,false, true); m_RegWorkingSet.SetBlockCycleCount(m_RegWorkingSet.GetBlockCycleCount() + g_System->CountPerOp()); } - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } Compile_StoreInstructClean(TempReg1,4); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -3593,11 +4569,15 @@ void CMipsMemoryVM::Compile_SW (bool bCheckLLbit) JneLabel8("LLBit_Continue",0); Jump = m_RecompPos - 1; } - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstToX86regPointer(GetMipsRegLo(Opcode.rt),TempReg1, TempReg2); - } else if (IsMapped(Opcode.rt)) { + } else if (IsMapped(Opcode.rt)) + { MoveX86regToX86regPointer(GetMipsRegMapLo(Opcode.rt),TempReg1, TempReg2); - } else { + } + else + { MoveX86regToX86regPointer(Map_TempReg(x86_Any,Opcode.rt,FALSE),TempReg1, TempReg2); } if (bCheckLLbit) @@ -3608,17 +4588,24 @@ void CMipsMemoryVM::Compile_SW (bool bCheckLLbit) Map_GPR_32bit(Opcode.rt,false,-1); MoveVariableToX86reg(_LLBit,"_LLBit",GetMipsRegMapLo(Opcode.rt)); } - } else { + } + else + { if (bCheckLLbit) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } AndConstToX86Reg(TempReg1,0x1FFFFFFF); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstToN64Mem(GetMipsRegLo(Opcode.rt),TempReg1); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { MoveX86regToN64Mem(GetMipsRegMapLo(Opcode.rt),TempReg1); - } else { + } + else + { MoveX86regToN64Mem(Map_TempReg(x86_Any,Opcode.rt,FALSE),TempReg1); } } @@ -3635,7 +4622,8 @@ void CMipsMemoryVM::Compile_SWC1 (void) m_Section->CompileCop1Test(); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; UnMap_FPR(Opcode.ft,TRUE); @@ -3647,26 +4635,40 @@ void CMipsMemoryVM::Compile_SWC1 (void) Compile_SW_Register(TempReg1, Address); return; } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); - if (Opcode.immediate == 0) { - } else if (Opcode.immediate == 1) { + if (Opcode.immediate == 0) + { + + } + else if (Opcode.immediate == 1) + { IncX86reg(TempReg1); - } else if (Opcode.immediate == 0xFFFF) { + } else if (Opcode.immediate == 0xFFFF) + { DecX86reg(TempReg1); - } else { + } + else + { AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -3679,7 +4681,9 @@ void CMipsMemoryVM::Compile_SWC1 (void) MoveVariableToX86reg(&_FPR_S[Opcode.ft],Name,TempReg3); MoveX86PointerToX86reg(TempReg3,TempReg3); MoveX86regToX86regPointer(TempReg3,TempReg1, TempReg2); - } else { + } + else + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); UnMap_FPR(Opcode.ft,TRUE); sprintf(Name,"_FPR_S[%d]",Opcode.ft); @@ -3698,7 +4702,8 @@ void CMipsMemoryVM::Compile_SWL (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address; Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; @@ -3714,20 +4719,27 @@ void CMipsMemoryVM::Compile_SWL (void) return; } shift = Map_TempReg(x86_ECX,-1,FALSE); - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -3741,34 +4753,46 @@ void CMipsMemoryVM::Compile_SWL (void) AndConstToX86Reg(TempReg1,(DWORD)~3); Value = Map_TempReg(x86_Any,-1,FALSE); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86regPointerToX86reg(TempReg1, TempReg2,Value); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); MoveN64MemToX86reg(Value,TempReg1); } AndVariableDispToX86Reg((void *)SWL_MASK,"SWL_MASK",Value,OffsetReg,Multip_x4); - if (!IsConst(Opcode.rt) || GetMipsRegLo(Opcode.rt) != 0) { + if (!IsConst(Opcode.rt) || GetMipsRegLo(Opcode.rt) != 0) + { MoveVariableDispToX86Reg((void *)SWL_SHIFT,"SWL_SHIFT",shift,OffsetReg,4); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstToX86reg(GetMipsRegLo(Opcode.rt),OffsetReg); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { MoveX86RegToX86Reg(GetMipsRegMapLo(Opcode.rt),OffsetReg); - } else { + } + else + { MoveVariableToX86reg(&_GPR[Opcode.rt].UW[0],CRegName::GPR_Lo[Opcode.rt],OffsetReg); } ShiftRightUnsign(OffsetReg); AddX86RegToX86Reg(Value,OffsetReg); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); MoveVariableDispToX86Reg(m_TLB_WriteMap,"m_TLB_WriteMap",TempReg2,TempReg2,4); MoveX86regToX86regPointer(Value,TempReg1, TempReg2); - } else { + } + else + { MoveX86regToN64Mem(Value,TempReg1); } } @@ -3781,7 +4805,8 @@ void CMipsMemoryVM::Compile_SWR (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; DWORD Offset = Address & 3; @@ -3795,20 +4820,27 @@ void CMipsMemoryVM::Compile_SWR (void) return; } shift = Map_TempReg(x86_ECX,-1,FALSE); - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -3822,34 +4854,46 @@ void CMipsMemoryVM::Compile_SWR (void) AndConstToX86Reg(TempReg1,(DWORD)~3); Value = Map_TempReg(x86_Any,-1,FALSE); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86regPointerToX86reg(TempReg1, TempReg2,Value); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); MoveN64MemToX86reg(Value,TempReg1); } AndVariableDispToX86Reg((void *)SWR_MASK,"SWR_MASK",Value,OffsetReg,Multip_x4); - if (!IsConst(Opcode.rt) || GetMipsRegLo(Opcode.rt) != 0) { + if (!IsConst(Opcode.rt) || GetMipsRegLo(Opcode.rt) != 0) + { MoveVariableDispToX86Reg((void *)SWR_SHIFT,"SWR_SHIFT",shift,OffsetReg,4); - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { MoveConstToX86reg(GetMipsRegLo(Opcode.rt),OffsetReg); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { MoveX86RegToX86Reg(GetMipsRegMapLo(Opcode.rt),OffsetReg); - } else { + } + else + { MoveVariableToX86reg(&_GPR[Opcode.rt].UW[0],CRegName::GPR_Lo[Opcode.rt],OffsetReg); } ShiftLeftSign(OffsetReg); AddX86RegToX86Reg(Value,OffsetReg); } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); MoveVariableDispToX86Reg(m_TLB_WriteMap,"m_TLB_WriteMap",TempReg2,TempReg2,4); MoveX86regToX86regPointer(Value,TempReg1, TempReg2); - } else { + } + else + { MoveX86regToN64Mem(Value,TempReg1); } } @@ -3860,7 +4904,7 @@ void CMipsMemoryVM::Compile_StoreInstructClean (x86Reg AddressReg, int Length ) { return; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); /* stdstr_f strLen("%d",Length); @@ -3913,88 +4957,134 @@ void CMipsMemoryVM::Compile_SD (void) CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; - if (IsConst(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { Compile_SW_Const(Is64Bit(Opcode.rt) ? GetMipsRegHi(Opcode.rt) : (GetMipsRegLo_S(Opcode.rt) >> 31), Address); Compile_SW_Const(GetMipsRegLo(Opcode.rt), Address + 4); - } else if (IsMapped(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { Compile_SW_Register(Is64Bit(Opcode.rt) ? GetMipsRegMapHi(Opcode.rt) : Map_TempReg(x86_Any,Opcode.rt,TRUE), Address); Compile_SW_Register(GetMipsRegMapLo(Opcode.rt), Address + 4); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.rt,TRUE); Compile_SW_Register(TempReg1, Address); Compile_SW_Register(Map_TempReg(TempReg1,Opcode.rt,FALSE), Address + 4); } - } else { - if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); } - if (IsMapped(Opcode.base)) { + } + else + { + if (IsMapped(Opcode.rt)) + { + ProtectGPR(Opcode.rt); + } + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } UnProtectGPR(Opcode.base); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } Compile_StoreInstructClean(TempReg1,8); - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); MoveVariableDispToX86Reg(m_TLB_WriteMap,"m_TLB_WriteMap",TempReg2,TempReg2,4); CompileWriteTLBMiss(TempReg1,TempReg2); - if (IsConst(Opcode.rt)) { - if (Is64Bit(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { + if (Is64Bit(Opcode.rt)) + { MoveConstToX86regPointer(GetMipsRegHi(Opcode.rt),TempReg1, TempReg2); - } else { + } + else + { MoveConstToX86regPointer((GetMipsRegLo_S(Opcode.rt) >> 31),TempReg1, TempReg2); } AddConstToX86Reg(TempReg1,4); MoveConstToX86regPointer(GetMipsRegLo(Opcode.rt),TempReg1, TempReg2); - } else if (IsMapped(Opcode.rt)) { - if (Is64Bit(Opcode.rt)) { + } + else if (IsMapped(Opcode.rt)) + { + if (Is64Bit(Opcode.rt)) + { MoveX86regToX86regPointer(GetMipsRegMapHi(Opcode.rt),TempReg1, TempReg2); - } else { + } + else + { MoveX86regToX86regPointer(Map_TempReg(x86_Any,Opcode.rt,TRUE),TempReg1, TempReg2); } AddConstToX86Reg(TempReg1,4); MoveX86regToX86regPointer(GetMipsRegMapLo(Opcode.rt),TempReg1, TempReg2); - } else { + } + else + { x86Reg Reg = Map_TempReg(x86_Any,Opcode.rt,TRUE); MoveX86regToX86regPointer(Reg,TempReg1, TempReg2); AddConstToX86Reg(TempReg1,4); MoveX86regToX86regPointer(Map_TempReg(Reg,Opcode.rt,FALSE),TempReg1, TempReg2); } - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); - if (IsConst(Opcode.rt)) { - if (Is64Bit(Opcode.rt)) { + if (IsConst(Opcode.rt)) + { + if (Is64Bit(Opcode.rt)) + { MoveConstToN64Mem(GetMipsRegHi(Opcode.rt),TempReg1); - } else if (IsSigned(Opcode.rt)) { + } + else if (IsSigned(Opcode.rt)) + { MoveConstToN64Mem((GetMipsRegLo_S(Opcode.rt) >> 31),TempReg1); - } else { + } + else + { MoveConstToN64Mem(0,TempReg1); } MoveConstToN64MemDisp(GetMipsRegLo(Opcode.rt),TempReg1,4); - } else if (IsKnown(Opcode.rt) && IsMapped(Opcode.rt)) { - if (Is64Bit(Opcode.rt)) { + } + else if (IsKnown(Opcode.rt) && IsMapped(Opcode.rt)) + { + if (Is64Bit(Opcode.rt)) + { MoveX86regToN64Mem(GetMipsRegMapHi(Opcode.rt),TempReg1); - } else if (IsSigned(Opcode.rt)) { + } + else if (IsSigned(Opcode.rt)) + { MoveX86regToN64Mem(Map_TempReg(x86_Any,Opcode.rt,TRUE), TempReg1); - } else { + } + else + { MoveConstToN64Mem(0,TempReg1); } MoveX86regToN64MemDisp(GetMipsRegMapLo(Opcode.rt),TempReg1, 4); - } else { + } + else + { x86Reg Reg; MoveX86regToN64Mem(Reg = Map_TempReg(x86_Any,Opcode.rt,TRUE), TempReg1); MoveX86regToN64MemDisp(Map_TempReg(Reg,Opcode.rt,FALSE), TempReg1,4); @@ -4013,7 +5103,8 @@ void CMipsMemoryVM::Compile_SDC1 (void) m_Section->CompileCop1Test(); - if (IsConst(Opcode.base)) { + if (IsConst(Opcode.base)) + { DWORD Address = GetMipsRegLo(Opcode.base) + (short)Opcode.offset; TempReg1 = Map_TempReg(x86_Any,-1,FALSE); @@ -4029,26 +5120,41 @@ void CMipsMemoryVM::Compile_SDC1 (void) Compile_SW_Register(TempReg1, Address + 4); return; } - if (IsMapped(Opcode.base)) { + if (IsMapped(Opcode.base)) + { ProtectGPR(Opcode.base); - if (Opcode.offset != 0) { + if (Opcode.offset != 0) + { TempReg1 = Map_TempReg(x86_Any,-1,FALSE); LeaSourceAndOffset(TempReg1,GetMipsRegMapLo(Opcode.base),(short)Opcode.offset); - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); } - } else { + } + else + { TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE); - if (Opcode.immediate == 0) { - } else if (Opcode.immediate == 1) { + if (Opcode.immediate == 0) + { + + } + else if (Opcode.immediate == 1) + { IncX86reg(TempReg1); - } else if (Opcode.immediate == 0xFFFF) { + } + else if (Opcode.immediate == 0xFFFF) + { DecX86reg(TempReg1); - } else { + } + else + { AddConstToX86Reg(TempReg1,(short)Opcode.immediate); } } - if (g_System->bUseTlb()) { + if (g_System->bUseTlb()) + { TempReg2 = Map_TempReg(x86_Any,-1,FALSE); MoveX86RegToX86Reg(TempReg1, TempReg2); ShiftRightUnsignImmed(TempReg2,12); @@ -4067,7 +5173,9 @@ void CMipsMemoryVM::Compile_SDC1 (void) MoveVariableToX86reg((BYTE *)&_FPR_D[Opcode.ft],Name,TempReg3); MoveX86PointerToX86reg(TempReg3,TempReg3); MoveX86regToX86regPointer(TempReg3,TempReg1, TempReg2); - } else { + } + else + { AndConstToX86Reg(TempReg1,0x1FFFFFFF); TempReg3 = Map_TempReg(x86_Any,-1,FALSE); sprintf(Name,"_FPR_D[%d]",Opcode.ft); @@ -4082,24 +5190,38 @@ void CMipsMemoryVM::Compile_SDC1 (void) } } -void CMipsMemoryVM::Compile_SDL (void) { +void CMipsMemoryVM::Compile_SDL (void) +{ OPCODE & Opcode = CRecompilerOps::m_Opcode; CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.base != 0) { UnMap_GPR(Opcode.base,TRUE); } - if (Opcode.rt != 0) { UnMap_GPR(Opcode.rt,TRUE); } + if (Opcode.base != 0) + { + UnMap_GPR(Opcode.base,TRUE); + } + if (Opcode.rt != 0) + { + UnMap_GPR(Opcode.rt,TRUE); + } BeforeCallDirect(m_RegWorkingSet); MoveConstToVariable(Opcode.Hex, &R4300iOp::m_Opcode.Hex, "R4300iOp::m_Opcode.Hex"); Call_Direct(R4300iOp::SDL, "R4300iOp::SDL"); AfterCallDirect(m_RegWorkingSet); } -void CMipsMemoryVM::Compile_SDR (void) { +void CMipsMemoryVM::Compile_SDR (void) +{ OPCODE & Opcode = CRecompilerOps::m_Opcode; CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC)); - if (Opcode.base != 0) { UnMap_GPR(Opcode.base,TRUE); } - if (Opcode.rt != 0) { UnMap_GPR(Opcode.rt,TRUE); } + if (Opcode.base != 0) + { + UnMap_GPR(Opcode.base,TRUE); + } + if (Opcode.rt != 0) + { + UnMap_GPR(Opcode.rt,TRUE); + } BeforeCallDirect(m_RegWorkingSet); MoveConstToVariable(Opcode.Hex, &R4300iOp::m_Opcode.Hex, "R4300iOp::m_Opcode.Hex"); Call_Direct(R4300iOp::SDR, "R4300iOp::SDR"); @@ -4109,7 +5231,8 @@ void CMipsMemoryVM::Compile_SDR (void) { LPCTSTR CMipsMemoryVM::LabelName ( DWORD Address ) const { //StringMap::iterator theIterator = m_LabelList.find(Address); - //if (theIterator != m_LabelList.end()) { + //if (theIterator != m_LabelList.end()) + //{ // return (*theIterator).second; //} @@ -4119,7 +5242,8 @@ LPCTSTR CMipsMemoryVM::LabelName ( DWORD Address ) const void CMipsMemoryVM::TLB_Mapped( DWORD VAddr, DWORD Len, DWORD PAddr, bool bReadOnly ) { - for (DWORD count = VAddr, VEnd = VAddr + Len; count < VEnd; count += 0x1000) { + for (DWORD count = VAddr, VEnd = VAddr + Len; count < VEnd; count += 0x1000) + { DWORD Index = count >> 12; m_TLB_ReadMap[Index] = ((DWORD)m_RDRAM + (count - VAddr + PAddr)) - count; if (!bReadOnly) @@ -4145,14 +5269,17 @@ void CMipsMemoryVM::RdramChanged ( CMipsMemoryVM * _this ) { return; } - if (_this->m_AllocatedRdramSize == 0x400000) { + if (_this->m_AllocatedRdramSize == 0x400000) + { if (VirtualAlloc(_this->m_RDRAM + 0x400000, 0x400000, MEM_COMMIT, PAGE_READWRITE)==NULL) { WriteTrace(TraceError,__FUNCTION__ ": failed to allocate extended memory"); g_Notify->FatalError(GS(MSG_MEM_ALLOC_ERROR)); } _this->m_AllocatedRdramSize = 0x800000; - } else { + } + else + { VirtualFree(_this->m_RDRAM + 0x400000, 0x400000,MEM_DECOMMIT); _this->m_AllocatedRdramSize = 0x400000; } @@ -4161,15 +5288,28 @@ void CMipsMemoryVM::RdramChanged ( CMipsMemoryVM * _this ) void CMipsMemoryVM::ChangeSpStatus (void) { - if ( ( RegModValue & SP_CLR_HALT ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_HALT; } - if ( ( RegModValue & SP_SET_HALT ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_HALT; } - if ( ( RegModValue & SP_CLR_BROKE ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_BROKE; } - if ( ( RegModValue & SP_CLR_INTR ) != 0) { + if ( ( RegModValue & SP_CLR_HALT ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_HALT; + } + if ( ( RegModValue & SP_SET_HALT ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_HALT; + } + if ( ( RegModValue & SP_CLR_BROKE ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_BROKE; + } + if ( ( RegModValue & SP_CLR_INTR ) != 0) + { g_Reg->MI_INTR_REG &= ~MI_INTR_SP; g_Reg->m_RspIntrReg &= ~MI_INTR_SP; g_Reg->CheckInterrupts(); } - if ( ( RegModValue & SP_SET_INTR ) != 0 && bHaveDebugger()) { g_Notify->DisplayError(L"SP_SET_INTR"); } + if ( ( RegModValue & SP_SET_INTR ) != 0 && bHaveDebugger()) + { + g_Notify->DisplayError(L"SP_SET_INTR"); + } if ( ( RegModValue & SP_CLR_SSTEP ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SSTEP; @@ -4178,52 +5318,149 @@ void CMipsMemoryVM::ChangeSpStatus (void) { g_Reg->SP_STATUS_REG |= SP_STATUS_SSTEP; } - if ( ( RegModValue & SP_CLR_INTR_BREAK ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_INTR_BREAK; } - if ( ( RegModValue & SP_SET_INTR_BREAK ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_INTR_BREAK; } - if ( ( RegModValue & SP_CLR_SIG0 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG0; } - if ( ( RegModValue & SP_SET_SIG0 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG0; } - if ( ( RegModValue & SP_CLR_SIG1 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG1; } - if ( ( RegModValue & SP_SET_SIG1 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG1; } - if ( ( RegModValue & SP_CLR_SIG2 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG2; } - if ( ( RegModValue & SP_SET_SIG2 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG2; } - if ( ( RegModValue & SP_CLR_SIG3 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG3; } - if ( ( RegModValue & SP_SET_SIG3 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG3; } - if ( ( RegModValue & SP_CLR_SIG4 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG4; } - if ( ( RegModValue & SP_SET_SIG4 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG4; } - if ( ( RegModValue & SP_CLR_SIG5 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG5; } - if ( ( RegModValue & SP_SET_SIG5 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG5; } - if ( ( RegModValue & SP_CLR_SIG6 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG6; } - if ( ( RegModValue & SP_SET_SIG6 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG6; } - if ( ( RegModValue & SP_CLR_SIG7 ) != 0) { g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG7; } - if ( ( RegModValue & SP_SET_SIG7 ) != 0) { g_Reg->SP_STATUS_REG |= SP_STATUS_SIG7; } + if ( ( RegModValue & SP_CLR_INTR_BREAK ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_INTR_BREAK; + } + if ( ( RegModValue & SP_SET_INTR_BREAK ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_INTR_BREAK; + } + if ( ( RegModValue & SP_CLR_SIG0 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG0; + } + if ( ( RegModValue & SP_SET_SIG0 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG0; + } + if ( ( RegModValue & SP_CLR_SIG1 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG1; + } + if ( ( RegModValue & SP_SET_SIG1 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG1; + } + if ( ( RegModValue & SP_CLR_SIG2 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG2; + } + if ( ( RegModValue & SP_SET_SIG2 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG2; + } + if ( ( RegModValue & SP_CLR_SIG3 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG3; + } + if ( ( RegModValue & SP_SET_SIG3 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG3; + } + if ( ( RegModValue & SP_CLR_SIG4 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG4; + } + if ( ( RegModValue & SP_SET_SIG4 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG4; + } + if ( ( RegModValue & SP_CLR_SIG5 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG5; + } + if ( ( RegModValue & SP_SET_SIG5 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG5; + } + if ( ( RegModValue & SP_CLR_SIG6 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG6; + } + if ( ( RegModValue & SP_SET_SIG6 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG6; + } + if ( ( RegModValue & SP_CLR_SIG7 ) != 0) + { + g_Reg->SP_STATUS_REG &= ~SP_STATUS_SIG7; + } + if ( ( RegModValue & SP_SET_SIG7 ) != 0) + { + g_Reg->SP_STATUS_REG |= SP_STATUS_SIG7; + } if ( ( RegModValue & SP_SET_SIG0 ) != 0 && g_System->RspAudioSignal()) { g_Reg->MI_INTR_REG |= MI_INTR_SP; g_Reg->CheckInterrupts(); } - //if (*( DWORD *)(DMEM + 0xFC0) == 1) { + //if (*( DWORD *)(DMEM + 0xFC0) == 1) + //{ // ChangeTimer(RspTimer,0x40000); - //} else { - try { + //} + //else + //{ + try + { g_System->RunRSP(); - } catch (...) { - g_Notify->BreakPoint(__FILE__,__LINE__); + } + catch (...) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); } //} } -void CMipsMemoryVM::ChangeMiIntrMask (void) { - if ( ( RegModValue & MI_INTR_MASK_CLR_SP ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SP; } - if ( ( RegModValue & MI_INTR_MASK_SET_SP ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SP; } - if ( ( RegModValue & MI_INTR_MASK_CLR_SI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SI; } - if ( ( RegModValue & MI_INTR_MASK_SET_SI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SI; } - if ( ( RegModValue & MI_INTR_MASK_CLR_AI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_AI; } - if ( ( RegModValue & MI_INTR_MASK_SET_AI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_AI; } - if ( ( RegModValue & MI_INTR_MASK_CLR_VI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_VI; } - if ( ( RegModValue & MI_INTR_MASK_SET_VI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_VI; } - if ( ( RegModValue & MI_INTR_MASK_CLR_PI ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_PI; } - if ( ( RegModValue & MI_INTR_MASK_SET_PI ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_PI; } - if ( ( RegModValue & MI_INTR_MASK_CLR_DP ) != 0 ) { g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_DP; } - if ( ( RegModValue & MI_INTR_MASK_SET_DP ) != 0 ) { g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_DP; } +void CMipsMemoryVM::ChangeMiIntrMask (void) +{ + if ( ( RegModValue & MI_INTR_MASK_CLR_SP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SP; + } + if ( ( RegModValue & MI_INTR_MASK_SET_SP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SP; + } + if ( ( RegModValue & MI_INTR_MASK_CLR_SI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_SI; + } + if ( ( RegModValue & MI_INTR_MASK_SET_SI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_SI; + } + if ( ( RegModValue & MI_INTR_MASK_CLR_AI ) != 0) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_AI; + } + if ( ( RegModValue & MI_INTR_MASK_SET_AI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_AI; + } + if ( ( RegModValue & MI_INTR_MASK_CLR_VI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_VI; + } + if ( ( RegModValue & MI_INTR_MASK_SET_VI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_VI; + } + if ( ( RegModValue & MI_INTR_MASK_CLR_PI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_PI; + } + if ( ( RegModValue & MI_INTR_MASK_SET_PI ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_PI; + } + if ( ( RegModValue & MI_INTR_MASK_CLR_DP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG &= ~MI_INTR_MASK_DP; + } + if ( ( RegModValue & MI_INTR_MASK_SET_DP ) != 0 ) + { + g_Reg->MI_INTR_MASK_REG |= MI_INTR_MASK_DP; + } } diff --git a/Source/Project64/N64 System/Mips/Memory Virtual Mem.h b/Source/Project64/N64 System/Mips/Memory Virtual Mem.h index 07aeafe39..d1786d6ad 100644 --- a/Source/Project64/N64 System/Mips/Memory Virtual Mem.h +++ b/Source/Project64/N64 System/Mips/Memory Virtual Mem.h @@ -160,7 +160,7 @@ private: DWORD m_FieldSerration; DWORD m_TempValue; - //Initilizing and reseting information about the memory system + //Initializing and resetting information about the memory system void FreeMemory ( void ); mutable char m_strLabelName[100]; diff --git a/Source/Project64/N64 System/Mips/Mempak.H b/Source/Project64/N64 System/Mips/Mempak.H index 33c9d9e3b..68b4cae6b 100644 --- a/Source/Project64/N64 System/Mips/Mempak.H +++ b/Source/Project64/N64 System/Mips/Mempak.H @@ -9,13 +9,13 @@ * * ****************************************************************************/ #pragma once - -class Mempak -{ -public: - static void Close ( void ); - static BYTE CalculateCrc ( BYTE * DataToCrc ); - static void ReadFrom ( int Control, int Address, BYTE * Buffer ); - static void WriteTo ( int Control, int Address, BYTE * Buffer ); - -}; + +class Mempak +{ +public: + static void Close ( void ); + static BYTE CalculateCrc ( BYTE * DataToCrc ); + static void ReadFrom ( int Control, int Address, BYTE * Buffer ); + static void WriteTo ( int Control, int Address, BYTE * Buffer ); + +}; diff --git a/Source/Project64/N64 System/Mips/Mempak.cpp b/Source/Project64/N64 System/Mips/Mempak.cpp index d82ec55bf..e7f10ccf2 100644 --- a/Source/Project64/N64 System/Mips/Mempak.cpp +++ b/Source/Project64/N64 System/Mips/Mempak.cpp @@ -10,84 +10,112 @@ ****************************************************************************/ #include "stdafx.h" static BYTE Mempaks[4][0x8000]; -HANDLE hMempakFile = NULL; +HANDLE hMempakFile[4]; -void Mempak::Close(void) { - if (hMempakFile) { - CloseHandle(hMempakFile); - hMempakFile = NULL; +void Mempak::Close(void) +{ + for (int i = 0; i < 4; i++) + { + if (hMempakFile[i]) + { + CloseHandle(hMempakFile[i]); + hMempakFile[i] = NULL; + } } } -void LoadMempak (void) { +void LoadMempak (int Control) +{ CPath FileName; - DWORD dwRead, count, count2; + DWORD dwRead; + stdstr MempakName; + bool bFormatMempak = false; - BYTE Initilize[] = { - 0x81,0x01,0x02,0x03, 0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b, 0x0C,0x0D,0x0E,0x0F, - 0x10,0x11,0x12,0x13, 0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B, 0x1C,0x1D,0x1E,0x1F, - 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, - 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, - 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, - 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, - 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, - 0x00,0x71,0x00,0x03, 0x00,0x03,0x00,0x03, 0x00,0x03,0x00,0x03, 0x00,0x03,0x00,0x03, - }; - for (count = 0; count < 4; count ++) { - for (count2 = 0; count2 < 0x8000; count2 += 2) { - Mempaks[count][count2] = 0x00; - Mempaks[count][count2 + 1] = 0x03; - } - memcpy(&Mempaks[count][0],Initilize,sizeof(Initilize)); - } + MempakName.Format("%s_Cont_%d", g_Settings->LoadString(Game_GameName).c_str(), Control + 1); - FileName.SetDriveDirectory( g_Settings->LoadString(Directory_NativeSave).c_str()); - FileName.SetName(g_Settings->LoadString(Game_GameName).c_str()); + FileName.SetDriveDirectory(g_Settings->LoadString(Directory_NativeSave).c_str()); + FileName.SetName(MempakName.c_str()); FileName.SetExtension("mpk"); - - if (!FileName.DirectoryExists()) + + if (!FileName.Exists()) { - FileName.CreateDirectory(); + bFormatMempak = true; + + if (!FileName.DirectoryExists()) + { + FileName.CreateDirectory(); + } + + BYTE Initilize[] = { + 0x81,0x01,0x02,0x03, 0x04,0x05,0x06,0x07, 0x08,0x09,0x0a,0x0b, 0x0C,0x0D,0x0E,0x0F, + 0x10,0x11,0x12,0x13, 0x14,0x15,0x16,0x17, 0x18,0x19,0x1A,0x1B, 0x1C,0x1D,0x1E,0x1F, + 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, + 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF, 0x05,0x1A,0x5F,0x13, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0x01,0xFF, 0x66,0x25,0x99,0xCD, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, + 0x00,0x71,0x00,0x03, 0x00,0x03,0x00,0x03, 0x00,0x03,0x00,0x03, 0x00,0x03,0x00,0x03, + }; + + memcpy(&Mempaks[Control][0], Initilize, 0x110); + + for (int count = 0x110; count < 0x8000; count += 2) + { + Mempaks[Control][count] = 0x00; + Mempaks[Control][count + 1] = 0x03; + } } - hMempakFile = CreateFile(FileName,GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ,NULL,OPEN_ALWAYS, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL); + hMempakFile[Control] = CreateFile(FileName, GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL); - if (hMempakFile == INVALID_HANDLE_VALUE) + if (hMempakFile[Control] == INVALID_HANDLE_VALUE) { WriteTraceF(TraceError,__FUNCTION__ ": Failed to open (%s), lastError = %X",(LPCTSTR)FileName, GetLastError()); return; } - SetFilePointer(hMempakFile,0,NULL,FILE_BEGIN); - ReadFile(hMempakFile,Mempaks,sizeof(Mempaks),&dwRead,NULL); - WriteFile(hMempakFile,Mempaks,sizeof(Mempaks),&dwRead,NULL); + SetFilePointer(hMempakFile[Control], 0, NULL, FILE_BEGIN); + if (bFormatMempak) + { + WriteFile(hMempakFile[Control], Mempaks[Control], 0x8000, &dwRead, NULL); + } + else + { + ReadFile(hMempakFile[Control], Mempaks[Control], 0x8000, &dwRead, NULL); + } } -BYTE Mempak::CalculateCrc(BYTE * DataToCrc) { +BYTE Mempak::CalculateCrc(BYTE * DataToCrc) +{ DWORD Count; DWORD XorTap; int Length; BYTE CRC = 0; - for (Count = 0; Count < 0x21; Count++) { - for (Length = 0x80; Length >= 1; Length >>= 1) { + for (Count = 0; Count < 0x21; Count++) + { + for (Length = 0x80; Length >= 1; Length >>= 1) + { XorTap = (CRC & 0x80) ? 0x85 : 0; CRC <<= 1; - if (Count == 0x20) { + if (Count == 0x20) + { CRC &= 0xFF; - } else { - if ((*DataToCrc & Length) != 0) { + } + else + { + if ((*DataToCrc & Length) != 0) + { CRC |= 1; } } @@ -99,20 +127,18 @@ BYTE Mempak::CalculateCrc(BYTE * DataToCrc) { return CRC; } -void Mempak::ReadFrom(int Control, int Address, BYTE * Buffer) { - if (Address == 0x8001) { - memset(Buffer, 0, 0x20); - Buffer[0x20] = CalculateCrc(Buffer); - return; - } - Address &= 0xFFE0; - - if (Address <= 0x7FE0) { - if (hMempakFile == NULL) { - LoadMempak(); +void Mempak::ReadFrom(int Control, int Address, BYTE * Buffer) +{ + if (Address < 0x8000) + { + if (hMempakFile[Control] == NULL) + { + LoadMempak(Control); } memcpy(Buffer, &Mempaks[Control][Address], 0x20); - } else { + } + else + { memset(Buffer, 0, 0x20); /* Rumble pack area */ } @@ -120,21 +146,23 @@ void Mempak::ReadFrom(int Control, int Address, BYTE * Buffer) { Buffer[0x20] = CalculateCrc(Buffer); } -void Mempak::WriteTo(int Control, int Address, BYTE * Buffer) { +void Mempak::WriteTo(int Control, int Address, BYTE * Buffer) +{ DWORD dwWritten; - if (Address == 0x8001) { Buffer[0x20] = CalculateCrc(Buffer); return; } - - Address &= 0xFFE0; - if (Address <= 0x7FE0) { - if (hMempakFile == NULL) { - LoadMempak(); + if (Address < 0x8000) + { + if (hMempakFile[Control] == NULL) + { + LoadMempak(Control); } memcpy(&Mempaks[Control][Address], Buffer, 0x20); - SetFilePointer(hMempakFile,Control*0x8000,NULL,FILE_BEGIN); - WriteFile(hMempakFile,&Mempaks[Control][0],0x8000,&dwWritten,NULL); - } else { + SetFilePointer(hMempakFile[Control], 0,NULL,FILE_BEGIN); + WriteFile(hMempakFile[Control], &Mempaks[Control][0], 0x8000, &dwWritten, NULL); + } + else + { /* Rumble pack area */ } Buffer[0x20] = CalculateCrc(Buffer); diff --git a/Source/Project64/N64 System/Mips/OpCode.h b/Source/Project64/N64 System/Mips/OpCode.h index c46b38455..d5f26f06c 100644 --- a/Source/Project64/N64 System/Mips/OpCode.h +++ b/Source/Project64/N64 System/Mips/OpCode.h @@ -10,30 +10,35 @@ ****************************************************************************/ #pragma once -typedef union { +typedef union +{ unsigned long Hex; unsigned char Ascii[4]; - struct { + struct + { unsigned offset : 16; unsigned rt : 5; unsigned rs : 5; unsigned op : 6; }; - struct { + struct + { unsigned immediate : 16; unsigned : 5; unsigned base : 5; unsigned : 6; }; - struct { + struct + { unsigned target : 26; unsigned : 6; }; - struct { + struct + { unsigned funct : 6; unsigned sa : 5; unsigned rd : 5; @@ -42,7 +47,8 @@ typedef union { unsigned : 6; }; - struct { + struct + { unsigned : 6; unsigned fd : 5; unsigned fs : 5; diff --git a/Source/Project64/N64 System/Mips/Pif Ram.cpp b/Source/Project64/N64 System/Mips/Pif Ram.cpp index 12199d986..58a9f9334 100644 --- a/Source/Project64/N64 System/Mips/Pif Ram.cpp +++ b/Source/Project64/N64 System/Mips/Pif Ram.cpp @@ -45,6 +45,7 @@ CPifRam::CPifRam( bool SavesReadOnly ) : CPifRam::~CPifRam( void ) { + } void CPifRam::Reset ( void ) @@ -66,16 +67,21 @@ void CPifRam::n64_cic_nus_6105(char challenge[], char respone[], int length) char key, *lut; int i, sgn, mag, mod; - for (key = 0xB, lut = lut0, i = 0; i < length; i++) { + for (key = 0xB, lut = lut0, i = 0; i < length; i++) + { respone[i] = (key + 5 * challenge[i]) & 0xF; key = lut[respone[i]]; sgn = (respone[i] >> 3) & 0x1; mag = ((sgn == 1) ? ~respone[i] : respone[i]) & 0x7; mod = (mag % 3 == 1) ? sgn : 1 - sgn; if (lut == lut1 && (respone[i] == 0x1 || respone[i] == 0x9)) + { mod = 1; + } if (lut == lut1 && (respone[i] == 0xB || respone[i] == 0xE)) + { mod = 0; + } lut = (mod == 1) ? lut1 : lut0; } } @@ -93,7 +99,8 @@ void CPifRam::PifRamRead (void) int Channel = 0; for (int CurPos = 0; CurPos < 0x40; CurPos ++) { - switch(m_PifRam[CurPos]) { + switch (m_PifRam[CurPos]) + { case 0x00: Channel += 1; if (Channel > 6) @@ -107,31 +114,49 @@ void CPifRam::PifRamRead (void) default: if ((m_PifRam[CurPos] & 0xC0) == 0) { - if (Channel < 4) { - if (Controllers[Channel].Present && Controllers[Channel].RawData) { - if (g_Plugins->Control()->ReadController) { g_Plugins->Control()->ReadController(Channel,&m_PifRam[CurPos]); } - } else { + if (Channel < 4) + { + if (Controllers[Channel].Present && Controllers[Channel].RawData) + { + if (g_Plugins->Control()->ReadController) + { + g_Plugins->Control()->ReadController(Channel,&m_PifRam[CurPos]); + } + } + else + { ReadControllerCommand(Channel,&m_PifRam[CurPos]); } } CurPos += m_PifRam[CurPos] + (m_PifRam[CurPos + 1] & 0x3F) + 1; Channel += 1; - } else { - if (bShowPifRamErrors()) { g_Notify->DisplayError(L"Unknown Command in PifRamRead(%X)",m_PifRam[CurPos]); } + } + else + { + if (bShowPifRamErrors()) + { + g_Notify->DisplayError(L"Unknown Command in PifRamRead(%X)",m_PifRam[CurPos]); + } CurPos = 0x40; } break; } } - if (g_Plugins->Control()->ReadController) { g_Plugins->Control()->ReadController(-1,NULL); } + if (g_Plugins->Control()->ReadController) + { + g_Plugins->Control()->ReadController(-1,NULL); + } } -void CPifRam::PifRamWrite (void) { +void CPifRam::PifRamWrite (void) +{ CONTROL * Controllers = g_Plugins->Control()->PluginControllers(); int Channel = 0, CurPos; - if( m_PifRam[0x3F] > 0x1) { - switch (m_PifRam[0x3F]) { + if ( m_PifRam[0x3F] > 0x1) + { + switch (m_PifRam[0x3F]) + { case 0x02: // format the 'challenge' message into 30 nibbles for X-Scale's CIC code { @@ -173,31 +198,51 @@ void CPifRam::PifRamWrite (void) { memset(m_PifRam,0,0x40); break; default: - if (bShowPifRamErrors()) { g_Notify->DisplayError(L"Unkown PifRam control: %d",m_PifRam[0x3F]); } + if (bShowPifRamErrors()) + { + g_Notify->DisplayError(L"Unkown PifRam control: %d",m_PifRam[0x3F]); + } } return; } - for (CurPos = 0; CurPos < 0x40; CurPos++){ - switch(m_PifRam[CurPos]) { + for (CurPos = 0; CurPos < 0x40; CurPos++) + { + switch (m_PifRam[CurPos]) + { case 0x00: Channel += 1; - if (Channel > 6) { CurPos = 0x40; } + if (Channel > 6) + { + CurPos = 0x40; + } break; case 0xFE: CurPos = 0x40; break; case 0xFF: break; case 0xB4: case 0x56: case 0xB8: break; /* ??? */ default: - if ((m_PifRam[CurPos] & 0xC0) == 0) { - if (Channel < 4) { - if (Controllers[Channel].Present && Controllers[Channel].RawData) { - if (g_Plugins->Control()->ControllerCommand) { g_Plugins->Control()->ControllerCommand(Channel,&m_PifRam[CurPos]); } - } else { + if ((m_PifRam[CurPos] & 0xC0) == 0) + { + if (Channel < 4) + { + if (Controllers[Channel].Present && Controllers[Channel].RawData) + { + if (g_Plugins->Control()->ControllerCommand) + { + g_Plugins->Control()->ControllerCommand(Channel,&m_PifRam[CurPos]); + } + } + else + { ProcessControllerCommand(Channel,&m_PifRam[CurPos]); } - } else if (Channel == 4) { + } + else if (Channel == 4) + { EepromCommand(&m_PifRam[CurPos]); - } else { + } + else + { if (bShowPifRamErrors()) { g_Notify->DisplayError(L"Command on channel 5?"); @@ -205,15 +250,23 @@ void CPifRam::PifRamWrite (void) { } CurPos += m_PifRam[CurPos] + (m_PifRam[CurPos + 1] & 0x3F) + 1; Channel += 1; - } else { - if (bShowPifRamErrors()) { g_Notify->DisplayError(L"Unknown Command in PifRamWrite(%X)",m_PifRam[CurPos]); } + } + else + { + if (bShowPifRamErrors()) + { + g_Notify->DisplayError(L"Unknown Command in PifRamWrite(%X)",m_PifRam[CurPos]); + } CurPos = 0x40; } break; } } m_PifRam[0x3F] = 0; - if (g_Plugins->Control()->ControllerCommand) { g_Plugins->Control()->ControllerCommand(-1,NULL); } + if (g_Plugins->Control()->ControllerCommand) + { + g_Plugins->Control()->ControllerCommand(-1,NULL); + } } void CPifRam::SI_DMA_READ (void) @@ -233,16 +286,24 @@ void CPifRam::SI_DMA_READ (void) PifRamRead(); SI_DRAM_ADDR_REG &= 0xFFFFFFF8; - if ((int)SI_DRAM_ADDR_REG < 0) { + if ((int)SI_DRAM_ADDR_REG < 0) + { int count, RdramPos; RdramPos = (int)SI_DRAM_ADDR_REG; - for (count = 0; count < 0x40; count++, RdramPos++) { - if (RdramPos < 0) { continue; } + for (count = 0; count < 0x40; count++, RdramPos++) + { + if (RdramPos < 0) + { + continue; + } RDRAM[RdramPos ^3] = m_PifRam[count]; } - } else { - _asm { + } + else + { + _asm + { mov edi, dword ptr [SI_DRAM_ADDR_REG] mov edi, dword ptr [edi] add edi, RDRAM @@ -267,13 +328,16 @@ void CPifRam::SI_DMA_READ (void) } } - if (LogOptions.LogPRDMAMemStores) { + if (LogOptions.LogPRDMAMemStores) + { int count; char HexData[100], AsciiData[100], Addon[20]; LogMessage("\tData DMAed to RDRAM:"); LogMessage("\t--------------------"); - for (count = 0; count < 16; count ++ ) { - if ((count % 4) == 0) { + for (count = 0; count < 16; count ++ ) + { + if ((count % 4) == 0) + { sprintf(HexData,"\0"); sprintf(AsciiData,"\0"); } @@ -281,7 +345,8 @@ void CPifRam::SI_DMA_READ (void) m_PifRam[(count << 2) + 0], m_PifRam[(count << 2) + 1], m_PifRam[(count << 2) + 2], m_PifRam[(count << 2) + 3] ); strcat(HexData,Addon); - if (((count + 1) % 4) != 0) { + if (((count + 1) % 4) != 0) + { sprintf(Addon,"-"); strcat(HexData,Addon); } @@ -291,16 +356,20 @@ void CPifRam::SI_DMA_READ (void) m_PifRam[(count << 2) + 2], m_PifRam[(count << 2) + 3] ); strcat(AsciiData,Addon); - if (((count + 1) % 4) == 0) { + if (((count + 1) % 4) == 0) + { LogMessage("\t%s %s",HexData, AsciiData); } } LogMessage(""); } - if (g_System->bDelaySI()) { + if (g_System->bDelaySI()) + { g_SystemTimer->SetTimer(CSystemTimer::SiTimer,0x900,false); - } else { + } + else + { g_Reg->MI_INTR_REG |= MI_INTR_SI; g_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT; g_Reg->CheckInterrupts(); @@ -324,16 +393,24 @@ void CPifRam::SI_DMA_WRITE (void) SI_DRAM_ADDR_REG &= 0xFFFFFFF8; BYTE * RDRAM = g_MMU->Rdram(); - if ((int)SI_DRAM_ADDR_REG < 0) { + if ((int)SI_DRAM_ADDR_REG < 0) + { int count, RdramPos; RdramPos = (int)SI_DRAM_ADDR_REG; - for (count = 0; count < 0x40; count++, RdramPos++) { - if (RdramPos < 0) { m_PifRam[count] = 0; continue; } + for (count = 0; count < 0x40; count++, RdramPos++) + { + if (RdramPos < 0) + { + m_PifRam[count] = 0; continue; + } m_PifRam[count] = RDRAM[RdramPos ^3]; } - } else { - _asm { + } + else + { + _asm + { mov ecx, dword ptr [SI_DRAM_ADDR_REG] mov ecx, dword ptr [ecx] add ecx, RDRAM @@ -358,14 +435,17 @@ void CPifRam::SI_DMA_WRITE (void) } } - if (LogOptions.LogPRDMAMemLoads) { + if (LogOptions.LogPRDMAMemLoads) + { int count; char HexData[100], AsciiData[100], Addon[20]; LogMessage(""); LogMessage("\tData DMAed to the Pif Ram:"); LogMessage("\t--------------------------"); - for (count = 0; count < 16; count ++ ) { - if ((count % 4) == 0) { + for (count = 0; count < 16; count ++ ) + { + if ((count % 4) == 0) + { sprintf(HexData,"\0"); sprintf(AsciiData,"\0"); } @@ -373,7 +453,8 @@ void CPifRam::SI_DMA_WRITE (void) m_PifRam[(count << 2) + 0], m_PifRam[(count << 2) + 1], m_PifRam[(count << 2) + 2], m_PifRam[(count << 2) + 3] ); strcat(HexData,Addon); - if (((count + 1) % 4) != 0) { + if (((count + 1) % 4) != 0) + { sprintf(Addon,"-"); strcat(HexData,Addon); } @@ -383,7 +464,8 @@ void CPifRam::SI_DMA_WRITE (void) m_PifRam[(count << 2) + 2], m_PifRam[(count << 2) + 3] ); strcat(AsciiData,Addon); - if (((count + 1) % 4) == 0) { + if (((count + 1) % 4) == 0) + { LogMessage("\t%s %s",HexData, AsciiData); } } @@ -392,9 +474,12 @@ void CPifRam::SI_DMA_WRITE (void) PifRamWrite(); - if (g_System->bDelaySI()) { + if (g_System->bDelaySI()) + { g_SystemTimer->SetTimer(CSystemTimer::SiTimer,0x900,false); - } else { + } + else + { g_Reg->MI_INTR_REG |= MI_INTR_SI; g_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT; g_Reg->CheckInterrupts(); @@ -405,48 +490,80 @@ void CPifRam::ProcessControllerCommand ( int Control, BYTE * Command) { CONTROL * Controllers = g_Plugins->Control()->PluginControllers(); - switch (Command[2]) { + switch (Command[2]) + { case 0x00: // check case 0xFF: // reset & check ? - if ((Command[1] & 0x80) != 0) { break; } + if ((Command[1] & 0x80) != 0) + { + break; + } if (bShowPifRamErrors()) { - if (Command[0] != 1) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } - if (Command[1] != 3) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } + if (Command[0] != 1) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } + if (Command[1] != 3) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } } - if (Controllers[Control].Present == TRUE) { + if (Controllers[Control].Present == TRUE) + { Command[3] = 0x05; Command[4] = 0x00; - switch ( Controllers[Control].Plugin) { + switch ( Controllers[Control].Plugin) + { case PLUGIN_RUMBLE_PAK: Command[5] = 1; break; case PLUGIN_MEMPAK: Command[5] = 1; break; case PLUGIN_RAW: Command[5] = 1; break; default: Command[5] = 0; break; } - } else { + } + else + { Command[1] |= 0x80; } break; case 0x01: // read controller if (bShowPifRamErrors()) { - if (Command[0] != 1) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } - if (Command[1] != 4) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } + if (Command[0] != 1) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } + if (Command[1] != 4) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } } - if (Controllers[Control].Present == FALSE) { + if (Controllers[Control].Present == FALSE) + { Command[1] |= 0x80; } break; case 0x02: //read from controller pack - if (LogOptions.LogControllerPak) { LogControllerPakData("Read: Before Gettting Results"); } + if (LogOptions.LogControllerPak) + { + LogControllerPakData("Read: Before Gettting Results"); + } if (bShowPifRamErrors()) { - if (Command[0] != 3) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } - if (Command[1] != 33) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } + if (Command[0] != 3) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } + if (Command[1] != 33) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } } - if (Controllers[Control].Present == TRUE) { - DWORD address = ((Command[3] << 8) | Command[4]); - switch (Controllers[Control].Plugin) { + if (Controllers[Control].Present == TRUE) + { + DWORD address = ((Command[3] << 8) | Command[4] & 0xE0); + switch (Controllers[Control].Plugin) + { case PLUGIN_RUMBLE_PAK: memset(&Command[5], (address >= 0x8000 && address < 0x9000) ? 0x80 : 0x00, 0x20); @@ -458,44 +575,70 @@ void CPifRam::ProcessControllerCommand ( int Control, BYTE * Command) memset(&Command[5], 0, 0x20); Command[0x25] = 0; } - } else { + } + else + { Command[1] |= 0x80; } - if (LogOptions.LogControllerPak) { LogControllerPakData("Read: After Gettting Results"); } + if (LogOptions.LogControllerPak) + { + LogControllerPakData("Read: After Gettting Results"); + } break; case 0x03: //write controller pak - if (LogOptions.LogControllerPak) { LogControllerPakData("Write: Before Processing"); } + if (LogOptions.LogControllerPak) + { + LogControllerPakData("Write: Before Processing"); + } if (bShowPifRamErrors()) { - if (Command[0] != 35) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } - if (Command[1] != 1) { g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); } + if (Command[0] != 35) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } + if (Command[1] != 1) + { + g_Notify->DisplayError(L"What am I meant to do with this Controller Command"); + } } - if (Controllers[Control].Present == TRUE) { - DWORD address = ((Command[3] << 8) | Command[4]); - switch (Controllers[Control].Plugin) { + if (Controllers[Control].Present == TRUE) + { + DWORD address = ((Command[3] << 8) | Command[4] & 0xE0 ); + switch (Controllers[Control].Plugin) + { case PLUGIN_MEMPAK: Mempak::WriteTo(Control, address, &Command[5]); break; case PLUGIN_RAW: if (g_Plugins->Control()->ControllerCommand) { g_Plugins->Control()->ControllerCommand(Control, Command); } break; case PLUGIN_RUMBLE_PAK: - if ((address & 0xFFE0) == 0xC000 && g_Plugins->Control()->RumbleCommand != NULL) { + if ((address & 0xFFE0) == 0xC000 && g_Plugins->Control()->RumbleCommand != NULL) + { g_Plugins->Control()->RumbleCommand(Control, *(BOOL *)(&Command[5])); } default: Command[0x25] = Mempak::CalculateCrc(&Command[5]); } - } else { + } + else + { Command[1] |= 0x80; } - if (LogOptions.LogControllerPak) { LogControllerPakData("Write: After Processing"); } + if (LogOptions.LogControllerPak) + { + LogControllerPakData("Write: After Processing"); + } break; default: - if (bShowPifRamErrors()) { g_Notify->DisplayError(L"Unknown ControllerCommand %d",Command[2]); } + if (bShowPifRamErrors()) + { + g_Notify->DisplayError(L"Unknown ControllerCommand %d",Command[2]); + } } } void CPifRam::ReadControllerCommand (int Control, BYTE * Command) { CONTROL * Controllers = g_Plugins->Control()->PluginControllers(); - switch (Command[2]) { + switch (Command[2]) + { case 0x01: // read controller if (Controllers[Control].Present == TRUE) { @@ -508,15 +651,19 @@ void CPifRam::ReadControllerCommand (int Control, BYTE * Command) { } break; case 0x02: //read from controller pack - if (Controllers[Control].Present == TRUE) { - switch (Controllers[Control].Plugin) { + if (Controllers[Control].Present == TRUE) + { + switch (Controllers[Control].Plugin) + { case PLUGIN_RAW: if (g_Plugins->Control()->ReadController) { g_Plugins->Control()->ReadController(Control, Command); } break; } } break; case 0x03: //write controller pak - if (Controllers[Control].Present == TRUE) { - switch (Controllers[Control].Plugin) { + if (Controllers[Control].Present == TRUE) + { + switch (Controllers[Control].Plugin) + { case PLUGIN_RAW: if (g_Plugins->Control()->ReadController) { g_Plugins->Control()->ReadController(Control, Command); } break; } } @@ -532,8 +679,10 @@ void CPifRam::LogControllerPakData (char * Description) char HexData[100], AsciiData[100], Addon[20]; LogMessage("\t%s:",Description); LogMessage("\t------------------------------"); - for (count = 0; count < 16; count ++ ) { - if ((count % 4) == 0) { + for (count = 0; count < 16; count ++ ) + { + if ((count % 4) == 0) + { sprintf(HexData,"\0"); sprintf(AsciiData,"\0"); } @@ -541,22 +690,28 @@ void CPifRam::LogControllerPakData (char * Description) PIF_Ram[(count << 2) + 0], PIF_Ram[(count << 2) + 1], PIF_Ram[(count << 2) + 2], PIF_Ram[(count << 2) + 3] ); strcat(HexData,Addon); - if (((count + 1) % 4) != 0) { + if (((count + 1) % 4) != 0) + { sprintf(Addon,"-"); strcat(HexData,Addon); } Addon[0] = 0; - for (count2 = 0; count2 < 4; count2++) { - if (PIF_Ram[(count << 2) + count2] < 30) { + for (count2 = 0; count2 < 4; count2++) + { + if (PIF_Ram[(count << 2) + count2] < 30) + { strcat(Addon,"."); - } else { + } + else + { sprintf(Addon,"%s%c",Addon,PIF_Ram[(count << 2) + count2]); } } strcat(AsciiData,Addon); - if (((count + 1) % 4) == 0) { + if (((count + 1) % 4) == 0) + { LogMessage("\t%s %s",HexData, AsciiData); } } diff --git a/Source/Project64/N64 System/Mips/Pif Ram.h b/Source/Project64/N64 System/Mips/Pif Ram.h index c10dcc218..919db7329 100644 --- a/Source/Project64/N64 System/Mips/Pif Ram.h +++ b/Source/Project64/N64 System/Mips/Pif Ram.h @@ -16,7 +16,10 @@ protected: CPifRamSettings(); virtual ~CPifRamSettings(); - inline bool bShowPifRamErrors ( void ) const { return m_bShowPifRamErrors; } + inline bool bShowPifRamErrors ( void ) const + { + return m_bShowPifRamErrors; + } private: static void RefreshSettings ( void * ); diff --git a/Source/Project64/N64 System/Mips/Register Class.cpp b/Source/Project64/N64 System/Mips/Register Class.cpp index caf77edd9..fcb779d7f 100644 --- a/Source/Project64/N64 System/Mips/Register Class.cpp +++ b/Source/Project64/N64 System/Mips/Register Class.cpp @@ -80,6 +80,7 @@ CP0registers::CP0registers(DWORD * _CP0) : ERROREPC_REGISTER(_CP0[30]), FAKE_CAUSE_REGISTER(_CP0[32]) { + } Rdram_InterfaceReg::Rdram_InterfaceReg(DWORD * _RdramInterface) : @@ -95,6 +96,7 @@ Rdram_InterfaceReg::Rdram_InterfaceReg(DWORD * _RdramInterface) : RDRAM_ADDR_SELECT_REG(_RdramInterface[8]), RDRAM_DEVICE_MANUF_REG(_RdramInterface[9]) { + } Mips_InterfaceReg::Mips_InterfaceReg(DWORD * _MipsInterface) : @@ -105,6 +107,7 @@ Mips_InterfaceReg::Mips_InterfaceReg(DWORD * _MipsInterface) : MI_INTR_REG(_MipsInterface[2]), MI_INTR_MASK_REG(_MipsInterface[3]) { + } Video_InterfaceReg::Video_InterfaceReg(DWORD * _VideoInterface) : @@ -132,6 +135,7 @@ Video_InterfaceReg::Video_InterfaceReg(DWORD * _VideoInterface) : VI_X_SCALE_REG(_VideoInterface[12]), VI_Y_SCALE_REG(_VideoInterface[13]) { + } AudioInterfaceReg::AudioInterfaceReg(DWORD * _AudioInterface) : @@ -142,6 +146,7 @@ AudioInterfaceReg::AudioInterfaceReg(DWORD * _AudioInterface) : AI_DACRATE_REG(_AudioInterface[4]), AI_BITRATE_REG(_AudioInterface[5]) { + } PeripheralInterfaceReg::PeripheralInterfaceReg(DWORD * PeripheralInterface) : @@ -161,6 +166,7 @@ PeripheralInterfaceReg::PeripheralInterfaceReg(DWORD * PeripheralInterface) : PI_BSD_DOM2_PGS_REG(PeripheralInterface[11]), PI_BSD_DOM2_RLS_REG(PeripheralInterface[12]) { + } RDRAMInt_InterfaceReg::RDRAMInt_InterfaceReg(DWORD * RdramInterface) : @@ -174,6 +180,7 @@ RDRAMInt_InterfaceReg::RDRAMInt_InterfaceReg(DWORD * RdramInterface) : RI_RERROR_REG(RdramInterface[6]), RI_WERROR_REG(RdramInterface[7]) { + } DisplayControlReg::DisplayControlReg(DWORD * _DisplayProcessor) : @@ -186,6 +193,7 @@ DisplayControlReg::DisplayControlReg(DWORD * _DisplayProcessor) : DPC_PIPEBUSY_REG(_DisplayProcessor[6]), DPC_TMEM_REG(_DisplayProcessor[7]) { + } SigProcessor_InterfaceReg::SigProcessor_InterfaceReg(DWORD * _SignalProcessorInterface) : @@ -200,6 +208,7 @@ SigProcessor_InterfaceReg::SigProcessor_InterfaceReg(DWORD * _SignalProcessorInt SP_PC_REG(_SignalProcessorInterface[8]), SP_IBIST_REG(_SignalProcessorInterface[9]) { + } Serial_InterfaceReg::Serial_InterfaceReg(DWORD * SerialInterface) : @@ -208,6 +217,7 @@ Serial_InterfaceReg::Serial_InterfaceReg(DWORD * SerialInterface) : SI_PIF_ADDR_WR64B_REG(SerialInterface[2]), SI_STATUS_REG(SerialInterface[3]) { + } CRegisters::CRegisters(CN64System * System, CSystemEvents * SystemEvents) : @@ -276,23 +286,37 @@ void CRegisters::SetAsCurrentSystem ( void ) void CRegisters::CheckInterrupts ( void ) { - if (!m_System->bFixedAudio() && (CPU_TYPE)g_Settings->LoadDword(Game_CpuType) != CPU_SyncCores) { + if (!m_System->bFixedAudio() && (CPU_TYPE)g_Settings->LoadDword(Game_CpuType) != CPU_SyncCores) + { MI_INTR_REG &= ~MI_INTR_AI; MI_INTR_REG |= (m_AudioIntrReg & MI_INTR_AI); } MI_INTR_REG |= (m_RspIntrReg & MI_INTR_SP); MI_INTR_REG |= (m_GfxIntrReg & MI_INTR_DP); - if ((MI_INTR_MASK_REG & MI_INTR_REG) != 0) { + if ((MI_INTR_MASK_REG & MI_INTR_REG) != 0) + { FAKE_CAUSE_REGISTER |= CAUSE_IP2; - } else { + } + else + { FAKE_CAUSE_REGISTER &= ~CAUSE_IP2; } - if (( STATUS_REGISTER & STATUS_IE ) == 0 ) { return; } - if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) { return; } - if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) { return; } + if (( STATUS_REGISTER & STATUS_IE ) == 0 ) + { + return; + } + if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) + { + return; + } + if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) + { + return; + } - if (( STATUS_REGISTER & FAKE_CAUSE_REGISTER & 0xFF00) != 0) { + if (( STATUS_REGISTER & FAKE_CAUSE_REGISTER & 0xFF00) != 0) + { if (m_FirstInterupt) { m_FirstInterupt = false; @@ -310,37 +334,50 @@ void CRegisters::DoAddressError ( BOOL DelaySlot, DWORD BadVaddr, BOOL FromRead) if (bHaveDebugger()) { g_Notify->DisplayError(L"AddressError"); - if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) + { g_Notify->DisplayError(L"EXL set in AddressError Exception"); } - if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) + { g_Notify->DisplayError(L"ERL set in AddressError Exception"); } } - if (FromRead) { + if (FromRead) + { CAUSE_REGISTER = EXC_RADE; - } else { + } + else + { CAUSE_REGISTER = EXC_WADE; } BAD_VADDR_REGISTER = BadVaddr; - if (DelaySlot) { + if (DelaySlot) + { CAUSE_REGISTER |= CAUSE_BD; EPC_REGISTER = m_PROGRAM_COUNTER - 4; - } else { + } + else + { EPC_REGISTER = m_PROGRAM_COUNTER; } STATUS_REGISTER |= STATUS_EXL; m_PROGRAM_COUNTER = 0x80000180; } -void CRegisters::FixFpuLocations ( void ) { - if ((STATUS_REGISTER & STATUS_FR) == 0) { - for (int count = 0; count < 32; count ++) { +void CRegisters::FixFpuLocations ( void ) +{ + if ((STATUS_REGISTER & STATUS_FR) == 0) + { + for (int count = 0; count < 32; count ++) + { m_FPR_S[count] = &m_FPR[count >> 1].F[count & 1]; m_FPR_D[count] = &m_FPR[count >> 1].D; } - } else { + } + else + { for (int count = 0; count < 32; count ++) { m_FPR_S[count] = &m_FPR[count].F[1]; m_FPR_D[count] = &m_FPR[count].D; @@ -352,19 +389,24 @@ void CRegisters::DoBreakException ( BOOL DelaySlot) { if (bHaveDebugger()) { - if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) + { g_Notify->DisplayError(L"EXL set in Break Exception"); } - if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) + { g_Notify->DisplayError(L"ERL set in Break Exception"); } } CAUSE_REGISTER = EXC_BREAK; - if (DelaySlot) { + if (DelaySlot) + { CAUSE_REGISTER |= CAUSE_BD; EPC_REGISTER = m_PROGRAM_COUNTER - 4; - } else { + } + else + { EPC_REGISTER = m_PROGRAM_COUNTER; } STATUS_REGISTER |= STATUS_EXL; @@ -375,20 +417,28 @@ void CRegisters::DoCopUnusableException ( BOOL DelaySlot, int Coprocessor ) { if (bHaveDebugger()) { - if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) + { g_Notify->DisplayError(L"EXL set in Break Exception"); } - if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) + { g_Notify->DisplayError(L"ERL set in Break Exception"); } } CAUSE_REGISTER = EXC_CPU; - if (Coprocessor == 1) { CAUSE_REGISTER |= 0x10000000; } - if (DelaySlot) { + if (Coprocessor == 1) + { + CAUSE_REGISTER |= 0x10000000; + } + if (DelaySlot) + { CAUSE_REGISTER |= CAUSE_BD; EPC_REGISTER = m_PROGRAM_COUNTER - 4; - } else { + } + else + { EPC_REGISTER = m_PROGRAM_COUNTER; } STATUS_REGISTER |= STATUS_EXL; @@ -398,18 +448,31 @@ void CRegisters::DoCopUnusableException ( BOOL DelaySlot, int Coprocessor ) BOOL CRegisters::DoIntrException ( BOOL DelaySlot ) { - if (( STATUS_REGISTER & STATUS_IE ) == 0 ) { return FALSE; } - if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) { return FALSE; } - if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) { return FALSE; } - if (LogOptions.GenerateLog && LogOptions.LogExceptions && !LogOptions.NoInterrupts) { - LogMessage("%08X: Interupt Generated", m_PROGRAM_COUNTER ); + if (( STATUS_REGISTER & STATUS_IE ) == 0 ) + { + return FALSE; + } + if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) + { + return FALSE; + } + if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) + { + return FALSE; + } + if (LogOptions.GenerateLog && LogOptions.LogExceptions && !LogOptions.NoInterrupts) + { + LogMessage("%08X: Interrupt Generated", m_PROGRAM_COUNTER ); } CAUSE_REGISTER = FAKE_CAUSE_REGISTER; CAUSE_REGISTER |= EXC_INT; - if (DelaySlot) { + if (DelaySlot) + { CAUSE_REGISTER |= CAUSE_BD; EPC_REGISTER = m_PROGRAM_COUNTER - 4; - } else { + } + else + { EPC_REGISTER = m_PROGRAM_COUNTER; } STATUS_REGISTER |= STATUS_EXL; @@ -424,21 +487,29 @@ void CRegisters::DoTLBReadMiss ( BOOL DelaySlot, DWORD BadVaddr ) CONTEXT_REGISTER &= 0xFF80000F; CONTEXT_REGISTER |= (BadVaddr >> 9) & 0x007FFFF0; ENTRYHI_REGISTER = (BadVaddr & 0xFFFFE000); - if ((STATUS_REGISTER & STATUS_EXL) == 0) { - if (DelaySlot) { + if ((STATUS_REGISTER & STATUS_EXL) == 0) + { + if (DelaySlot) + { CAUSE_REGISTER |= CAUSE_BD; EPC_REGISTER = m_PROGRAM_COUNTER - 4; - } else { + } + else + { EPC_REGISTER = m_PROGRAM_COUNTER; } if (g_TLB->AddressDefined(BadVaddr)) { m_PROGRAM_COUNTER = 0x80000180; - } else { + } + else + { m_PROGRAM_COUNTER = 0x80000000; } STATUS_REGISTER |= STATUS_EXL; - } else { + } + else + { if (bHaveDebugger()) { g_Notify->DisplayError(L"TLBMiss - EXL Set\nBadVaddr = %X\nAddress Defined: %s",BadVaddr,g_TLB->AddressDefined(BadVaddr)?"TRUE":"FALSE"); @@ -451,22 +522,26 @@ void CRegisters::DoSysCallException ( BOOL DelaySlot) { if (bHaveDebugger()) { - if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_EXL ) != 0 ) + { g_Notify->DisplayError(L"EXL set in SysCall Exception"); } - if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) { + if (( STATUS_REGISTER & STATUS_ERL ) != 0 ) + { g_Notify->DisplayError(L"ERL set in SysCall Exception"); } } CAUSE_REGISTER = EXC_SYSCALL; - if (DelaySlot) { + if (DelaySlot) + { CAUSE_REGISTER |= CAUSE_BD; EPC_REGISTER = m_PROGRAM_COUNTER - 4; - } else { + } + else + { EPC_REGISTER = m_PROGRAM_COUNTER; } STATUS_REGISTER |= STATUS_EXL; m_PROGRAM_COUNTER = 0x80000180; } - diff --git a/Source/Project64/N64 System/Mips/Register Class.h b/Source/Project64/N64 System/Mips/Register Class.h index d13fb2231..9380aeae6 100644 --- a/Source/Project64/N64 System/Mips/Register Class.h +++ b/Source/Project64/N64 System/Mips/Register Class.h @@ -41,7 +41,8 @@ public: }; //CPO register flags -enum { +enum +{ //Status Register STATUS_IE = 0x00000001, STATUS_EXL = 0x00000002, STATUS_ERL = 0x00000004, STATUS_IP0 = 0x00000100, STATUS_IP1 = 0x00000200, STATUS_IP2 = 0x00000400, @@ -83,7 +84,8 @@ enum { }; //Float point control status register flags -enum { +enum +{ FPCSR_FS = 0x01000000, /* flush denorm to zero */ FPCSR_C = 0x00800000, /* condition bit */ FPCSR_CE = 0x00020000, /* cause: unimplemented operation */ @@ -149,7 +151,8 @@ public: }; //Mips interface flags -enum { +enum +{ MI_MODE_INIT = 0x0080, /* Bit 7: init mode */ MI_MODE_EBUS = 0x0100, /* Bit 8: ebus test mode */ MI_MODE_RDRAM = 0x0200, /* Bit 9: RDRAM reg mode */ @@ -245,7 +248,8 @@ public: DWORD & DPC_TMEM_REG; }; -enum { +enum +{ DPC_CLR_XBUS_DMEM_DMA = 0x0001, /* Bit 0: clear xbus_dmem_dma */ DPC_SET_XBUS_DMEM_DMA = 0x0002, /* Bit 1: set xbus_dmem_dma */ DPC_CLR_FREEZE = 0x0004, /* Bit 2: clear freeze */ @@ -289,7 +293,8 @@ public: DWORD & AI_BITRATE_REG; }; -enum { +enum +{ AI_STATUS_FIFO_FULL = 0x80000000, /* Bit 31: full */ AI_STATUS_DMA_BUSY = 0x40000000, /* Bit 30: busy */ }; @@ -360,7 +365,8 @@ public: }; //Signal Processor interface flags -enum { +enum +{ SP_CLR_HALT = 0x00001, /* Bit 0: clear halt */ SP_SET_HALT = 0x00002, /* Bit 1: set halt */ SP_CLR_BROKE = 0x00004, /* Bit 2: clear broke */ @@ -405,7 +411,8 @@ enum { }; //Peripheral Interface flags -enum { +enum +{ PI_STATUS_DMA_BUSY = 0x01, PI_STATUS_IO_BUSY = 0x02, PI_STATUS_ERROR = 0x04, @@ -430,7 +437,8 @@ public: }; //Serial Interface flags -enum { +enum +{ SI_STATUS_DMA_BUSY = 0x0001, SI_STATUS_RD_BUSY = 0x0002, SI_STATUS_DMA_ERROR = 0x0008, @@ -438,7 +446,8 @@ enum { }; -enum ROUNDING_MODE { +enum ROUNDING_MODE +{ ROUND_NEAR = _RC_NEAR, ROUND_DOWN = _RC_DOWN, ROUND_UP = _RC_UP, diff --git a/Source/Project64/N64 System/Mips/Sram.cpp b/Source/Project64/N64 System/Mips/Sram.cpp index 130a8d13d..df1b389de 100644 --- a/Source/Project64/N64 System/Mips/Sram.cpp +++ b/Source/Project64/N64 System/Mips/Sram.cpp @@ -14,17 +14,20 @@ CSram::CSram ( bool ReadOnly ) : m_hFile(NULL), m_ReadOnly(ReadOnly) { + } CSram::~CSram (void) { - if (m_hFile) { + if (m_hFile) + { CloseHandle(m_hFile); m_hFile = NULL; } } -BOOL CSram::LoadSram (void) { +BOOL CSram::LoadSram (void) +{ CPath FileName; FileName.SetDriveDirectory( g_Settings->LoadString(Directory_NativeSave).c_str()); @@ -47,11 +50,14 @@ BOOL CSram::LoadSram (void) { return true; } -void CSram::DmaFromSram(BYTE * dest, int StartOffset, int len) { +void CSram::DmaFromSram(BYTE * dest, int StartOffset, int len) +{ DWORD dwRead; - if (m_hFile == NULL) { - if (!LoadSram()) { + if (m_hFile == NULL) + { + if (!LoadSram()) + { return; } } @@ -60,14 +66,17 @@ void CSram::DmaFromSram(BYTE * dest, int StartOffset, int len) { } -void CSram::DmaToSram(BYTE * Source, int StartOffset, int len) { +void CSram::DmaToSram(BYTE * Source, int StartOffset, int len) +{ if (m_ReadOnly) { return; } - if (m_hFile == NULL) { - if (!LoadSram()) { + if (m_hFile == NULL) + { + if (!LoadSram()) + { return; } } diff --git a/Source/Project64/N64 System/Mips/System Events.cpp b/Source/Project64/N64 System/Mips/System Events.cpp index 42a4de7f8..d5cf29520 100644 --- a/Source/Project64/N64 System/Mips/System Events.cpp +++ b/Source/Project64/N64 System/Mips/System Events.cpp @@ -10,14 +10,17 @@ ****************************************************************************/ #include "stdafx.h" -CSystemEvents::CSystemEvents(CN64System * System) : +CSystemEvents::CSystemEvents(CN64System * System, CPlugins * Plugins) : m_bDoSomething(false), - m_System(System) + m_System(System), + m_Plugins(Plugins) { + } CSystemEvents::~CSystemEvents() { + } void CSystemEvents::QueueEvent(SystemEvent action) @@ -123,7 +126,9 @@ void CSystemEvents::ExecuteEvents ( void ) break; case SysEvent_GSButtonPressed: if (m_System->m_Cheats.CheatsSlectionChanged()) - m_System->m_Cheats.LoadCheats(false); + { + m_System->m_Cheats.LoadCheats(false, m_Plugins); + } m_System->m_Cheats.ApplyGSButton(g_MMU); break; case SysEvent_PauseCPU_FromMenu: @@ -191,7 +196,7 @@ void CSystemEvents::ExecuteEvents ( void ) } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } diff --git a/Source/Project64/N64 System/Mips/System Events.h b/Source/Project64/N64 System/Mips/System Events.h index 4c202bdac..4c7092c3a 100644 --- a/Source/Project64/N64 System/Mips/System Events.h +++ b/Source/Project64/N64 System/Mips/System Events.h @@ -10,7 +10,8 @@ ****************************************************************************/ #pragma once -enum SystemEvent { +enum SystemEvent +{ SysEvent_ExecuteInterrupt, SysEvent_GSButtonPressed, SysEvent_ResetCPU_Soft, @@ -54,14 +55,17 @@ class CSystemEvents typedef std::vector EventList; protected: - CSystemEvents(CN64System * System); + CSystemEvents(CN64System * System, CPlugins * Plugins); virtual ~CSystemEvents(); public: void ExecuteEvents ( void ); void QueueEvent ( SystemEvent action); - inline const BOOL & DoSomething ( void ) const { return m_bDoSomething; } + inline const BOOL & DoSomething ( void ) const + { + return m_bDoSomething; + } private: CSystemEvents(void); // Disable default constructor @@ -71,6 +75,7 @@ private: void ChangePluginFunc( void ); CN64System * m_System; + CPlugins * m_Plugins; EventList m_Events; BOOL m_bDoSomething; CriticalSection m_CS; diff --git a/Source/Project64/N64 System/Mips/System Timing.cpp b/Source/Project64/N64 System/Mips/System Timing.cpp index 6a54bd85a..b32794c0c 100644 --- a/Source/Project64/N64 System/Mips/System Timing.cpp +++ b/Source/Project64/N64 System/Mips/System Timing.cpp @@ -14,6 +14,7 @@ CSystemTimer::CSystemTimer( int & NextTimer ) : m_NextTimer(NextTimer), m_inFixTimer(false) { + } void CSystemTimer::Reset ( void ) @@ -36,7 +37,7 @@ void CSystemTimer::SetTimer ( TimerType Type, DWORD Cycles, bool bRelative ) { if (Type >= MaxTimer || Type == UnknownTimer) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } UpdateTimers(); @@ -47,10 +48,14 @@ void CSystemTimer::SetTimer ( TimerType Type, DWORD Cycles, bool bRelative ) if (m_TimerDetatils[Type].Active) { m_TimerDetatils[Type].CyclesToTimer += Cycles; //Add to the timer - } else { + } + else + { m_TimerDetatils[Type].CyclesToTimer = (__int64)Cycles - (__int64)m_NextTimer; //replace the new cycles } - } else { + } + else + { m_TimerDetatils[Type].CyclesToTimer = (__int64)Cycles - (__int64)m_NextTimer; //replace the new cycles } FixTimers(); @@ -60,7 +65,7 @@ DWORD CSystemTimer::GetTimer ( TimerType Type ) { if (Type >= MaxTimer || Type == UnknownTimer) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return 0; } if (!m_TimerDetatils[Type].Active) @@ -83,7 +88,7 @@ void CSystemTimer::StopTimer ( TimerType Type ) { if (Type >= MaxTimer || Type == UnknownTimer) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } m_TimerDetatils[Type].Active = false; @@ -168,14 +173,17 @@ void CSystemTimer::TimerDone (void) UpdateTimers(); /* DWORD LastTimer; - if (Profiling) { + if (Profiling) + { LastTimer = StartTimer(Timer_Done); } - if (LogOptions.GenerateLog && LogOptions.LogExceptions && !LogOptions.NoInterrupts) { + if (LogOptions.GenerateLog && LogOptions.LogExceptions && !LogOptions.NoInterrupts) + { LogMessage("%08X: Timer Done (Type: %d CurrentTimer: %d)", *_PROGRAM_COUNTER, m_Current, *_Timer ); } */ - switch (m_Current) { + switch (m_Current) + { case CSystemTimer::CompareTimer: g_Reg->FAKE_CAUSE_REGISTER |= CAUSE_IP7; g_Reg->CheckInterrupts(); @@ -211,10 +219,13 @@ void CSystemTimer::TimerDone (void) break; case CSystemTimer::RspTimer: g_SystemTimer->StopTimer(CSystemTimer::RspTimer); - try { + try + { g_System->RunRSP(); - } catch (...) { - g_Notify->BreakPoint(__FILE__,__LINE__); + } + catch (...) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case CSystemTimer::RSPTimerDlist: @@ -231,10 +242,11 @@ void CSystemTimer::TimerDone (void) g_Audio->BusyTimerDone(); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } //CheckTimer(); - /*if (Profiling) { + /*if (Profiling) + { StartTimer(LastTimer); }*/ } @@ -266,8 +278,14 @@ bool CSystemTimer::SaveAllowed ( void ) } for (int i = 0; i < MaxTimer; i++) { - if (i == CompareTimer) { continue; } - if (i == ViTimer) { continue; } + if (i == CompareTimer) + { + continue; + } + if (i == ViTimer) + { + continue; + } if (m_TimerDetatils[i].Active) { return false; @@ -295,8 +313,16 @@ void CSystemTimer::LoadData ( void * file ) unzReadCurrentFile( file,&TimerDetailsSize,sizeof(TimerDetailsSize)); unzReadCurrentFile( file,&Entries,sizeof(Entries)); - if (TimerDetailsSize != sizeof(TIMER_DETAILS)) { g_Notify->BreakPoint(__FILE__,__LINE__); return; } - if (Entries != sizeof(m_TimerDetatils)/sizeof(m_TimerDetatils[0])) { g_Notify->BreakPoint(__FILE__,__LINE__); return; } + if (TimerDetailsSize != sizeof(TIMER_DETAILS)) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + return; + } + if (Entries != sizeof(m_TimerDetatils)/sizeof(m_TimerDetatils[0])) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); + return; + } unzReadCurrentFile(file,(void *)&m_TimerDetatils,sizeof(m_TimerDetatils)); unzReadCurrentFile(file,(void *)&m_LastUpdate,sizeof(m_LastUpdate)); @@ -338,15 +364,33 @@ void CSystemTimer::RecordDifference( CLog &LogFile, const CSystemTimer& rSystemT bool CSystemTimer::operator == (const CSystemTimer& rSystemTimer) const { - if (m_LastUpdate != rSystemTimer.m_LastUpdate) { return false; } - if (m_NextTimer != rSystemTimer.m_NextTimer) { return false; } - if (m_Current != rSystemTimer.m_Current) { return false; } - if (m_inFixTimer != rSystemTimer.m_inFixTimer) { return false; } + if (m_LastUpdate != rSystemTimer.m_LastUpdate) + { + return false; + } + if (m_NextTimer != rSystemTimer.m_NextTimer) + { + return false; + } + if (m_Current != rSystemTimer.m_Current) + { + return false; + } + if (m_inFixTimer != rSystemTimer.m_inFixTimer) + { + return false; + } for (int i = 0; i < MaxTimer; i++) { - if (m_TimerDetatils[i].Active != rSystemTimer.m_TimerDetatils[i].Active) { return false; } - if (m_TimerDetatils[i].CyclesToTimer != rSystemTimer.m_TimerDetatils[i].CyclesToTimer) { return false; } + if (m_TimerDetatils[i].Active != rSystemTimer.m_TimerDetatils[i].Active) + { + return false; + } + if (m_TimerDetatils[i].CyclesToTimer != rSystemTimer.m_TimerDetatils[i].CyclesToTimer) + { + return false; + } } return true; } diff --git a/Source/Project64/N64 System/Mips/System Timing.h b/Source/Project64/N64 System/Mips/System Timing.h index fcc246739..16d7c17e6 100644 --- a/Source/Project64/N64 System/Mips/System Timing.h +++ b/Source/Project64/N64 System/Mips/System Timing.h @@ -15,7 +15,8 @@ class CSystemTimer { public: - enum TimerType { + enum TimerType + { UnknownTimer, CompareTimer, SoftResetTimer, @@ -30,7 +31,8 @@ public: MaxTimer }; - typedef struct { + typedef struct + { bool Active; __int64 CyclesToTimer; } TIMER_DETAILS; diff --git a/Source/Project64/N64 System/Mips/TLB Class.h b/Source/Project64/N64 System/Mips/TLB Class.h index bc3fdf7f1..f89f2538f 100644 --- a/Source/Project64/N64 System/Mips/TLB Class.h +++ b/Source/Project64/N64 System/Mips/TLB Class.h @@ -24,13 +24,16 @@ class CTLB : protected CSystemRegisters { public: - typedef struct { + typedef struct + { bool EntryDefined; - union { + union + { unsigned long Value; unsigned char A[4]; - struct { + struct + { unsigned zero : 13; unsigned Mask : 12; unsigned zero2 : 7; @@ -38,11 +41,13 @@ public: } PageMask; - union { + union + { unsigned long Value; unsigned char A[4]; - struct { + struct + { unsigned ASID : 8; unsigned Zero : 4; unsigned G : 1; @@ -51,11 +56,13 @@ public: } EntryHi; - union { + union + { unsigned long Value; unsigned char A[4]; - struct { + struct + { unsigned GLOBAL: 1; unsigned V : 1; unsigned D : 1; @@ -66,11 +73,13 @@ public: } EntryLo0; - union { + union + { unsigned long Value; unsigned char A[4]; - struct { + struct + { unsigned GLOBAL: 1; unsigned V : 1; unsigned D : 1; @@ -96,7 +105,10 @@ public: //See if a VAddr has an entry to translate to a PAddr bool AddressDefined ( DWORD VAddr ); - const TLB_ENTRY & TlbEntry ( int Entry) const { return m_tlb[Entry]; } + const TLB_ENTRY & TlbEntry ( int Entry) const + { + return m_tlb[Entry]; + } bool PAddrToVAddr ( DWORD PAddr, DWORD & VAddr, DWORD & Index ); @@ -106,7 +118,8 @@ public: bool operator != (const CTLB& rTLB) const; private: - typedef struct { + typedef struct + { DWORD VSTART; DWORD VEND; DWORD PHYSSTART; diff --git a/Source/Project64/N64 System/Mips/TLB class.cpp b/Source/Project64/N64 System/Mips/TLB class.cpp index 2032c4b20..da02fe4c5 100644 --- a/Source/Project64/N64 System/Mips/TLB class.cpp +++ b/Source/Project64/N64 System/Mips/TLB class.cpp @@ -20,12 +20,14 @@ CTLB::CTLB(CTLB_CB * CallBack ): WriteTrace(TraceTLB,__FUNCTION__ ": Done"); } -CTLB::~CTLB (void) { +CTLB::~CTLB (void) +{ WriteTrace(TraceTLB,__FUNCTION__ ": Start"); WriteTrace(TraceTLB,__FUNCTION__ ": Done"); } -void CTLB::Reset (bool InvalidateTLB) { +void CTLB::Reset (bool InvalidateTLB) +{ DWORD count; for (count = 0; count < 64; count++) @@ -39,7 +41,9 @@ void CTLB::Reset (bool InvalidateTLB) { { m_tlb[count].EntryDefined = false; } - } else { + } + else + { for (count = 0; count < 32; count ++) { SetupTLB_Entry(count,false); @@ -47,10 +51,12 @@ void CTLB::Reset (bool InvalidateTLB) { } } -bool CTLB::AddressDefined ( DWORD VAddr) { +bool CTLB::AddressDefined ( DWORD VAddr) +{ DWORD i; - if (VAddr >= 0x80000000 && VAddr <= 0xBFFFFFFF) { + if (VAddr >= 0x80000000 && VAddr <= 0xBFFFFFFF) + { return true; } @@ -66,7 +72,8 @@ bool CTLB::AddressDefined ( DWORD VAddr) { return false; } -void CTLB::Probe (void) { +void CTLB::Probe (void) +{ int Counter; WriteTrace(TraceTLB,__FUNCTION__ ": Start"); @@ -83,7 +90,8 @@ void CTLB::Probe (void) { DWORD TlbValueMasked = TlbEntryHiValue & Mask; DWORD EntryHiMasked = g_Reg->ENTRYHI_REGISTER & Mask; - if (TlbValueMasked == EntryHiMasked) { + if (TlbValueMasked == EntryHiMasked) + { if ((TlbEntryHiValue & 0x100) != 0 || //Global ((TlbEntryHiValue & 0xFF) == (g_Reg->ENTRYHI_REGISTER & 0xFF))) //SameAsid { @@ -107,13 +115,15 @@ void CTLB::ReadEntry (void) { g_Reg->ENTRYLO1_REGISTER = m_tlb[index].EntryLo1.Value; } -void CTLB::WriteEntry (int index, bool Random) { +void CTLB::WriteEntry (int index, bool Random) +{ int FastIndx; WriteTraceF(TraceTLB,__FUNCTION__ ": %02d %d %08X %08X %08X %08X ",index,Random,g_Reg->PAGE_MASK_REGISTER,g_Reg->ENTRYHI_REGISTER,g_Reg->ENTRYLO0_REGISTER,g_Reg->ENTRYLO1_REGISTER); //Check to see if entry is unmapping it self - if (m_tlb[index].EntryDefined) { + if (m_tlb[index].EntryDefined) + { FastIndx = index << 1; if (*_PROGRAM_COUNTER >= m_FastTlb[FastIndx].VSTART && *_PROGRAM_COUNTER < m_FastTlb[FastIndx].VEND && @@ -134,16 +144,25 @@ void CTLB::WriteEntry (int index, bool Random) { //Reset old addresses if (m_tlb[index].EntryDefined) { - for ( FastIndx = index << 1; FastIndx <= (index << 1) + 1; FastIndx++) { - if (!m_FastTlb[FastIndx].ValidEntry) { continue; } - if (!m_FastTlb[FastIndx].VALID) { continue; } + for ( FastIndx = index << 1; FastIndx <= (index << 1) + 1; FastIndx++) + { + if (!m_FastTlb[FastIndx].ValidEntry) + { + continue; + } + if (!m_FastTlb[FastIndx].VALID) + { + continue; + } if (m_tlb[index].PageMask.Value == g_Reg->PAGE_MASK_REGISTER && m_tlb[index].EntryHi.Value == g_Reg->ENTRYHI_REGISTER) { - if (FastIndx == (index << 1) && m_tlb[index].EntryLo0.Value == g_Reg->ENTRYLO0_REGISTER) { + if (FastIndx == (index << 1) && m_tlb[index].EntryLo0.Value == g_Reg->ENTRYLO0_REGISTER) + { continue; } - if (FastIndx != (index << 1) && m_tlb[index].EntryLo1.Value == g_Reg->ENTRYLO1_REGISTER) { + if (FastIndx != (index << 1) && m_tlb[index].EntryLo1.Value == g_Reg->ENTRYLO1_REGISTER) + { continue; } } @@ -161,9 +180,13 @@ void CTLB::WriteEntry (int index, bool Random) { m_CB->TLB_Changed(); } -void CTLB::SetupTLB_Entry (int index, bool Random) { +void CTLB::SetupTLB_Entry (int index, bool Random) +{ //Fix up Fast TLB entries - if (!m_tlb[index].EntryDefined) { return; } + if (!m_tlb[index].EntryDefined) + { + return; + } int FastIndx = index << 1; if (m_FastTlb[FastIndx].VALID) @@ -201,19 +224,24 @@ void CTLB::SetupTLB_Entry (int index, bool Random) { m_FastTlb[FastIndx].Probed = false; //Test both entries to see if they are valid - for ( FastIndx = index << 1; FastIndx <= (index << 1) + 1; FastIndx++) { - if (!m_FastTlb[FastIndx].VALID) { + for ( FastIndx = index << 1; FastIndx <= (index << 1) + 1; FastIndx++) + { + if (!m_FastTlb[FastIndx].VALID) + { m_FastTlb[FastIndx].ValidEntry = true; continue; } - if (m_FastTlb[FastIndx].VEND <= m_FastTlb[FastIndx].VSTART) { + if (m_FastTlb[FastIndx].VEND <= m_FastTlb[FastIndx].VSTART) + { continue; } - if (m_FastTlb[FastIndx].VSTART >= 0x80000000 && m_FastTlb[FastIndx].VEND <= 0xBFFFFFFF) { + if (m_FastTlb[FastIndx].VSTART >= 0x80000000 && m_FastTlb[FastIndx].VEND <= 0xBFFFFFFF) + { continue; } - if (m_FastTlb[FastIndx].PHYSSTART > 0x1FFFFFFF) { + if (m_FastTlb[FastIndx].PHYSSTART > 0x1FFFFFFF) + { continue; } @@ -227,7 +255,10 @@ bool CTLB::PAddrToVAddr(DWORD PAddr, DWORD & VAddr, DWORD & Index ) { for (int i = Index; i < 64; i++) { - if (m_FastTlb[i].ValidEntry == false) { continue; } + if (m_FastTlb[i].ValidEntry == false) + { + continue; + } if (PAddr >= m_FastTlb[i].PHYSSTART && PAddr < m_FastTlb[i].PHYSEND) { VAddr = m_FastTlb[i].VSTART + (PAddr - m_FastTlb[i].PHYSSTART); @@ -248,7 +279,10 @@ void CTLB::RecordDifference( CLog &LogFile, const CTLB& rTLB) LogFile.LogF("TLB[%d] Defined: %s %s\r\n",i,m_tlb[i].EntryDefined ? "Yes" : "No",rTLB.m_tlb[i].EntryDefined ? "Yes" : "No"); continue; } - if (!m_tlb[i].EntryDefined) { continue; } + if (!m_tlb[i].EntryDefined) + { + continue; + } if (m_tlb[i].PageMask.Value != rTLB.m_tlb[i].PageMask.Value) { LogFile.LogF("TLB[%d] PageMask: %X %X\r\n",i,m_tlb[i].PageMask.Value,rTLB.m_tlb[i].PageMask.Value); @@ -272,8 +306,14 @@ bool CTLB::operator == (const CTLB& rTLB) const { for (int i = 0, n = sizeof(m_tlb)/sizeof(m_tlb[0]); i < n; i++) { - if (m_tlb[i].EntryDefined != rTLB.m_tlb[i].EntryDefined) { return false; } - if (!m_tlb[i].EntryDefined) { continue; } + if (m_tlb[i].EntryDefined != rTLB.m_tlb[i].EntryDefined) + { + return false; + } + if (!m_tlb[i].EntryDefined) + { + continue; + } if (m_tlb[i].PageMask.Value != rTLB.m_tlb[i].PageMask.Value || m_tlb[i].EntryHi.Value != rTLB.m_tlb[i].EntryHi.Value || m_tlb[i].EntryLo0.Value != rTLB.m_tlb[i].EntryLo0.Value || diff --git a/Source/Project64/N64 System/N64 Class.cpp b/Source/Project64/N64 System/N64 Class.cpp index 501d4d755..8f6726406 100644 --- a/Source/Project64/N64 System/N64 Class.cpp +++ b/Source/Project64/N64 System/N64 Class.cpp @@ -15,7 +15,7 @@ #include CN64System::CN64System ( CPlugins * Plugins, bool SavesReadOnly ) : - CSystemEvents(this), + CSystemEvents(this, Plugins), m_SyncPlugins(NULL), m_SyncWindow(NULL), m_Reg(this,this), @@ -51,13 +51,13 @@ CN64System::CN64System ( CPlugins * Plugins, bool SavesReadOnly ) : m_hPauseEvent = CreateEvent(NULL,true,false,NULL); m_Limitor.SetHertz(gameHertz); g_Settings->SaveDword(GameRunning_ScreenHertz,gameHertz); - m_Cheats.LoadPermCheats(Plugins); - m_Cheats.LoadCheats(!g_Settings->LoadDword(Setting_RememberCheats)); + m_Cheats.LoadCheats(!g_Settings->LoadDword(Setting_RememberCheats), Plugins); } CN64System::~CN64System ( void ) { SetActiveSystem(false); + Mempak::Close(); if (m_SyncCPU) { m_SyncCPU->CpuStopped(); @@ -83,7 +83,8 @@ CN64System::~CN64System ( void ) void CN64System::ExternalEvent ( SystemEvent action ) { - switch (action) { + switch (action) + { case SysEvent_Profile_GenerateLogs: case SysEvent_Profile_StartStop: case SysEvent_Profile_ResetLogs: @@ -166,7 +167,7 @@ void CN64System::ExternalEvent ( SystemEvent action ) break; default: WriteTraceF(TraceError,__FUNCTION__ ": Unknown event %d",action); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -190,7 +191,9 @@ bool CN64System::RunFileImage ( const char * FileLoc ) { WriteTrace(TraceDebug,__FUNCTION__ ": Allocating global rom object"); g_Rom = new CN64Rom(); - } else { + } + else + { WriteTrace(TraceDebug,__FUNCTION__ ": Use existing global rom object"); } @@ -213,7 +216,9 @@ bool CN64System::RunFileImage ( const char * FileLoc ) } g_Settings->SaveBool(GameRunning_LoadingInProgress,false); g_Notify->RefreshMenu(); - } else { + } + else + { WriteTraceF(TraceError,__FUNCTION__ ": LoadN64Image failed (\"%s\")",FileLoc); g_Notify->DisplayError(g_Rom->GetError()); delete g_Rom; @@ -260,7 +265,9 @@ bool CN64System::EmulationStarting ( HANDLE hThread, DWORD ThreadId ) sprintf(Message,__FUNCTION__ ": Exception caught\nFile: %s\nLine: %d",__FILE__,__LINE__); MessageBox(NULL,Message,"Exception",MB_OK); } - } else { + } + else + { WriteTrace(TraceError,__FUNCTION__ ": SetActiveSystem failed"); g_Notify->DisplayError(__FUNCTIONW__ L": Failed to Initialize N64 System"); g_Settings->SaveBool(GameRunning_LoadingInProgress,false); @@ -342,7 +349,9 @@ void CN64System::StartEmulation2 ( bool NewThread ) Info->ThreadHandle = hThread; *hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartEmulationThread,Info,0, &Info->ThreadID); - } else { + } + else + { //mark the emulation as starting and fix up menus g_Notify->DisplayMessage(5,MSG_EMULATION_STARTED); @@ -368,7 +377,9 @@ void CN64System::StartEmulation ( bool NewThread ) __try { StartEmulation2(NewThread); - } __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation()) ) { + } + __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation())) + { char Message[600]; sprintf(Message,"Exception caught\nFile: %s\nLine: %d",__FILE__,__LINE__); MessageBox(NULL,Message,"Exception",MB_OK); @@ -441,7 +452,8 @@ void CN64System::SelectCheats ( HWND hParent ) m_Cheats.SelectCheats(hParent,false); } -void CN64System::DisplayRomInfo ( HWND hParent ) { +void CN64System::DisplayRomInfo ( HWND hParent ) +{ if (!g_Rom) { return; } RomInformation Info(g_Rom); @@ -465,7 +477,8 @@ void CN64System::Pause(void) g_Notify->DisplayMessage(5,MSG_CPU_RESUMED); } -stdstr CN64System::ChooseFileToOpen ( HWND hParent ) { +stdstr CN64System::ChooseFileToOpen ( HWND hParent ) +{ OPENFILENAME openfilename; char FileName[_MAX_PATH],Directory[_MAX_PATH]; @@ -482,7 +495,8 @@ stdstr CN64System::ChooseFileToOpen ( HWND hParent ) { openfilename.nMaxFile = MAX_PATH; openfilename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; - if (GetOpenFileName (&openfilename)) { + if (GetOpenFileName (&openfilename)) + { return stdstr(FileName); } return stdstr(""); @@ -572,7 +586,9 @@ void CN64System::Reset (bool bInitReg, bool ClearMenory) { memcpy((m_MMU_VM.Dmem()+0x40), (g_Rom->GetRomAddress() + 0x040), 0xFBC); } - } else { + } + else + { m_Reg.Reset(); } @@ -643,7 +659,9 @@ bool CN64System::SetActiveSystem( bool bActive ) m_bInitilized = true; bInitPlugin = true; } - } else { + } + else + { if (this == g_BaseSystem) { g_System = NULL; @@ -724,11 +742,13 @@ void CN64System::InitRegisters( bool bPostPif, CMipsMemory & MMU ) m_Reg.m_GPR[29].DW=0xFFFFFFFFA4001FF0; m_Reg.m_GPR[30].DW=0x0000000000000000; - switch (g_Rom->GetCountry()) { + switch (g_Rom->GetCountry()) + { case Germany: case french: case Italian: case Europe: case Spanish: case Australia: case X_PAL: case Y_PAL: - switch (g_Rom->CicChipID()) { + switch (g_Rom->CicChipID()) + { case CIC_UNKNOWN: case CIC_NUS_6102: m_Reg.m_GPR[5].DW=0xFFFFFFFFC0F1D859; @@ -752,14 +772,14 @@ void CN64System::InitRegisters( bool bPostPif, CMipsMemory & MMU ) m_Reg.m_GPR[24].DW=0x0000000000000002; break; } - m_Reg.m_GPR[20].DW=0x0000000000000000; m_Reg.m_GPR[23].DW=0x0000000000000006; m_Reg.m_GPR[31].DW=0xFFFFFFFFA4001554; break; case NTSC_BETA: case X_NTSC: case USA: case Japan: default: - switch (g_Rom->CicChipID()) { + switch (g_Rom->CicChipID()) + { case CIC_UNKNOWN: case CIC_NUS_6102: m_Reg.m_GPR[5].DW=0xFFFFFFFFC95973D5; @@ -784,7 +804,8 @@ void CN64System::InitRegisters( bool bPostPif, CMipsMemory & MMU ) m_Reg.m_GPR[31].DW=0xFFFFFFFFA4001550; } - switch (g_Rom->CicChipID()) { + switch (g_Rom->CicChipID()) + { case CIC_NUS_6101: m_Reg.m_GPR[22].DW=0x000000000000003F; break; @@ -841,7 +862,9 @@ void CN64System::InitRegisters( bool bPostPif, CMipsMemory & MMU ) m_Reg.m_GPR[25].DW=0x00000000465E3F72; break; } - } else { + } + else + { m_Reg.m_PROGRAM_COUNTER = 0xBFC00000; /* PIF_Ram[36] = 0x00; PIF_Ram[39] = 0x3F; //common pif ram start values @@ -872,7 +895,8 @@ void CN64System::ExecuteCPU ( void ) m_SyncCPU->m_Plugins->RomOpened(); } - switch ((CPU_TYPE)g_Settings->LoadDword(Game_CpuType)) { + switch ((CPU_TYPE)g_Settings->LoadDword(Game_CpuType)) + { case CPU_Recompiler: ExecuteRecompiler(); break; case CPU_SyncCores: ExecuteSyncCPU(); break; default: ExecuteInterpret(); break; @@ -886,7 +910,8 @@ void CN64System::ExecuteCPU ( void ) } } -void CN64System::ExecuteInterpret () { +void CN64System::ExecuteInterpret () +{ SetActiveSystem(); CInterpreterCPU::ExecuteCPU(); } @@ -917,7 +942,8 @@ void CN64System::CpuStopped ( void ) g_Notify->RefreshMenu(); g_Notify->MakeWindowOnTop(false); g_Notify->DisplayMessage(5,MSG_EMULATION_ENDED); - if (g_Settings->LoadDword(RomBrowser_Enabled)) { + if (g_Settings->LoadDword(RomBrowser_Enabled)) + { g_Notify->ShowRomBrowser(); } } @@ -927,7 +953,8 @@ void CN64System::CpuStopped ( void ) } } -void CN64System::UpdateSyncCPU (CN64System * const SecondCPU, DWORD const Cycles) { +void CN64System::UpdateSyncCPU (CN64System * const SecondCPU, DWORD const Cycles) +{ int CyclesToExecute = Cycles - m_CyclesToSkip; //Update the number of cycles to skip @@ -949,7 +976,8 @@ void CN64System::SyncCPUPC (CN64System * const SecondCPU) bool ErrorFound = false; g_SystemTimer->UpdateTimers(); - if (m_Reg.m_PROGRAM_COUNTER != SecondCPU->m_Reg.m_PROGRAM_COUNTER) { + if (m_Reg.m_PROGRAM_COUNTER != SecondCPU->m_Reg.m_PROGRAM_COUNTER) + { ErrorFound = true; } @@ -959,7 +987,8 @@ void CN64System::SyncCPUPC (CN64System * const SecondCPU) if (ErrorFound) { DumpSyncErrors(SecondCPU); } - for (int i = (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])) - 1; i > 0; i--) { + for (int i = (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])) - 1; i > 0; i--) + { m_LastSuccessSyncPC[i] = m_LastSuccessSyncPC[i - 1]; } m_LastSuccessSyncPC[0] = m_Reg.m_PROGRAM_COUNTER; @@ -978,31 +1007,42 @@ void CN64System::SyncCPU (CN64System * const SecondCPU) ErrorFound = true; } #endif - if (m_Reg.m_PROGRAM_COUNTER != SecondCPU->m_Reg.m_PROGRAM_COUNTER) { + if (m_Reg.m_PROGRAM_COUNTER != SecondCPU->m_Reg.m_PROGRAM_COUNTER) + { ErrorFound = true; } if (b32BitCore()) { - for (int count = 0; count < 32; count ++) { - if (m_Reg.m_GPR[count].W[0] != SecondCPU->m_Reg.m_GPR[count].W[0]) { + for (int count = 0; count < 32; count ++) + { + if (m_Reg.m_GPR[count].W[0] != SecondCPU->m_Reg.m_GPR[count].W[0]) + { ErrorFound = true; } - if (m_Reg.m_FPR[count].DW != SecondCPU->m_Reg.m_FPR[count].DW) { + if (m_Reg.m_FPR[count].DW != SecondCPU->m_Reg.m_FPR[count].DW) + { ErrorFound = true; } - if (m_Reg.m_CP0[count] != SecondCPU->m_Reg.m_CP0[count]) { + if (m_Reg.m_CP0[count] != SecondCPU->m_Reg.m_CP0[count]) + { ErrorFound = true; } } - } else { - for (int count = 0; count < 32; count ++) { - if (m_Reg.m_GPR[count].DW != SecondCPU->m_Reg.m_GPR[count].DW) { + } + else + { + for (int count = 0; count < 32; count ++) + { + if (m_Reg.m_GPR[count].DW != SecondCPU->m_Reg.m_GPR[count].DW) + { ErrorFound = true; } - if (m_Reg.m_FPR[count].DW != SecondCPU->m_Reg.m_FPR[count].DW) { + if (m_Reg.m_FPR[count].DW != SecondCPU->m_Reg.m_FPR[count].DW) + { ErrorFound = true; } - if (m_Reg.m_CP0[count] != SecondCPU->m_Reg.m_CP0[count]) { + if (m_Reg.m_CP0[count] != SecondCPU->m_Reg.m_CP0[count]) + { ErrorFound = true; } } @@ -1076,12 +1116,13 @@ void CN64System::SyncCPU (CN64System * const SecondCPU) if (ErrorFound) { DumpSyncErrors(SecondCPU); } - for (int i = (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])) - 1; i > 0; i--) { + for (int i = (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])) - 1; i > 0; i--) + { m_LastSuccessSyncPC[i] = m_LastSuccessSyncPC[i - 1]; } m_LastSuccessSyncPC[0] = m_Reg.m_PROGRAM_COUNTER; // if (PROGRAM_COUNTER == 0x8009BBD8) { -// g_Notify->BreakPoint(__FILE__,__LINE__); +// g_Notify->BreakPoint(__FILEW__,__LINE__); // } } @@ -1095,7 +1136,8 @@ void CN64System::SyncSystemPC() SyncCPUPC(g_SyncSystem); } -void CN64System::DumpSyncErrors (CN64System * SecondCPU) { +void CN64System::DumpSyncErrors (CN64System * SecondCPU) +{ int count; { @@ -1117,7 +1159,8 @@ void CN64System::DumpSyncErrors (CN64System * SecondCPU) { } if (b32BitCore()) { - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { if (m_Reg.m_GPR[count].UW[0] != SecondCPU->m_Reg.m_GPR[count].UW[0]) { Error.LogF("GPR[%s] 0x%08X%08X, 0x%08X%08X\r\n",CRegName::GPR[count], @@ -1125,38 +1168,50 @@ void CN64System::DumpSyncErrors (CN64System * SecondCPU) { SecondCPU->m_Reg.m_GPR[count].W[1],SecondCPU->m_Reg.m_GPR[count].W[0]); } } - } else { - for (count = 0; count < 32; count ++) { - if (m_Reg.m_GPR[count].DW != SecondCPU->m_Reg.m_GPR[count].DW) { + } + else + { + for (count = 0; count < 32; count ++) + { + if (m_Reg.m_GPR[count].DW != SecondCPU->m_Reg.m_GPR[count].DW) + { Error.LogF("GPR[%s] 0x%08X%08X, 0x%08X%08X\r\n",CRegName::GPR[count], m_Reg.m_GPR[count].W[1],m_Reg.m_GPR[count].W[0], SecondCPU->m_Reg.m_GPR[count].W[1],SecondCPU->m_Reg.m_GPR[count].W[0]); } } } - for (count = 0; count < 32; count ++) { - if (m_Reg.m_FPR[count].DW != SecondCPU->m_Reg.m_FPR[count].DW) { + for (count = 0; count < 32; count ++) + { + if (m_Reg.m_FPR[count].DW != SecondCPU->m_Reg.m_FPR[count].DW) + { Error.LogF("FPR[%s] 0x%08X%08X, 0x%08X%08X\r\n",CRegName::FPR[count], m_Reg.m_FPR[count].W[1],m_Reg.m_FPR[count].W[0], SecondCPU->m_Reg.m_FPR[count].W[1],SecondCPU->m_Reg.m_FPR[count].W[0]); } } - for (count = 0; count < 32; count ++) { - if (m_Reg.m_FPCR[count] != SecondCPU->m_Reg.m_FPCR[count]) { + for (count = 0; count < 32; count ++) + { + if (m_Reg.m_FPCR[count] != SecondCPU->m_Reg.m_FPCR[count]) + { Error.LogF("FPCR[%s] 0x%08X, 0x%08X\r\n",CRegName::FPR_Ctrl[count], m_Reg.m_FPCR[count], SecondCPU->m_Reg.m_FPCR[count]); } } - for (count = 0; count < 32; count ++) { - if (m_Reg.m_CP0[count] != SecondCPU->m_Reg.m_CP0[count]) { + for (count = 0; count < 32; count ++) + { + if (m_Reg.m_CP0[count] != SecondCPU->m_Reg.m_CP0[count]) + { Error.LogF("CP0[%s] 0x%08X, 0x%08X\r\n",CRegName::Cop0[count], m_Reg.m_CP0[count], SecondCPU->m_Reg.m_CP0[count]); } } - if (m_Reg.m_HI.DW != SecondCPU->m_Reg.m_HI.DW) { + if (m_Reg.m_HI.DW != SecondCPU->m_Reg.m_HI.DW) + { Error.LogF("HI Reg 0x%08X%08X, 0x%08X%08X\r\n",m_Reg.m_HI.UW[1],m_Reg.m_HI.UW[0],SecondCPU->m_Reg.m_HI.UW[1],SecondCPU->m_Reg.m_HI.UW[0]); } - if (m_Reg.m_LO.DW != SecondCPU->m_Reg.m_LO.DW) { + if (m_Reg.m_LO.DW != SecondCPU->m_Reg.m_LO.DW) + { Error.LogF("LO Reg 0x%08X%08X, 0x%08X%08X\r\n",m_Reg.m_LO.UW[1],m_Reg.m_LO.UW[0], SecondCPU->m_Reg.m_LO.UW[1],SecondCPU->m_Reg.m_LO.UW[0]); } for (int i = 0, n = sizeof(m_Reg.m_Mips_Interface) / sizeof(m_Reg.m_Mips_Interface[0]); i < n; i ++) @@ -1232,35 +1287,41 @@ void CN64System::DumpSyncErrors (CN64System * SecondCPU) { Error.LogF("Current Timer,0x%X\r\n",m_NextTimer); Error.LogF("Timer Type,0x%X\r\n",m_SystemTimer.CurrentType()); Error.Log("\r\n"); - for (int i = 0; i < (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])); i++) { + for (int i = 0; i < (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])); i++) + { Error.LogF("LastSuccessSyncPC[%d],0x%X\r\n",i,m_LastSuccessSyncPC[i]); } Error.Log("\r\n"); - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { Error.LogF("GPR[%s], 0x%08X%08X, 0x%08X%08X\r\n",CRegName::GPR[count], m_Reg.m_GPR[count].W[1],m_Reg.m_GPR[count].W[0], SecondCPU->m_Reg.m_GPR[count].W[1],SecondCPU->m_Reg.m_GPR[count].W[0]); } Error.Log("\r\n"); - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { Error.LogF("FPR[%s],%*s0x%08X%08X, 0x%08X%08X\r\n",CRegName::FPR[count], count < 10 ? 9 : 8," ",m_Reg.m_FPR[count].W[1],m_Reg.m_FPR[count].W[0], SecondCPU->m_Reg.m_FPR[count].W[1],SecondCPU->m_Reg.m_FPR[count].W[0]); } Error.Log("\r\n"); - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { Error.LogF("FPR_S[%s],%*s%f, %f\r\n",CRegName::FPR[count], count < 10 ? 7 : 6," ",*(m_Reg.m_FPR_S[count]),*(SecondCPU->m_Reg.m_FPR_S[count])); } Error.Log("\r\n"); - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { Error.LogF("FPR_D[%s],%*s%f, %f\r\n",CRegName::FPR[count], count < 10 ? 7 : 6," ",*(m_Reg.m_FPR_D[count]),*(SecondCPU->m_Reg.m_FPR_D[count])); } Error.Log("\r\n"); Error.LogF("Rounding Model, 0x%08X, 0x%08X\r\n",m_Reg.m_RoundingModel,SecondCPU->m_Reg.m_RoundingModel); Error.Log("\r\n"); - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { Error.LogF("CP0[%s],%*s0x%08X, 0x%08X\r\n",CRegName::Cop0[count], 12 - strlen(CRegName::Cop0[count]),"", m_Reg.m_CP0[count],SecondCPU->m_Reg.m_CP0[count]); @@ -1271,7 +1332,8 @@ void CN64System::DumpSyncErrors (CN64System * SecondCPU) { Error.LogF("LO 0x%08X%08X, 0x%08X%08X\r\n",m_Reg.m_LO.UW[1],m_Reg.m_LO.UW[0], SecondCPU->m_Reg.m_LO.UW[1],SecondCPU->m_Reg.m_LO.UW[0]); bool bHasTlb = false; - for (count = 0; count < 32; count ++) { + for (count = 0; count < 32; count ++) + { if (!m_TLB.TlbEntry(count).EntryDefined) { continue; } if (!bHasTlb) { @@ -1309,7 +1371,7 @@ void CN64System::DumpSyncErrors (CN64System * SecondCPU) { } g_Notify->DisplayError(L"Sync Error"); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); // AddEvent(CloseCPU); } @@ -1325,9 +1387,12 @@ bool CN64System::SaveState(void) if (CurrentSaveName.empty()) { int Slot = g_Settings->LoadDword(Game_CurrentSaveState); - if (Slot != 0) { + if (Slot != 0) + { CurrentSaveName.Format("%s.pj%d",g_Settings->LoadString(Game_GoodName).c_str(), Slot); - } else { + } + else + { CurrentSaveName.Format("%s.pj",g_Settings->LoadString(Game_GoodName).c_str()); } FileName.Format("%s%s",g_Settings->LoadString(Directory_InstantSave).c_str(),CurrentSaveName.c_str()); @@ -1340,11 +1405,14 @@ bool CN64System::SaveState(void) ExtraInfoFileName.Format("%s.dat",CurrentSaveName.c_str()); //If ziping save add .zip on the end - if (g_Settings->LoadDword(Setting_AutoZipInstantSave)) { + if (g_Settings->LoadDword(Setting_AutoZipInstantSave)) + { FileName = ZipFileName; } g_Settings->SaveDword(Game_LastSaveSlot,g_Settings->LoadDword(Game_CurrentSaveState)); - } else { + } + else + { FileName.Format("%s%s",CurrentSaveName.c_str(), g_Settings->LoadDword(Setting_AutoZipInstantSave) ? ".pj.zip" : ".pj"); ExtraInfoFileName.Format("%s.dat",FileName.c_str()); } @@ -1363,7 +1431,8 @@ bool CN64System::SaveState(void) DWORD RdramSize = g_Settings->LoadDword(Game_RDRamSize); DWORD MiInterReg = g_Reg->MI_INTR_REG; DWORD NextViTimer = m_SystemTimer.GetTimer(CSystemTimer::ViTimer); - if (g_Settings->LoadDword(Setting_AutoZipInstantSave)) { + if (g_Settings->LoadDword(Setting_AutoZipInstantSave)) + { zipFile file; file = zipOpen(FileName.c_str(),0); @@ -1401,10 +1470,13 @@ bool CN64System::SaveState(void) zipCloseFileInZip(file); zipClose(file,""); - } else { + } + else + { HANDLE hSaveFile = CreateFile(FileName.c_str(),GENERIC_WRITE | GENERIC_READ, FILE_SHARE_READ, NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL); - if (hSaveFile == INVALID_HANDLE_VALUE) { + if (hSaveFile == INVALID_HANDLE_VALUE) + { g_Notify->DisplayError(GS(MSG_FAIL_OPEN_SAVE)); m_Reg.MI_INTR_REG = MiInterReg; return true; @@ -1446,7 +1518,7 @@ bool CN64System::SaveState(void) CPath SavedFileName(FileName); - g_Notify->DisplayMessage(5,L"%s %s",SaveMessage.c_str(),SavedFileName.GetNameExtension().c_str()); + g_Notify->DisplayMessage(5,L"%s %s",SaveMessage.c_str(),SavedFileName.GetNameExtension().ToUTF16().c_str()); g_Notify->RefreshMenu(); WriteTrace(TraceDebug,__FUNCTION__ ": Done"); return true; @@ -1464,9 +1536,12 @@ bool CN64System::LoadState(void) CPath FileName; FileName.SetDriveDirectory(g_Settings->LoadString(Directory_InstantSave).c_str()); - if (g_Settings->LoadDword(Game_CurrentSaveState) != 0) { + if (g_Settings->LoadDword(Game_CurrentSaveState) != 0) + { FileName.SetNameExtension(stdstr_f("%s.pj%d",g_Settings->LoadString(Game_GoodName).c_str(),g_Settings->LoadDword(Game_CurrentSaveState)).c_str()); - } else { + } + else + { FileName.SetNameExtension(stdstr_f("%s.pj",g_Settings->LoadString(Game_GoodName).c_str()).c_str()); } @@ -1482,17 +1557,21 @@ bool CN64System::LoadState(void) } //Use old file Name - if (g_Settings->LoadDword(Game_CurrentSaveState) != 0) { + if (g_Settings->LoadDword(Game_CurrentSaveState) != 0) + { FileName.SetNameExtension(stdstr_f("%s.pj%d",g_Settings->LoadString(Game_GameName).c_str(),g_Settings->LoadDword(Game_CurrentSaveState)).c_str()); - } else { + } + else + { FileName.SetNameExtension(stdstr_f("%s.pj",g_Settings->LoadString(Game_GameName).c_str()).c_str()); } return LoadState(FileName); } -bool CN64System::LoadState(LPCSTR FileName) { +bool CN64System::LoadState(LPCSTR FileName) +{ DWORD dwRead, Value,SaveRDRAMSize, NextVITimer = 0; - bool LoadedZipFile = false; + bool LoadedZipFile = false, AudioResetOnLoad; WriteTraceF((TraceType)(TraceDebug | TraceRecompiler),__FUNCTION__ "(%s): Start",FileName); @@ -1509,7 +1588,8 @@ bool CN64System::LoadState(LPCSTR FileName) { } unzFile file = unzOpen(FileNameStr.c_str()); int port = -1; - if (file != NULL) { + if (file != NULL) + { port = unzGoToFirstFile(file); } DWORD Value; @@ -1599,7 +1679,7 @@ bool CN64System::LoadState(LPCSTR FileName) { OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL); if (hSaveFile == INVALID_HANDLE_VALUE) { - g_Notify->DisplayMessage(5,L"%s %s",GS(MSG_UNABLED_LOAD_STATE),FileNameStr.c_str()); + g_Notify->DisplayMessage(5,L"%s %s",GS(MSG_UNABLED_LOAD_STATE),FileNameStr.ToUTF16().c_str()); return false; } SetFilePointer(hSaveFile,0,NULL,FILE_BEGIN); @@ -1645,7 +1725,15 @@ bool CN64System::LoadState(LPCSTR FileName) { ReadFile( hSaveFile,m_MMU_VM.Imem(),0x1000,&dwRead,NULL); CloseHandle(hSaveFile); } - + + //Fix losing audio in certain games with certain plugins + AudioResetOnLoad = g_Settings->LoadBool(Game_AudioResetOnLoad); + if (AudioResetOnLoad) + { + m_Reg.m_AudioIntrReg |= MI_INTR_AI; + m_Reg.AI_STATUS_REG &= ~AI_STATUS_FIFO_FULL; + } + //Fix Random Register while ((int)m_Reg.RANDOM_REGISTER < (int)m_Reg.WIRED_REGISTER) { @@ -1681,7 +1769,8 @@ bool CN64System::LoadState(LPCSTR FileName) { { if (m_SyncCPU) { - for (int i = 0; i < (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])); i++) { + for (int i = 0; i < (sizeof(m_LastSuccessSyncPC)/sizeof(m_LastSuccessSyncPC[0])); i++) + { m_LastSuccessSyncPC[i] = 0; } m_SyncCPU->SetActiveSystem(true); @@ -1692,7 +1781,7 @@ bool CN64System::LoadState(LPCSTR FileName) { } WriteTrace(TraceDebug,__FUNCTION__ ": 13"); std::wstring LoadMsg = g_Lang->GetString(MSG_LOADED_STATE); - g_Notify->DisplayMessage(5,L"%s %s",LoadMsg.c_str(),CPath(FileNameStr).GetNameExtension().c_str()); + g_Notify->DisplayMessage(5,L"%s %s",LoadMsg.c_str(),CPath(FileNameStr).GetNameExtension().ToUTF16().c_str()); WriteTrace(TraceDebug,__FUNCTION__ ": Done"); return true; } @@ -1716,7 +1805,8 @@ void CN64System::RunRSP ( void ) return; } - switch (Task) { + switch (Task) + { case 1: WriteTrace(TraceRSP, __FUNCTION__ ": *** Display list ***"); m_DlistCount += 1; @@ -1732,7 +1822,8 @@ void CN64System::RunRSP ( void ) break; } - if (bShowDListAListCount()) { + if (bShowDListAListCount()) + { g_Notify->DisplayMessage(0,L"Dlist: %d Alist: %d Unknown: %d",m_DlistCount,m_AlistCount,m_UnknownCount); } if (bShowCPUPer()) @@ -1747,11 +1838,14 @@ void CN64System::RunRSP ( void ) } - __try { + __try + { WriteTrace(TraceRSP, __FUNCTION__ ": do cycles - starting"); g_Plugins->RSP()->DoRspCycles(100); WriteTrace(TraceRSP, __FUNCTION__ ": do cycles - Done"); - } __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation()) ) { + } + __except( g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation()) ) + { WriteTrace(TraceError, __FUNCTION__ ": exception generated"); g_Notify->FatalError(__FUNCTIONW__ L"\nUnknown memory action\n\nEmulation stop"); } @@ -1770,7 +1864,9 @@ void CN64System::RunRSP ( void ) { g_SystemTimer->SetTimer(CSystemTimer::RspTimer,0x200,false); m_RspBroke = false; - } else { + } + else + { m_RspBroke = true; } WriteTrace(TraceRSP, __FUNCTION__ ": check interrupts"); @@ -1805,7 +1901,8 @@ void CN64System::SyncToAudio ( void ) } } -void CN64System::RefreshScreen ( void ) { +void CN64System::RefreshScreen ( void ) +{ SPECIAL_TIMERS CPU_UsageAddr = Timer_None/*, ProfilingAddr = Timer_None*/; DWORD VI_INTR_TIME = 500000; @@ -1813,11 +1910,15 @@ void CN64System::RefreshScreen ( void ) { //if (bProfiling) { ProfilingAddr = m_Profile.StartTimer(Timer_RefreshScreen); } //Calculate how many cycles to next refresh - if (m_Reg.VI_V_SYNC_REG == 0) { + if (m_Reg.VI_V_SYNC_REG == 0) + { VI_INTR_TIME = 500000; - } else { + } + else + { VI_INTR_TIME = (m_Reg.VI_V_SYNC_REG + 1) * ViRefreshRate(); - if ((m_Reg.VI_V_SYNC_REG % 1) != 0) { + if ((m_Reg.VI_V_SYNC_REG % 1) != 0) + { VI_INTR_TIME -= 38; } } @@ -1846,21 +1947,27 @@ void CN64System::RefreshScreen ( void ) { WriteTrace(TraceGfxPlugin,__FUNCTION__ ": Starting"); g_Plugins->Gfx()->UpdateScreen(); WriteTrace(TraceGfxPlugin,__FUNCTION__ ": Done"); - } __except (g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation())) { + } + __except (g_MMU->MemoryFilter( GetExceptionCode(), GetExceptionInformation())) + { WriteTrace(TraceGfxPlugin,__FUNCTION__ ": Exception caught"); WriteTrace(TraceError,__FUNCTION__ ": Exception caught"); } g_MMU->UpdateFieldSerration((m_Reg.VI_STATUS_REG & 0x40) != 0); - if ((bBasicMode() || bLimitFPS() ) && !bSyncToAudio()) { + if ((bBasicMode() || bLimitFPS() ) && !bSyncToAudio()) + { if (bShowCPUPer()) { m_CPU_Usage.StartTimer(Timer_Idel); } DWORD FrameRate; - if (m_Limitor.Timer_Process(&FrameRate) && bDisplayFrameRate()) { + if (m_Limitor.Timer_Process(&FrameRate) && bDisplayFrameRate()) + { m_FPS.DisplayViCounter(FrameRate); m_bCleanFrameBox = true; } - } else if (bDisplayFrameRate()) { + } + else if (bDisplayFrameRate()) + { if (bShowCPUPer()) { m_CPU_Usage.StartTimer(Timer_UpdateFPS); } m_FPS.UpdateViCounter(); m_bCleanFrameBox = true; @@ -1872,7 +1979,8 @@ void CN64System::RefreshScreen ( void ) { m_bCleanFrameBox = false; } - if (bShowCPUPer()) { + if (bShowCPUPer()) + { m_CPU_Usage.StopTimer(); m_CPU_Usage.ShowCPU_Usage(); m_CPU_Usage.StartTimer(CPU_UsageAddr != Timer_None ? CPU_UsageAddr : Timer_R4300 ); @@ -1880,9 +1988,13 @@ void CN64System::RefreshScreen ( void ) { if ((m_Reg.STATUS_REGISTER & STATUS_IE) != 0 ) { if (g_BaseSystem == NULL) + { return; + } if (g_BaseSystem->m_Cheats.CheatsSlectionChanged()) - g_BaseSystem->m_Cheats.LoadCheats(false); + { + g_BaseSystem->m_Cheats.LoadCheats(false, g_BaseSystem->m_Plugins); + } g_BaseSystem->m_Cheats.ApplyCheats(g_MMU); } // if (bProfiling) { m_Profile.StartTimer(ProfilingAddr != Timer_None ? ProfilingAddr : Timer_R4300); } @@ -1893,7 +2005,7 @@ bool CN64System::WriteToProtectedMemory (DWORD Address, int length) WriteTraceF(TraceDebug,__FUNCTION__ ": Address: %X Len: %d",Address,length); if (m_Recomp) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix return m_Recomp->ClearRecompCode_Phys(Address,length,CRecompiler::Remove_ProtectedMem); #endif @@ -1918,5 +2030,4 @@ void CN64System::TLB_Unmaped ( DWORD VAddr, DWORD Len ) void CN64System::TLB_Changed ( void ) { Debug_RefreshTLBWindow(); -} - +} \ No newline at end of file diff --git a/Source/Project64/N64 System/N64 Rom Class.cpp b/Source/Project64/N64 System/N64 Rom Class.cpp index 1e60ac3cc..d64d58b4b 100644 --- a/Source/Project64/N64 System/N64 Rom Class.cpp +++ b/Source/Project64/N64 System/N64 Rom Class.cpp @@ -262,7 +262,7 @@ bool CN64Rom::IsValidRomImage ( BYTE Test[4] ) { return false; } -void CN64Rom::NotificationCB ( LPCSTR Status, CN64Rom * /*_this*/ ) +void CN64Rom::NotificationCB ( LPCWSTR Status, CN64Rom * /*_this*/ ) { g_Notify->DisplayMessage(5,L"%s",Status); } @@ -300,7 +300,9 @@ bool CN64Rom::LoadN64Image ( const char * FileLoc, bool LoadBootCodeOnly ) { { continue; } - if (_stricmp(ZipFile.FileNameIndex(i).c_str(), SubFile) != 0) + stdstr ZipFileName; + ZipFileName.FromUTF16(ZipFile.FileNameIndex(i).c_str()); + if (_stricmp(ZipFileName.c_str(), SubFile) != 0) { continue; } diff --git a/Source/Project64/N64 System/N64 Rom Class.h b/Source/Project64/N64 System/N64 Rom Class.h index c0d357bd8..fde5303b8 100644 --- a/Source/Project64/N64 System/N64 Rom Class.h +++ b/Source/Project64/N64 System/N64 Rom Class.h @@ -31,7 +31,7 @@ class CN64Rom : bool AllocateAndLoadZipImage ( const char * FileLoc, bool LoadBootCodeOnly ); void ByteSwapRom ( void ); void SetError ( LanguageStringID ErrorMsg ); - static void __stdcall NotificationCB ( LPCSTR Status, CN64Rom * _this ); + static void __stdcall NotificationCB ( LPCWSTR Status, CN64Rom * _this ); void CalculateCicChip ( void ); public: diff --git a/Source/Project64/N64 System/Recompiler/Code Block.cpp b/Source/Project64/N64 System/Recompiler/Code Block.cpp index fc96aaeb3..1b9793f78 100644 --- a/Source/Project64/N64 System/Recompiler/Code Block.cpp +++ b/Source/Project64/N64 System/Recompiler/Code Block.cpp @@ -23,7 +23,7 @@ CCodeBlock::CCodeBlock(DWORD VAddrEnter, BYTE * RecompPos) : CCodeSection * baseSection = new CCodeSection(this, VAddrEnter, 0, false); if (baseSection == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } m_Sections.push_back(baseSection); baseSection->AddParent(NULL); @@ -35,7 +35,7 @@ CCodeBlock::CCodeBlock(DWORD VAddrEnter, BYTE * RecompPos) : m_EnterSection = new CCodeSection(this, VAddrEnter, 1, true); if (m_EnterSection == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } baseSection->m_ContinueSection = m_EnterSection; @@ -48,7 +48,9 @@ CCodeBlock::CCodeBlock(DWORD VAddrEnter, BYTE * RecompPos) : m_MemLocation[1] = m_MemLocation[0] + 1; m_MemContents[0] = *m_MemLocation[0]; m_MemContents[1] = *m_MemLocation[1]; - } else { + } + else + { memset(m_MemLocation,0,sizeof(m_MemLocation)); memset(m_MemContents,0,sizeof(m_MemContents)); } @@ -69,7 +71,7 @@ bool CCodeBlock::SetSection ( CCodeSection * & Section, CCodeSection * CurrentSe { if (Section != NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (TargetPC >= ((CurrentPC + 0x1000) & 0xFFFFF000)) @@ -86,7 +88,7 @@ bool CCodeBlock::SetSection ( CCodeSection * & Section, CCodeSection * CurrentSe { if (Section != NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } SectionMap::const_iterator itr = m_SectionMap.find(TargetPC); if (itr != m_SectionMap.end()) @@ -101,7 +103,7 @@ bool CCodeBlock::SetSection ( CCodeSection * & Section, CCodeSection * CurrentSe Section = new CCodeSection(this,TargetPC,m_Sections.size(),LinkAllowed); if (Section == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } m_Sections.push_back(Section); @@ -123,11 +125,11 @@ bool CCodeBlock::SetSection ( CCodeSection * & Section, CCodeSection * CurrentSe } if (SplitSection == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (SplitSection->m_EndPC == (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (SplitSection->m_EndPC >= TargetPC) { @@ -168,7 +170,7 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) if (CurrentSection->m_ContinueSection != NULL && CurrentSection->m_ContinueSection != itr->second) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (CurrentSection->m_ContinueSection == NULL) { @@ -189,7 +191,9 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) } } } - } else { + } + else + { CurrentSection->m_EndSection = true; break; } @@ -200,7 +204,7 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) CurrentSection->m_EndPC = TestPC; if (!AnalyzeInstruction(TestPC, TargetPC, ContinuePC, LikelyBranch, IncludeDelaySlot, EndBlock, PermLoop)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -214,7 +218,7 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) { if (ContinuePC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } continue; } @@ -249,13 +253,13 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) CCodeSection * JumpSection = CurrentSection->m_JumpSection; if (!AnalyzeInstruction(JumpSection->m_EnterPC, BranchTargetPC, BranchContinuePC, BranchLikelyBranch, BranchIncludeDelaySlot, BranchEndBlock, BranchPermLoop)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } if (BranchLikelyBranch || BranchIncludeDelaySlot || BranchPermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -265,13 +269,17 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) CPU_Message(__FUNCTION__ ": Jump End Block"); JumpSection->m_EndSection = true; TargetPC = (DWORD)-1; - } else { + } + else + { JumpSection->SetJumpAddress(TestPC, TargetPC,false); } JumpSection->SetDelaySlot(); SetSection(JumpSection->m_JumpSection,JumpSection,TargetPC,true,TestPC); - } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + } + else + { + g_Notify->BreakPoint(__FILEW__,__LINE__); } } else if (TargetPC != ((DWORD)-1)) @@ -308,7 +316,7 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) } if (CurrentSection == NewSection) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } CurrentSection = NewSection; if (CurrentSection->m_JumpSection != NULL || @@ -331,12 +339,15 @@ bool CCodeBlock::CreateBlockLinkage ( CCodeSection * EnterSection ) { continue; } - if (!CreateBlockLinkage(Section)) { return false; } + if (!CreateBlockLinkage(Section)) + { + return false; + } break; } if (CurrentSection->m_EndPC == (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return true; } @@ -363,8 +374,14 @@ void CCodeBlock::LogSectionInfo ( void ) bool CCodeBlock::AnalyseBlock ( void ) { - if (!g_System->bLinkBlocks()) { return true; } - if (!CreateBlockLinkage(m_EnterSection)) { return false; } + if (!g_System->bLinkBlocks()) + { + return true; + } + if (!CreateBlockLinkage(m_EnterSection)) + { + return false; + } DetermineLoops(); LogSectionInfo(); return true; @@ -380,8 +397,9 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin PermLoop = false; OPCODE Command; - if (!g_MMU->LW_VAddr(PC, Command.Hex)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + if (!g_MMU->LW_VAddr(PC, Command.Hex)) + { + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -419,7 +437,7 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin EndBlock = true; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } break; @@ -432,7 +450,9 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin if (TargetPC == PC + 8) { TargetPC = (DWORD)-1; - } else { + } + else + { if (TargetPC == PC && !DelaySlotEffectsCompare(PC,Command.rs,0)) { PermLoop = true; @@ -447,14 +467,18 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin if (TargetPC == PC + 8) { TargetPC = (DWORD)-1; - } else { + } + else + { if (TargetPC == PC) { if (Command.rs == 0) { TargetPC = (DWORD)-1; EndBlock = true; - } else { + } + else + { if (!DelaySlotEffectsCompare(PC,Command.rs,Command.rt)) { PermLoop = true; @@ -488,7 +512,7 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin EndBlock = true; break; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } break; @@ -509,7 +533,9 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin if (TargetPC == PC + 8) { TargetPC = (DWORD)-1; - } else { + } + else + { if (Command.rs != 0 || Command.rt != 0) { ContinuePC = PC + 8; @@ -529,7 +555,9 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin if (TargetPC == PC + 8) { TargetPC = (DWORD)-1; - } else { + } + else + { if (TargetPC == PC) { if (!DelaySlotEffectsCompare(PC,Command.rs,Command.rt)) @@ -549,7 +577,8 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin default: if ( (Command.rs & 0x10 ) != 0 ) { - switch( Command.funct ) { + switch ( Command.funct ) + { case R4300i_COP0_CO_TLBR: case R4300i_COP0_CO_TLBWI: case R4300i_COP0_CO_TLBWR: case R4300i_COP0_CO_TLBP: break; @@ -557,18 +586,21 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin EndBlock = true; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } - } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + } + else + { + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } break; } break; case R4300i_CP1: - switch (Command.fmt) { + switch (Command.fmt) + { case R4300i_COP1_MF: case R4300i_COP1_DMF: case R4300i_COP1_CF: case R4300i_COP1_MT: case R4300i_COP1_DMT: case R4300i_COP1_CT: case R4300i_COP1_S: case R4300i_COP1_D: case R4300i_COP1_W: case R4300i_COP1_L: @@ -581,10 +613,12 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin if (TargetPC == PC + 8) { TargetPC = (DWORD)-1; - } else { + } + else + { if (TargetPC == PC) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } ContinuePC = PC + 8; IncludeDelaySlot = true; @@ -595,18 +629,18 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin TargetPC = PC + ((short)Command.offset << 2) + 4; if (TargetPC == PC) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } ContinuePC = PC + 8; LikelyBranch = true; IncludeDelaySlot = true; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } break; @@ -658,7 +692,7 @@ bool CCodeBlock::AnalyzeInstruction ( DWORD PC, DWORD & TargetPC, DWORD & Contin EndBlock = true; break; } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } return true; @@ -674,14 +708,21 @@ bool CCodeBlock::Compile() EnterCodeBlock(); - if (g_SyncSystem) { - //if ((DWORD)BlockInfo.CompiledLocation == 0x60A7B73B) { X86BreakPoint(__FILE__,__LINE__); } + if (g_SyncSystem) + { + //if ((DWORD)BlockInfo.CompiledLocation == 0x60A7B73B) + //{ + // X86BreakPoint(__FILEW__,__LINE__); + //} //MoveConstToVariable((DWORD)BlockInfo.CompiledLocation,&CurrentBlock,"CurrentBlock"); } - if (g_System->bLinkBlocks()) { + if (g_System->bLinkBlocks()) + { while (m_EnterSection->GenerateX86Code(NextTest())); - } else { + } + else + { if (!m_EnterSection->GenerateX86Code(NextTest())) { return false; diff --git a/Source/Project64/N64 System/Recompiler/Code Section.cpp b/Source/Project64/N64 System/Recompiler/Code Section.cpp index 6e6832cd0..17bac5041 100644 --- a/Source/Project64/N64 System/Recompiler/Code Section.cpp +++ b/Source/Project64/N64 System/Recompiler/Code Section.cpp @@ -114,7 +114,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg sprintf(String,"Exit_%d",m_BlockInfo->m_ExitInfo.size()); if (x86Jmp == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } x86Jmp(String,0); @@ -168,7 +168,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg { if (LookUpMode() == FuncFind_ChangeMemory) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); // BYTE * Jump, * Jump2; // if (TargetPC >= 0x80000000 && TargetPC < 0xC0000000) { // DWORD pAddr = TargetPC & 0x1FFFFFFF; @@ -289,16 +289,16 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg } break; case CExitInfo::ExitResetRecompCode: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (m_NextInstruction == JUMP || m_NextInstruction == DELAY_SLOT) { - X86BreakPoint(__FILE__,__LINE__); + X86BreakPoint(__FILEW__,__LINE__); } if (g_SyncSystem) { MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem"); } - X86BreakPoint(__FILE__,__LINE__); + X86BreakPoint(__FILEW__,__LINE__); MoveVariableToX86reg(this,"this",x86_ECX); Call_Direct(AddressOf(ResetRecompCode), "ResetRecompCode"); #endif @@ -317,7 +317,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg ExitCodeBlock(); break; case CExitInfo::TLBWriteMiss: - X86BreakPoint(__FILE__,__LINE__); + X86BreakPoint(__FILEW__,__LINE__); ExitCodeBlock(); break; case CExitInfo::DivByZero: @@ -337,7 +337,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg break; default: WriteTraceF(TraceError,__FUNCTION__ ": how did you want to exit on reason (%d) ???",reason); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -358,7 +358,7 @@ void CCodeSection::GenerateSectionLinkage (void) if ((CompilePC() & 0xFFC) == 0xFFC) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix //Handle Fall througth BYTE * Jump = NULL; @@ -591,7 +591,7 @@ void CCodeSection::GenerateSectionLinkage (void) } if (JumpInfo[i]->TargetPC != TargetSection[i]->m_EnterPC) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (TargetSection[i]->m_CompiledLocation == NULL) { @@ -684,19 +684,19 @@ void CCodeSection::SyncRegState ( const CRegInfo & SyncTo ) case CRegInfo::STATE_CONST_64: if (GetMipsReg(i) != SyncTo.GetMipsReg(i)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } continue; case CRegInfo::STATE_CONST_32_SIGN: if (GetMipsRegLo(i) != SyncTo.GetMipsRegLo(i)) { CPU_Message("Value of const is different Reg %d (%s) Value: 0x%08X to 0x%08X",i,CRegName::GPR[i],GetMipsRegLo(i),SyncTo.GetMipsRegLo(i)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } continue; default: CPU_Message("Unhandled Reg state %d\nin SyncRegState",GetMipsRegState(i)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } changed = true; @@ -741,7 +741,7 @@ void CCodeSection::SyncRegState ( const CRegInfo & SyncTo ) break; default: CPU_Message("Do something with states in SyncRegState\nSTATE_MAPPED_64\n%d",GetMipsRegState(i)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); continue; } m_RegWorkingSet.SetMipsRegMapLo(i,Reg); @@ -779,7 +779,7 @@ void CCodeSection::SyncRegState ( const CRegInfo & SyncTo ) CPU_Message("hi %X\nLo %X",GetMipsRegHi(i),GetMipsRegLo(i)); default: CPU_Message("Do something with states in SyncRegState\nSTATE_MAPPED_32_SIGN\n%d",GetMipsRegState(i)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } m_RegWorkingSet.SetMipsRegMapLo(i,Reg); m_RegWorkingSet.SetMipsRegState(i, CRegInfo::STATE_MAPPED_32_SIGN); @@ -807,7 +807,7 @@ void CCodeSection::SyncRegState ( const CRegInfo & SyncTo ) m_RegWorkingSet.SetX86Mapped(GetMipsRegMapLo(i),CRegInfo::NotMapped); } else { CPU_Message("Do something with states in SyncRegState\nSTATE_MAPPED_32_ZERO\n%d",GetMipsRegState(i)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case CRegInfo::STATE_CONST_32_SIGN: @@ -815,13 +815,13 @@ void CCodeSection::SyncRegState ( const CRegInfo & SyncTo ) { CPU_Message("Sign Problems in SyncRegState\nSTATE_MAPPED_32_ZERO"); CPU_Message("%s: %X",CRegName::GPR[i],GetMipsRegLo_S(i)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } MoveConstToX86reg(GetMipsRegLo(i),Reg); break; default: CPU_Message("Do something with states in SyncRegState\nSTATE_MAPPED_32_ZERO\n%d",GetMipsRegState(i)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } m_RegWorkingSet.SetMipsRegMapLo(i,Reg); m_RegWorkingSet.SetMipsRegState(i, SyncTo.GetMipsRegState(i)); @@ -831,7 +831,7 @@ void CCodeSection::SyncRegState ( const CRegInfo & SyncTo ) break; default: CPU_Message("%d - %d reg: %s (%d)",SyncTo.GetMipsRegState(i),GetMipsRegState(i),CRegName::GPR[i],i); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); changed = false; } } @@ -889,7 +889,7 @@ void TestFunc ( void ) TestValue += 1; if (TestValue >= 4) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } }*/ @@ -943,7 +943,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test ) } /*if (m_CompilePC == 0x803245C4) { - X86BreakPoint(__FILE__,__LINE__); + X86BreakPoint(__FILEW__,__LINE__); //m_RegWorkingSet.UnMap_AllFPRs(); }*/ @@ -992,7 +992,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test ) /*if ((m_CompilePC == 0x80263900) && m_NextInstruction == NORMAL) { - X86BreakPoint(__FILE__,__LINE__); + X86BreakPoint(__FILEW__,__LINE__); }*/ /*if ((m_CompilePC >= 0x80325D80 && m_CompilePC <= 0x80325DF0) && m_NextInstruction == NORMAL) @@ -1007,7 +1007,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test ) }*/ /*if ((m_CompilePC == 0x80324E14) && m_NextInstruction == NORMAL) { - X86BreakPoint(__FILE__,__LINE__); + X86BreakPoint(__FILEW__,__LINE__); }*/ /*if (m_CompilePC == 0x80324E18 && m_NextInstruction == NORMAL) @@ -1033,9 +1033,9 @@ bool CCodeSection::GenerateX86Code ( DWORD Test ) /* if (m_CompilePC == 0x803245CC && m_NextInstruction == NORMAL) { //m_RegWorkingSet.UnMap_AllFPRs(); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); //X86HardBreakPoint(); - //X86BreakPoint(__FILE__,__LINE__); + //X86BreakPoint(__FILEW__,__LINE__); //m_RegWorkingSet.UnMap_AllFPRs(); }*/ /*if (m_CompilePC >= 0x80179DC4 && m_CompilePC <= 0x80179DF0 && m_NextInstruction == NORMAL) @@ -1288,7 +1288,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test ) { if (m_NextInstruction == DO_DELAY_SLOT) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_NextInstruction == NORMAL) { @@ -1334,7 +1334,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test ) { if (m_NextInstruction != NORMAL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } m_CompilePC -= 4; m_Cont.RegSet = m_RegWorkingSet; @@ -1405,7 +1405,7 @@ void CCodeSection::SwitchParent(CCodeSection * OldParent, CCodeSection * NewPare if (!bFoundOldParent) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } m_ParentSection.push_back(NewParent); } @@ -1519,7 +1519,7 @@ void CCodeSection::UnlinkParent( CCodeSection * Parent, bool ContinueSection ) CPU_Message(__FUNCTION__ ": Section %d Parent: %d ContinueSection = %s",m_SectionID,Parent->m_SectionID,ContinueSection?"Yes" :"No"); if (Parent->m_ContinueSection == this && Parent->m_JumpSection == this) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } SECTION_LIST::iterator iter = m_ParentSection.begin(); @@ -1557,7 +1557,7 @@ void CCodeSection::UnlinkParent( CCodeSection * Parent, bool ContinueSection ) { if (ParentIter->m_CompiledLocation) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } ParentIter->m_ContinueSection = NULL; } @@ -1566,7 +1566,7 @@ void CCodeSection::UnlinkParent( CCodeSection * Parent, bool ContinueSection ) { if (ParentIter->m_CompiledLocation) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } ParentIter->m_JumpSection = NULL; } @@ -1646,7 +1646,7 @@ bool CCodeSection::InheritParentInfo ( void ) CCodeSection * Parent = *(m_ParentSection.begin()); if (Parent->m_CompiledLocation == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } CJumpInfo * JumpInfo = this == Parent->m_ContinueSection ? &Parent->m_Cont : &Parent->m_Jump; @@ -1687,7 +1687,7 @@ bool CCodeSection::InheritParentInfo ( void ) size_t NoOfCompiledParents = ParentList.size(); if (NoOfCompiledParents == 0) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -1720,7 +1720,7 @@ bool CCodeSection::InheritParentInfo ( void ) } if (FirstParent != -1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } FirstParent = i; } @@ -1750,17 +1750,17 @@ bool CCodeSection::InheritParentInfo ( void ) { if (JumpInfo->RegSet.GetBlockCycleCount() != 0) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (JumpInfo->JumpPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } else { UpdateCounters(m_RegWorkingSet,m_EnterPC < JumpInfo->JumpPC,true); if (JumpInfo->JumpPC == (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_EnterPC <= JumpInfo->JumpPC) { @@ -1844,7 +1844,7 @@ bool CCodeSection::InheritParentInfo ( void ) break; default: CPU_Message("Unknown CPU State(%d) in InheritParentInfo",GetMipsRegState(i2)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } if (IsConst(i2)) { @@ -1859,7 +1859,7 @@ bool CCodeSection::InheritParentInfo ( void ) { Map_GPR_32bit(i2,(GetMipsRegLo(i2) & 0x80000000) != 0,i2); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case CRegInfo::STATE_MAPPED_32_SIGN: @@ -1867,7 +1867,7 @@ bool CCodeSection::InheritParentInfo ( void ) { Map_GPR_32bit(i2,true,i2); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case CRegInfo::STATE_UNKNOWN: @@ -1880,7 +1880,7 @@ bool CCodeSection::InheritParentInfo ( void ) break; default: CPU_Message("Unknown CPU State(%d) in InheritParentInfo",RegSet->GetMipsRegState(i2)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } else if (Is32Bit(i2) && GetMipsRegLo(i2) != RegSet->GetMipsRegLo(i2)) { @@ -1955,13 +1955,13 @@ bool CCodeSection::InheritParentInfo ( void ) case CRegInfo::STATE_CONST_32_SIGN: if (GetMipsRegLo(i2) != RegSet->GetMipsRegLo(i2)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); NeedSync = true; } break; default: WriteTraceF(TraceError,__FUNCTION__ ": Unhandled Reg state %d\nin InheritParentInfo",GetMipsRegState(i2)); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } if (NeedSync == false) { continue; } @@ -1985,7 +1985,7 @@ bool CCodeSection::InheritParentInfo ( void ) } //if (m_EnterPC == 0x8031CE44 && m_SectionID == 6) //{ - // g_Notify->BreakPoint(__FILE__,__LINE__); + // g_Notify->BreakPoint(__FILEW__,__LINE__); //} m_RegWorkingSet = JumpInfo->RegSet; if (m_EnterPC < JumpInfo->JumpPC ) diff --git a/Source/Project64/N64 System/Recompiler/Loop Analysis.cpp b/Source/Project64/N64 System/Recompiler/Loop Analysis.cpp index 1828f7e51..5d47c5fed 100644 --- a/Source/Project64/N64 System/Recompiler/Loop Analysis.cpp +++ b/Source/Project64/N64 System/Recompiler/Loop Analysis.cpp @@ -72,7 +72,7 @@ bool LoopAnalysis::SetupEnterSection ( CCodeSection * Section, bool & bChanged, { bChanged = false; bSkipedSection = false; - if (Section->m_ParentSection.empty()) { g_Notify->BreakPoint(__FILE__,__LINE__); return true; } + if (Section->m_ParentSection.empty()) { g_Notify->BreakPoint(__FILEW__,__LINE__); return true; } CPU_Message(__FUNCTION__ ": Block EnterPC: %X Section ID %d Test: %X Section Test: %X CompiledLocation: %X",m_BlockInfo->VAddrEnter(),Section->m_SectionID,m_Test,Section->m_Test, Section->m_CompiledLocation); @@ -118,7 +118,7 @@ bool LoopAnalysis::SetupEnterSection ( CCodeSection * Section, bool & bChanged, if (bFirstParent) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } RegisterMap::iterator itr = m_EnterRegisters.find(Section->m_SectionID); @@ -169,7 +169,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) do { if (!g_MMU->LW_VAddr(m_PC, m_Command.Hex)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } CPU_Message(" %08X: %s",m_PC,R4300iOpcodeName(m_Command.Hex,m_PC)); @@ -223,7 +223,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) case R4300i_SPECIAL_DSRL32: SPECIAL_DSRL32(); break; case R4300i_SPECIAL_DSRA32: SPECIAL_DSRA32(); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (m_Command.Hex == 0x00000001) { break; } g_Notify->DisplayError(L"Unhandled R4300i OpCode in FillSectionInfo 5\n%s", @@ -243,19 +243,19 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Section->m_Jump.TargetPC != m_PC + ((short)m_Command.offset << 2) + 4 && Section->m_JumpSection != NULL && Section->m_Jump.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_PC == Section->m_Jump.TargetPC) { if (!DelaySlotEffectsCompare(m_PC,m_Command.rs,0) && !Section->m_Jump.PermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } #endif @@ -268,30 +268,30 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Section->m_Jump.TargetPC != m_PC + 4 && Section->m_JumpSection != NULL && Section->m_Jump.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } /*if (Section->m_Jump.TargetPC != m_PC + ((short)m_Command.offset << 2) + 4) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); }*/ if (m_PC == m_PC + ((short)m_Command.offset << 2) + 4) { if (!DelaySlotEffectsCompare(m_PC,m_Command.rs,0) && !Section->m_Jump.PermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } #endif break; case R4300i_REGIMM_BLTZAL: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix m_Reg.GetMipsRegLo(31) = m_PC + 8; m_Reg.SetMipsRegState(31,CRegInfo::STATE_CONST_32_SIGN); @@ -305,7 +305,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) #endif break; case R4300i_REGIMM_BGEZAL: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix m_NextInstruction = DELAY_SLOT; if (m_Reg.IsConst(m_Command.rs)) @@ -343,7 +343,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) #endif break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (m_Command.Hex == 0x0407000D) { break; } g_Notify->DisplayError(L"Unhandled R4300i OpCode in FillSectionInfo 4\n%s", @@ -354,7 +354,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) } break; case R4300i_JAL: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix m_NextInstruction = DELAY_SLOT; m_Reg.GetMipsRegLo(31) = m_PC + 8; @@ -372,11 +372,11 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) #ifdef CHECKED_BUILD if (Section->m_Jump.TargetPC != (m_PC & 0xF0000000) + (m_Command.target << 2)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_PC == Section->m_Jump.TargetPC && !Section->m_Jump.PermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } #endif break; @@ -391,23 +391,23 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } else { if (Section->m_Cont.TargetPC != (DWORD)-1) { - //g_Notify->BreakPoint(__FILE__,__LINE__); + //g_Notify->BreakPoint(__FILEW__,__LINE__); } } if (Section->m_Jump.TargetPC != m_PC + ((short)m_Command.offset << 2) + 4) { - //g_Notify->BreakPoint(__FILE__,__LINE__); + //g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_PC == Section->m_Jump.TargetPC) { if (!DelaySlotEffectsCompare(m_PC,m_Command.rs,m_Command.rt) && !Section->m_Jump.PermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } #endif @@ -424,19 +424,19 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Section->m_Jump.TargetPC != m_PC + ((short)m_Command.offset << 2) + 4 && Section->m_JumpSection != NULL && Section->m_Jump.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_PC == Section->m_Jump.TargetPC) { if (!DelaySlotEffectsCompare(m_PC,m_Command.rs,m_Command.rt) && !Section->m_Jump.PermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } #endif @@ -542,17 +542,17 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_PC == m_PC + ((short)m_Command.offset << 2) + 4) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (!DelaySlotEffectsCompare(m_PC,m_Command.rs,m_Command.rt)) { if (!Section->m_Jump.PermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } #endif @@ -567,15 +567,15 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Section->m_Jump.TargetPC != m_PC + ((short)m_Command.offset << 2) + 4) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_PC == Section->m_Jump.TargetPC) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (!DelaySlotEffectsCompare(m_PC,m_Command.rs,m_Command.rt)) { Section->m_Jump.PermLoop = true; @@ -610,21 +610,21 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Section->m_Jump.TargetPC != m_PC + 4) { - //g_Notify->BreakPoint(__FILE__,__LINE__); + //g_Notify->BreakPoint(__FILEW__,__LINE__); } /*if (Section->m_Jump.TargetPC != m_PC + ((short)m_Command.offset << 2) + 4) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); }*/ if (m_PC == m_PC + ((short)m_Command.offset << 2) + 4) { if (!DelaySlotEffectsCompare(m_PC,m_Command.rs,m_Command.rt) && !Section->m_Jump.PermLoop) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } #endif @@ -699,7 +699,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) { if (m_NextInstruction != NORMAL && m_NextInstruction != END_BLOCK) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } m_NextInstruction = END_BLOCK; SetJumpRegSet(Section,m_Reg); @@ -713,7 +713,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) m_PC += 4; if ((m_PC & 0xFFFFF000) != (m_EnterSection->m_EnterPC & 0xFFFFF000)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case LIKELY_DELAY_SLOT: @@ -731,7 +731,7 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) m_NextInstruction = END_BLOCK; break; case LIKELY_DELAY_SLOT_DONE: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); if (Section->m_CompiledLocation) { } else { @@ -752,9 +752,9 @@ bool LoopAnalysis::CheckLoopRegisterUsage( CCodeSection * Section) if ((m_PC & 0xFFFFF000) != (m_EnterSection->m_EnterPC & 0xFFFFF000)) { if (m_NextInstruction != END_BLOCK && m_NextInstruction != NORMAL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } while (m_NextInstruction != END_BLOCK); @@ -780,7 +780,7 @@ bool LoopAnalysis::SyncRegState ( CRegInfo & RegSet, const CRegInfo& SyncReg ) RegSet.SetMipsRegState(x,CRegInfo::STATE_MODIFIED); bChanged = true; } else if (RegSet.IsConst(x) && RegSet.Is64Bit(x) && RegSet.GetMipsReg_S(x) != SyncReg.GetMipsReg_S(x)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } return bChanged; @@ -872,7 +872,7 @@ void LoopAnalysis::SPECIAL_SRAV ( void ) void LoopAnalysis::SPECIAL_JR ( void ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (m_Reg.IsConst(m_Command.rs)) { Section->m_Jump.TargetPC = m_Reg.GetMipsRegLo(m_Command.rs); @@ -885,7 +885,7 @@ void LoopAnalysis::SPECIAL_JR ( void ) void LoopAnalysis::SPECIAL_JALR ( void ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix m_Reg.GetMipsRegLo(m_Command.rd) = m_PC + 8; m_Reg.SetMipsRegState(m_Command.rd,CRegInfo::STATE_CONST_32_SIGN); @@ -904,12 +904,12 @@ void LoopAnalysis::SPECIAL_SYSCALL ( CCodeSection * Section ) if (Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Section->m_JumpSection != NULL && Section->m_Jump.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } #else Section = Section; @@ -924,12 +924,12 @@ void LoopAnalysis::SPECIAL_BREAK ( CCodeSection * Section ) if (Section->m_ContinueSection != NULL && Section->m_Cont.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Section->m_JumpSection != NULL && Section->m_Jump.TargetPC != (DWORD)-1) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } #else Section = Section; diff --git a/Source/Project64/N64 System/Recompiler/Recompiler Class.cpp b/Source/Project64/N64 System/Recompiler/Recompiler Class.cpp index 757b6d183..9dc1730b0 100644 --- a/Source/Project64/N64 System/Recompiler/Recompiler Class.cpp +++ b/Source/Project64/N64 System/Recompiler/Recompiler Class.cpp @@ -148,7 +148,7 @@ void CRecompiler::RecompilerMain_VirtualTable ( void ) void CRecompiler::RecompilerMain_VirtualTable_validate ( void ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); /* PCCompiledFunc_TABLE * m_FunctionTable = m_Functions.GetFunctionTable(); while(!m_EndEmulation) @@ -159,7 +159,7 @@ void CRecompiler::RecompilerMain_VirtualTable_validate ( void ) //Find Block on hash table if (Info == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (!g_TLB->ValidVaddr(PROGRAM_COUNTER)) { @@ -219,7 +219,7 @@ void CRecompiler::RecompilerMain_VirtualTable_validate ( void ) continue; } } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (!g_TLB->ValidVaddr(PROGRAM_COUNTER)) { @@ -367,7 +367,7 @@ void CRecompiler::RecompilerMain_Lookup( void ) { /*if (bUseTlb()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (!g_TLB->TranslateVaddr(PROGRAM_COUNTER, Addr)) { @@ -480,7 +480,7 @@ void CRecompiler::RecompilerMain_Lookup( void ) continue; } } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix if (Profiling && IndvidualBlock) { static DWORD ProfAddress = 0; @@ -655,7 +655,7 @@ void CRecompiler::RecompilerMain_Lookup_validate_TLB( void ) info = JumpTable()[PhysicalAddr >> 2]; if (info != NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); info = NULL; } continue; @@ -707,7 +707,7 @@ void CRecompiler::ResetRecompCode( bool bAllocate ) void CRecompiler::RecompilerMain_ChangeMemory ( void ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #ifdef tofix DWORD Value, Addr; BYTE * Block; @@ -921,7 +921,7 @@ void CRecompiler::ClearRecompCode_Phys(DWORD Address, int length, REMOVE_REASON int ClearLen = ((length + 3) & ~3); if (Address + ClearLen > g_System->RdramSize()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); ClearLen = g_System->RdramSize() - Address; } WriteTraceF(TraceRecompiler,__FUNCTION__ ": Reseting Jump Table, Addr: %X len: %d",Address,ClearLen); @@ -961,7 +961,7 @@ void CRecompiler::ClearRecompCode_Virt(DWORD Address, int length,REMOVE_REASON R if (DataLeft > 0) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } break; @@ -975,7 +975,7 @@ void CRecompiler::ClearRecompCode_Virt(DWORD Address, int length,REMOVE_REASON R } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -983,7 +983,7 @@ void CRecompiler::ResetMemoryStackPos( void ) { if (g_MMU == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } if (m_Registers.m_GPR[29].UW[0] == 0) @@ -998,6 +998,6 @@ void CRecompiler::ResetMemoryStackPos( void ) m_MemoryStack = (DWORD)(g_MMU->Rdram() + pAddr); } else { WriteTraceF(TraceError,__FUNCTION__ ": Failed to translate SP address (%s)",m_Registers.m_GPR[29].UW[0]); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } diff --git a/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp b/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp index ab2aaf7e2..077ac0c08 100644 --- a/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp +++ b/Source/Project64/N64 System/Recompiler/Recompiler Ops.cpp @@ -161,7 +161,7 @@ void CRecompilerOps::Compile_Branch (CRecompilerOps::BranchFunction CompareFunc, { if (m_Section->m_Jump.LinkLocation != NULL || m_Section->m_Jump.LinkLocation2 != NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } MoveConstToVariable(m_Section->m_Jump.TargetPC,&R4300iOp::m_JumpToLocation,"R4300iOp::m_JumpToLocation"); } @@ -169,7 +169,7 @@ void CRecompilerOps::Compile_Branch (CRecompilerOps::BranchFunction CompareFunc, { if (m_Section->m_Cont.LinkLocation != NULL || m_Section->m_Cont.LinkLocation2 != NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } MoveConstToVariable(m_Section->m_Cont.TargetPC,&R4300iOp::m_JumpToLocation,"R4300iOp::m_JumpToLocation"); } @@ -177,7 +177,7 @@ void CRecompilerOps::Compile_Branch (CRecompilerOps::BranchFunction CompareFunc, if (m_Section->m_Jump.LinkLocation != NULL || m_Section->m_Jump.LinkLocation2 != NULL) { JmpLabel8("DoDelaySlot",0); - if (DelayLinkLocation != NULL) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (DelayLinkLocation != NULL) { g_Notify->BreakPoint(__FILEW__,__LINE__); } DelayLinkLocation = (BYTE *)(m_RecompPos - 1); CPU_Message(" "); @@ -193,7 +193,7 @@ void CRecompilerOps::Compile_Branch (CRecompilerOps::BranchFunction CompareFunc, if (m_Section->m_Cont.LinkLocation != NULL || m_Section->m_Cont.LinkLocation2 != NULL) { JmpLabel8("DoDelaySlot",0); - if (DelayLinkLocation != NULL) { g_Notify->BreakPoint(__FILE__,__LINE__); } + if (DelayLinkLocation != NULL) { g_Notify->BreakPoint(__FILEW__,__LINE__); } DelayLinkLocation = (BYTE *)(m_RecompPos - 1); CPU_Message(" "); @@ -317,15 +317,15 @@ void CRecompilerOps::Compile_BranchLikely (BranchFunction CompareFunc, BOOL Link } else { if (m_Section->m_Jump.JumpPC != m_CompilePC) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_Section->m_Cont.JumpPC != m_CompilePC) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_Section->m_Cont.TargetPC != m_CompilePC + 8) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } if (m_Section->m_JumpSection != NULL) { @@ -360,7 +360,7 @@ void CRecompilerOps::Compile_BranchLikely (BranchFunction CompareFunc, BOOL Link { if (m_Section->m_Jump.LinkLocation != NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -380,7 +380,7 @@ void CRecompilerOps::Compile_BranchLikely (BranchFunction CompareFunc, BOOL Link CPU_Message(" "); CPU_Message(" %s:",m_Section->m_Cont.BranchLabel.c_str()); } else if (!m_Section->m_Cont.FallThrough) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (m_Section->m_Cont.LinkLocation != NULL) { @@ -407,7 +407,7 @@ void CRecompilerOps::Compile_BranchLikely (BranchFunction CompareFunc, BOOL Link { if (m_Section->m_Jump.LinkLocation != NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } m_Section->GenerateSectionLinkage(); m_NextInstruction = END_BLOCK; @@ -1214,7 +1214,7 @@ void CRecompilerOps::BLTZ_Compare (void) { void CRecompilerOps::BGEZ_Compare (void) { if (IsConst(m_Opcode.rs)) { if (Is64Bit(m_Opcode.rs)) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); CRecompilerOps::UnknownOpcode(); } else if (IsSigned(m_Opcode.rs)) { if (GetMipsRegLo_S(m_Opcode.rs) >= 0) { @@ -1393,7 +1393,7 @@ void CRecompilerOps::JAL (void) { } m_NextInstruction = END_BLOCK; } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return; } @@ -4012,7 +4012,7 @@ void CRecompilerOps::COP0_MT (void) { SetJump8(Jump,m_RecompPos); //TestConstToX86Reg(STATUS_FR,OldStatusReg); - //BreakPoint(__FILE__,__LINE__); //m_Section->CompileExit(m_CompilePC+4,m_RegWorkingSet,ExitResetRecompCode,FALSE,JneLabel32); + //BreakPoint(__FILEW__,__LINE__); //m_Section->CompileExit(m_CompilePC+4,m_RegWorkingSet,ExitResetRecompCode,FALSE,JneLabel32); BeforeCallDirect(m_RegWorkingSet); MoveConstToX86reg((DWORD)g_Reg,x86_ECX); Call_Direct(AddressOf(&CRegisters::CheckInterrupts),"CRegisters::CheckInterrupts"); diff --git a/Source/Project64/N64 System/Recompiler/Reg Info.cpp b/Source/Project64/N64 System/Recompiler/Reg Info.cpp index dcb827266..4f48633f7 100644 --- a/Source/Project64/N64 System/Recompiler/Reg Info.cpp +++ b/Source/Project64/N64 System/Recompiler/Reg Info.cpp @@ -79,7 +79,7 @@ CRegInfo& CRegInfo::operator=(const CRegInfo& right) #ifdef _DEBUG if (*this != right) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } #endif return *this; @@ -517,7 +517,7 @@ CRegInfo::x86Reg CRegInfo::Map_MemoryStack ( x86Reg Reg, bool bMapRegister, bool if (Reg == x86_Unknown) { g_Notify->DisplayError(L"Map_MemoryStack\n\nOut of registers"); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } SetX86Mapped(Reg,CRegInfo::Stack_Mapped); CPU_Message(" regcache: allocate %s as Memory Stack",x86_Name(Reg)); @@ -554,7 +554,7 @@ void CRegInfo::Map_GPR_32bit (int MipsReg, bool SignValue, int MipsRegToLoad) x86Reg Reg; if (MipsReg == 0) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } @@ -563,7 +563,7 @@ void CRegInfo::Map_GPR_32bit (int MipsReg, bool SignValue, int MipsRegToLoad) Reg = FreeX86Reg(); if (Reg < 0) { if (bHaveDebugger()) { g_Notify->DisplayError(L"Map_GPR_32bit\n\nOut of registers"); } - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } CPU_Message(" regcache: allocate %s to %s",x86_Name(Reg),CRegName::GPR[MipsReg]); @@ -643,7 +643,7 @@ void CRegInfo::Map_GPR_64bit ( int MipsReg, int MipsRegToLoad) x86Hi = FreeX86Reg(); if (x86Hi == x86_Unknown) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } SetX86Protected(x86Hi,TRUE); @@ -730,7 +730,7 @@ CX86Ops::x86Reg CRegInfo::Map_TempReg (CX86Ops::x86Reg Reg, int MipsReg, BOOL Lo if (Reg == x86_Unknown) { WriteTrace(TraceError,__FUNCTION__ ": Failed to find a free register"); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return x86_Unknown; } } @@ -747,7 +747,7 @@ CX86Ops::x86Reg CRegInfo::Map_TempReg (CX86Ops::x86Reg Reg, int MipsReg, BOOL Lo Reg = Free8BitX86Reg(); if (Reg < 0) { WriteTrace(TraceError,__FUNCTION__ ": Failed to find a free 8 bit register"); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return x86_Unknown; } } @@ -755,7 +755,7 @@ CX86Ops::x86Reg CRegInfo::Map_TempReg (CX86Ops::x86Reg Reg, int MipsReg, BOOL Lo if (GetX86Protected(Reg)) { WriteTrace(TraceError,__FUNCTION__ ": Register is protected"); - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return x86_Unknown; } @@ -1256,7 +1256,7 @@ void CRegInfo::WriteBackRegisters () break; default: CPU_Message(__FUNCTION__ ": Unknown State: %d reg %d (%s)",GetMipsRegState(count),count,CRegName::GPR[count]) - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } } diff --git a/Source/Project64/N64 System/Recompiler/Section Info.cpp b/Source/Project64/N64 System/Recompiler/Section Info.cpp index 3b3874bc9..f43c05102 100644 --- a/Source/Project64/N64 System/Recompiler/Section Info.cpp +++ b/Source/Project64/N64 System/Recompiler/Section Info.cpp @@ -67,7 +67,7 @@ void CCodeSection::UnlinkParent( CCodeSection * Parent, bool AllowDelete, bool C // { // if (!ContinueSection && Parent->ContinueSection == this) // { -// g_Notify->BreakPoint(__FILE__,__LINE__); +// g_Notify->BreakPoint(__FILEW__,__LINE__); // } // } if (ContinueSection && Parent->ContinueSection == this) @@ -78,7 +78,7 @@ void CCodeSection::UnlinkParent( CCodeSection * Parent, bool AllowDelete, bool C // { // if (ContinueSection && Parent->JumpSection == this) // { -// g_Notify->BreakPoint(__FILE__,__LINE__); +// g_Notify->BreakPoint(__FILEW__,__LINE__); // } // } if (!ContinueSection && Parent->JumpSection == this) @@ -117,7 +117,7 @@ CCodeSection::~CCodeSection ( void ) ContinueSection->UnlinkParent(this, true, true); if (ContinueSection) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } ContinueSection = NULL; } @@ -126,7 +126,7 @@ CCodeSection::~CCodeSection ( void ) JumpSection->UnlinkParent(this, true, false); if (JumpSection) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } JumpSection = NULL; } diff --git a/Source/Project64/N64 System/Recompiler/X86ops.cpp b/Source/Project64/N64 System/Recompiler/X86ops.cpp index 4fe4de543..fce4210f4 100644 --- a/Source/Project64/N64 System/Recompiler/X86ops.cpp +++ b/Source/Project64/N64 System/Recompiler/X86ops.cpp @@ -163,7 +163,7 @@ void CX86Ops::AndX86RegToX86Reg(x86Reg Destination, x86Reg Source) { PUTDST16(m_RecompPos,0xC021 + (Destination * 0x100) + (Source * 0x800)); } -void CX86Ops::BreakPointNotification (const char * const FileName, const int LineNumber) +void CX86Ops::BreakPointNotification (const wchar_t * const FileName, const int LineNumber) { g_Notify->BreakPoint(FileName,LineNumber); } @@ -174,11 +174,14 @@ void CX86Ops::X86HardBreakPoint (void) PUTDST8(m_RecompPos,0xCC); } -void CX86Ops::X86BreakPoint (LPCSTR FileName, int LineNumber) +void CX86Ops::X86BreakPoint (const wchar_t * FileName, int LineNumber) { + stdstr file_name; + file_name.FromUTF16(FileName); + Pushad(); PushImm32(stdstr_f("%d",LineNumber).c_str(),LineNumber); - PushImm32(FileName,(DWORD)FileName); + PushImm32(file_name.c_str(),(DWORD)FileName); Call_Direct(BreakPointNotification,"BreakPointNotification"); AddConstToX86Reg(x86_ESP, 8); Popad(); @@ -262,7 +265,7 @@ void CX86Ops::CompX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command = 0x043B; break; case x86_EBP: x86Command = 0x053B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Destination) { case x86_EAX: x86Command += 0xC000; break; @@ -290,7 +293,7 @@ void CX86Ops::DecX86reg(x86Reg reg) { case x86_ESP: PUTDST8 (m_RecompPos,0x4C); break; case x86_EBP: PUTDST8 (m_RecompPos,0x4D); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -305,7 +308,7 @@ void CX86Ops::DivX86reg(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xf4F7); break; case x86_EBP: PUTDST16(m_RecompPos,0xf5F7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -320,7 +323,7 @@ void CX86Ops::idivX86reg(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xfcF7); break; case x86_EBP: PUTDST16(m_RecompPos,0xfdF7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -336,7 +339,7 @@ void CX86Ops::imulX86reg(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xECF7); break; case x86_EBP: PUTDST16(m_RecompPos,0xEDF7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -352,7 +355,7 @@ void CX86Ops::IncX86reg(x86Reg reg) { case x86_ESP: PUTDST8 (m_RecompPos,0x44); break; case x86_EBP: PUTDST8 (m_RecompPos,0x45); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -463,7 +466,7 @@ void CX86Ops::JmpDirectReg( x86Reg reg ) { case x86_ESI: PUTDST16(m_RecompPos,0xE6ff); break; case x86_EDI: PUTDST16(m_RecompPos,0xE7ff); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -486,12 +489,12 @@ void CX86Ops::JmpIndirectReg( x86Reg reg ) { case x86_ESP: PUTDST8(m_RecompPos,0xff); PUTDST16(m_RecompPos,0x2434); - /* g_Notify->BreakPoint(__FILE__,__LINE__); */ + /* g_Notify->BreakPoint(__FILEW__,__LINE__); */ break; case x86_EBP: PUTDST8(m_RecompPos,0xff); PUTDST16(m_RecompPos,0x0065); - /* g_Notify->BreakPoint(__FILE__,__LINE__); */ + /* g_Notify->BreakPoint(__FILEW__,__LINE__); */ break; } } @@ -585,7 +588,7 @@ void CX86Ops::LeaRegReg2(x86Reg RegDest, x86Reg RegSrc, x86Reg RegSrc2, Multiple if (RegSrc2 == x86_ESP || RegSrc2 == x86_EBP) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } PUTDST8(m_RecompPos,0x8D); @@ -610,7 +613,7 @@ void CX86Ops::LeaSourceAndOffset(x86Reg x86DestReg, x86Reg x86SourceReg, int off case x86_ESP: x86Command = 0xA08D; break; case x86_EBP: x86Command = 0xA88D; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (x86SourceReg) { case x86_EAX: x86Command += 0x0000; break; @@ -622,7 +625,7 @@ void CX86Ops::LeaSourceAndOffset(x86Reg x86DestReg, x86Reg x86SourceReg, int off case x86_ESP: x86Command += 0x0400; break; case x86_EBP: x86Command += 0x0500; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST32(m_RecompPos,offset); @@ -637,7 +640,7 @@ void CX86Ops::LeaSourceAndOffset(x86Reg x86DestReg, x86Reg x86SourceReg, int off case x86_ESP: x86Command = 0x608D; break; case x86_EBP: x86Command = 0x688D; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (x86SourceReg) { case x86_EAX: x86Command += 0x0000; break; @@ -649,7 +652,7 @@ void CX86Ops::LeaSourceAndOffset(x86Reg x86DestReg, x86Reg x86SourceReg, int off case x86_ESP: x86Command += 0x0400; break; case x86_EBP: x86Command += 0x0500; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST8(m_RecompPos,offset); @@ -668,7 +671,7 @@ void CX86Ops::MoveConstByteToN64Mem(BYTE Const, x86Reg AddrReg) { case x86_ESP: PUTDST16(m_RecompPos,0x84C6); break; case x86_EBP: PUTDST16(m_RecompPos,0x85C6); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram()); PUTDST8(m_RecompPos,Const); @@ -694,7 +697,7 @@ void CX86Ops::MoveConstHalfToN64Mem(WORD Const, x86Reg AddrReg) { case x86_ESP: PUTDST16(m_RecompPos,0x84C7); break; case x86_EBP: PUTDST16(m_RecompPos,0x85C7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram()); PUTDST16(m_RecompPos,Const); @@ -724,7 +727,7 @@ void CX86Ops::MoveConstHalfToX86regPointer(WORD Const, x86Reg AddrReg1, x86Reg A case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -737,7 +740,7 @@ void CX86Ops::MoveConstHalfToX86regPointer(WORD Const, x86Reg AddrReg1, x86Reg A case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); PUTDST16(m_RecompPos,Const); @@ -755,7 +758,7 @@ void CX86Ops::MoveConstToMemoryDisp (DWORD Const, x86Reg AddrReg, DWORD Disp) { case x86_ESP: PUTDST16(m_RecompPos,0x84C7); break; case x86_EBP: PUTDST16(m_RecompPos,0x85C7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Disp); PUTDST32(m_RecompPos,Const); @@ -773,7 +776,7 @@ void CX86Ops::MoveConstToN64Mem(DWORD Const, x86Reg AddrReg) { case x86_ESP: PUTDST16(m_RecompPos,0x84C7); break; case x86_EBP: PUTDST16(m_RecompPos,0x85C7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram()); PUTDST32(m_RecompPos,Const); @@ -791,7 +794,7 @@ void CX86Ops::MoveConstToN64MemDisp (DWORD Const, x86Reg AddrReg, BYTE Disp) { case x86_ESP: PUTDST16(m_RecompPos,0x84C7); break; case x86_EBP: PUTDST16(m_RecompPos,0x85C7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram() + Disp); PUTDST32(m_RecompPos,Const); @@ -838,7 +841,7 @@ void CX86Ops::MoveConstByteToX86regPointer(BYTE Const, x86Reg AddrReg1, x86Reg A case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -851,7 +854,7 @@ void CX86Ops::MoveConstByteToX86regPointer(BYTE Const, x86Reg AddrReg1, x86Reg A case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); PUTDST8(m_RecompPos,Const); @@ -872,7 +875,7 @@ void CX86Ops::MoveConstToX86regPointer(DWORD Const, x86Reg AddrReg1, x86Reg Addr case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -885,7 +888,7 @@ void CX86Ops::MoveConstToX86regPointer(DWORD Const, x86Reg AddrReg1, x86Reg Addr case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); PUTDST32(m_RecompPos,Const); @@ -905,7 +908,7 @@ void CX86Ops::MoveN64MemDispToX86reg(x86Reg reg, x86Reg AddrReg, BYTE Disp) { case x86_ESP: x86Command = 0x048B; break; case x86_EBP: x86Command = 0x058B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -936,7 +939,7 @@ void CX86Ops::MoveN64MemToX86reg(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x048B; break; case x86_EBP: x86Command = 0x058B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -966,7 +969,7 @@ void CX86Ops::MoveN64MemToX86regByte(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x048A; break; case x86_EBP: x86Command = 0x058A; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -977,7 +980,7 @@ void CX86Ops::MoveN64MemToX86regByte(x86Reg reg, x86Reg AddrReg) { /* case x86_EDI: x86Command += 0xB800; break; */ /* case x86_ESP: case x86_EBP: */ default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } PUTDST16(m_RecompPos,x86Command); @@ -1000,7 +1003,7 @@ void CX86Ops::MoveN64MemToX86regHalf(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x048B; break; case x86_EBP: x86Command = 0x058B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1032,7 +1035,7 @@ void CX86Ops::MoveSxByteX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: PUTDST8(m_RecompPos,0x24); break; case x86_EBP: PUTDST8(m_RecompPos,0x2C); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1043,7 +1046,7 @@ void CX86Ops::MoveSxByteX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1056,7 +1059,7 @@ void CX86Ops::MoveSxByteX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1077,7 +1080,7 @@ void CX86Ops::MoveSxHalfX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: PUTDST8(m_RecompPos,0x24); break; case x86_EBP: PUTDST8(m_RecompPos,0x2C); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1088,7 +1091,7 @@ void CX86Ops::MoveSxHalfX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1101,7 +1104,7 @@ void CX86Ops::MoveSxHalfX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1120,7 +1123,7 @@ void CX86Ops::MoveSxN64MemToX86regByte(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x04BE; break; case x86_EBP: x86Command = 0x05BE; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1132,7 +1135,7 @@ void CX86Ops::MoveSxN64MemToX86regByte(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command += 0xA000; break; case x86_EBP: x86Command += 0xA800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } PUTDST8(m_RecompPos,0x0f); @@ -1155,7 +1158,7 @@ void CX86Ops::MoveSxN64MemToX86regHalf(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x04BF; break; case x86_EBP: x86Command = 0x05BF; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1188,7 +1191,7 @@ void CX86Ops::MoveSxVariableToX86regByte(void *Variable, const char * VariableNa case x86_ESP: PUTDST8(m_RecompPos,0x25); break; case x86_EBP: PUTDST8(m_RecompPos,0x2D); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1208,7 +1211,7 @@ void CX86Ops::MoveSxVariableToX86regHalf(void *Variable, const char * VariableNa case x86_ESP: PUTDST8(m_RecompPos,0x25); break; case x86_EBP: PUTDST8(m_RecompPos,0x2D); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1225,7 +1228,7 @@ void CX86Ops::MoveVariableToX86reg(void *Variable, const char * VariableName, x8 case x86_ESP: PUTDST16(m_RecompPos,0x258B); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D8B); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1254,7 +1257,7 @@ void CX86Ops::MoveVariableDispToX86Reg(void *Variable, const char * VariableName case 4: x = 0x80; break; case 8: x = 0xC0; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } /* format xx|000000 */ @@ -1280,7 +1283,7 @@ void CX86Ops::MoveVariableToX86regByte(void *Variable, const char * VariableName case x86_ECX: PUTDST16(m_RecompPos,0x0D8A); break; case x86_EDX: PUTDST16(m_RecompPos,0x158A); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1298,7 +1301,7 @@ void CX86Ops::MoveVariableToX86regHalf(void *Variable, const char * VariableName case x86_ESP: PUTDST16(m_RecompPos,0x258B); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D8B); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1316,7 +1319,7 @@ void CX86Ops::MoveX86regByteToN64Mem(x86Reg reg, x86Reg AddrReg) { case x86_ESI: x86Command = 0x0688; break; case x86_EDI: x86Command = 0x0788; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1324,7 +1327,7 @@ void CX86Ops::MoveX86regByteToN64Mem(x86Reg reg, x86Reg AddrReg) { case x86_ECX: x86Command += 0x8800; break; case x86_EDX: x86Command += 0x9000; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST32(m_RecompPos,g_MMU->Rdram()); @@ -1338,7 +1341,7 @@ void CX86Ops::MoveX86regByteToVariable(x86Reg reg, void * Variable, const char * case x86_ECX: PUTDST16(m_RecompPos,0x0D88); break; case x86_EDX: PUTDST16(m_RecompPos,0x1588); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1358,7 +1361,7 @@ void CX86Ops::MoveX86regByteToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg case x86_ESP: PUTDST16(m_RecompPos,0x2488); break; case x86_EBP: PUTDST16(m_RecompPos,0x2C88); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1369,7 +1372,7 @@ void CX86Ops::MoveX86regByteToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1382,7 +1385,7 @@ void CX86Ops::MoveX86regByteToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1403,7 +1406,7 @@ void CX86Ops::MoveX86regHalfToN64Mem(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x0489; break; case x86_EBP: x86Command = 0x0589; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1415,7 +1418,7 @@ void CX86Ops::MoveX86regHalfToN64Mem(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command += 0xA000; break; case x86_EBP: x86Command += 0xA800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST32(m_RecompPos,g_MMU->Rdram()); @@ -1434,7 +1437,7 @@ void CX86Ops::MoveX86regHalfToVariable(x86Reg reg, void * Variable, const char * case x86_ESP: PUTDST16(m_RecompPos,0x2589); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D89); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1455,7 +1458,7 @@ void CX86Ops::MoveX86regHalfToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg case x86_ESP: PUTDST16(m_RecompPos,0x2489); break; case x86_EBP: PUTDST16(m_RecompPos,0x2C89); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1466,7 +1469,7 @@ void CX86Ops::MoveX86regHalfToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1479,7 +1482,7 @@ void CX86Ops::MoveX86regHalfToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1497,7 +1500,7 @@ void CX86Ops::MoveX86PointerToX86reg(x86Reg reg, x86Reg X86Pointer) { case x86_ESI: x86Command = 0x068B; break; case x86_EDI: x86Command = 0x078B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { @@ -1510,7 +1513,7 @@ void CX86Ops::MoveX86PointerToX86reg(x86Reg reg, x86Reg X86Pointer) { case x86_ESP: x86Command += 0x2000; break; case x86_EBP: x86Command += 0x2800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -1528,7 +1531,7 @@ void CX86Ops::MoveX86PointerToX86regDisp(x86Reg reg, x86Reg X86Pointer, BYTE Dis case x86_ESI: x86Command = 0x468B; break; case x86_EDI: x86Command = 0x478B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { @@ -1541,7 +1544,7 @@ void CX86Ops::MoveX86PointerToX86regDisp(x86Reg reg, x86Reg X86Pointer, BYTE Dis case x86_ESP: x86Command += 0x2000; break; case x86_EBP: x86Command += 0x2800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST8(m_RecompPos,Disp); @@ -1562,7 +1565,7 @@ void CX86Ops::MoveX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, x86Reg case x86_ESP: PUTDST16(m_RecompPos,0x248B); break; case x86_EBP: PUTDST16(m_RecompPos,0x2C8B); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1573,7 +1576,7 @@ void CX86Ops::MoveX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, x86Reg case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1586,7 +1589,7 @@ void CX86Ops::MoveX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, x86Reg case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1606,7 +1609,7 @@ void CX86Ops::MoveX86regPointerToX86regDisp8(x86Reg AddrReg1, x86Reg AddrReg2, x case x86_ESP: PUTDST16(m_RecompPos,0x648B); break; case x86_EBP: PUTDST16(m_RecompPos,0x6C8B); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1617,7 +1620,7 @@ void CX86Ops::MoveX86regPointerToX86regDisp8(x86Reg AddrReg1, x86Reg AddrReg2, x case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1630,7 +1633,7 @@ void CX86Ops::MoveX86regPointerToX86regDisp8(x86Reg AddrReg1, x86Reg AddrReg2, x case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); PUTDST8(m_RecompPos,offset); @@ -1650,7 +1653,7 @@ void CX86Ops::MoveX86regToMemory(x86Reg reg, x86Reg AddrReg, DWORD Disp) { case x86_ESP: x86Command = 0x0489; break; case x86_EBP: x86Command = 0x0589; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1662,7 +1665,7 @@ void CX86Ops::MoveX86regToMemory(x86Reg reg, x86Reg AddrReg, DWORD Disp) { case x86_ESP: x86Command += 0xA000; break; case x86_EBP: x86Command += 0xA800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST32(m_RecompPos,Disp); @@ -1682,7 +1685,7 @@ void CX86Ops::MoveX86regToN64Mem(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x0489; break; case x86_EBP: x86Command = 0x0589; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1694,7 +1697,7 @@ void CX86Ops::MoveX86regToN64Mem(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command += 0xA000; break; case x86_EBP: x86Command += 0xA800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST32(m_RecompPos,g_MMU->Rdram()); @@ -1714,7 +1717,7 @@ void CX86Ops::MoveX86regToN64MemDisp(x86Reg reg, x86Reg AddrReg, BYTE Disp) { case x86_ESP: x86Command = 0x0489; break; case x86_EBP: x86Command = 0x0589; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1726,7 +1729,7 @@ void CX86Ops::MoveX86regToN64MemDisp(x86Reg reg, x86Reg AddrReg, BYTE Disp) { case x86_ESP: x86Command += 0xA000; break; case x86_EBP: x86Command += 0xA800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); PUTDST32(m_RecompPos,g_MMU->Rdram()+Disp); @@ -1744,7 +1747,7 @@ void CX86Ops::MoveX86regToVariable(x86Reg reg, void * Variable, const char * Var case x86_ESP: PUTDST16(m_RecompPos,0x2589); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D89); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -1768,7 +1771,7 @@ void CX86Ops::MoveX86RegToX86Reg(x86Reg Source, x86Reg Destination) { case x86_ESP: x86Command = 0x0489; break; case x86_EBP: x86Command = 0x0589; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Source) { @@ -1781,7 +1784,7 @@ void CX86Ops::MoveX86RegToX86Reg(x86Reg Source, x86Reg Destination) { case x86_ESP: x86Command += 0xE000; break; case x86_EBP: x86Command += 0xE800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -1799,7 +1802,7 @@ void CX86Ops::MoveX86regToX86Pointer(x86Reg reg, x86Reg X86Pointer) { case x86_ESI: x86Command = 0x0689; break; case x86_EDI: x86Command = 0x0789; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { @@ -1812,7 +1815,7 @@ void CX86Ops::MoveX86regToX86Pointer(x86Reg reg, x86Reg X86Pointer) { case x86_ESP: x86Command += 0x2000; break; case x86_EBP: x86Command += 0x2800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -1832,7 +1835,7 @@ void CX86Ops::MoveX86regToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg Addr case x86_ESP: PUTDST16(m_RecompPos,0x2489); break; case x86_EBP: PUTDST16(m_RecompPos,0x2C89); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1843,7 +1846,7 @@ void CX86Ops::MoveX86regToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg Addr case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1856,7 +1859,7 @@ void CX86Ops::MoveX86regToX86regPointer(x86Reg reg, x86Reg AddrReg1, x86Reg Addr case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1877,7 +1880,7 @@ void CX86Ops::MoveZxByteX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: PUTDST8(m_RecompPos,0x24); break; case x86_EBP: PUTDST8(m_RecompPos,0x2C); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1888,7 +1891,7 @@ void CX86Ops::MoveZxByteX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1901,7 +1904,7 @@ void CX86Ops::MoveZxByteX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1922,7 +1925,7 @@ void CX86Ops::MoveZxHalfX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: PUTDST8(m_RecompPos,0x24); break; case x86_EBP: PUTDST8(m_RecompPos,0x2C); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg1) { @@ -1933,7 +1936,7 @@ void CX86Ops::MoveZxHalfX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESI: Param = 0x06; break; case x86_EDI: Param = 0x07; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (AddrReg2) { @@ -1946,7 +1949,7 @@ void CX86Ops::MoveZxHalfX86regPointerToX86reg(x86Reg AddrReg1, x86Reg AddrReg2, case x86_ESP: Param += 0x20; break; case x86_EBP: Param += 0x28; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Param); } @@ -1965,7 +1968,7 @@ void CX86Ops::MoveZxN64MemToX86regByte(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x04B6; break; case x86_EBP: x86Command = 0x05B6; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -1977,7 +1980,7 @@ void CX86Ops::MoveZxN64MemToX86regByte(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command += 0xA000; break; case x86_EBP: x86Command += 0xA800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } PUTDST8(m_RecompPos,0x0f); @@ -2000,7 +2003,7 @@ void CX86Ops::MoveZxN64MemToX86regHalf(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command = 0x04B7; break; case x86_EBP: x86Command = 0x05B7; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (reg) { case x86_EAX: x86Command += 0x8000; break; @@ -2012,7 +2015,7 @@ void CX86Ops::MoveZxN64MemToX86regHalf(x86Reg reg, x86Reg AddrReg) { case x86_ESP: x86Command += 0xA000; break; case x86_EBP: x86Command += 0xA800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, 0x0f); @@ -2035,7 +2038,7 @@ void CX86Ops::MoveZxVariableToX86regByte(void *Variable, const char * VariableNa case x86_ESP: PUTDST8(m_RecompPos,0x25); break; case x86_EBP: PUTDST8(m_RecompPos,0x2D); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -2055,7 +2058,7 @@ void CX86Ops::MoveZxVariableToX86regHalf(void *Variable, const char * VariableNa case x86_ESP: PUTDST8(m_RecompPos,0x25); break; case x86_EBP: PUTDST8(m_RecompPos,0x2D); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -2072,7 +2075,7 @@ void CX86Ops::MulX86reg(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xE4F7); break; case x86_EBP: PUTDST16(m_RecompPos,0xE5F7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2088,7 +2091,7 @@ void CX86Ops::NotX86Reg(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xD4F7); break; case x86_EBP: PUTDST16(m_RecompPos,0xD5F7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2112,7 +2115,7 @@ void CX86Ops::OrConstToX86Reg(DWORD Const, x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xCC81); break; case x86_EBP: PUTDST16(m_RecompPos,0xCD81); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos, Const); } else { @@ -2126,7 +2129,7 @@ void CX86Ops::OrConstToX86Reg(DWORD Const, x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xCC83); break; case x86_EBP: PUTDST16(m_RecompPos,0xCD83); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, Const); } @@ -2144,7 +2147,7 @@ void CX86Ops::OrVariableToX86Reg(void * Variable, const char * VariableName, x86 case x86_ESP: PUTDST16(m_RecompPos,0x250B); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D0B); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -2161,7 +2164,7 @@ void CX86Ops::OrX86RegToVariable(void * Variable, const char * VariableName, x86 case x86_ESP: PUTDST16(m_RecompPos,0x2509); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D09); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -2180,7 +2183,7 @@ void CX86Ops::OrX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command = 0x040B; break; case x86_EBP: x86Command = 0x050B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Destination) { case x86_EAX: x86Command += 0xC000; break; @@ -2192,7 +2195,7 @@ void CX86Ops::OrX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command += 0xE000; break; case x86_EBP: x86Command += 0xE800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -2220,7 +2223,7 @@ void CX86Ops::Push(x86Reg reg) { case x86_ESP: PUTDST8(m_RecompPos, 0x54); break; case x86_EBP: PUTDST8(m_RecompPos, 0x55); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2237,7 +2240,7 @@ void CX86Ops::Pop(x86Reg reg) { case x86_ESP: PUTDST8(m_RecompPos, 0x5C); break; case x86_EBP: PUTDST8(m_RecompPos, 0x5D); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2266,7 +2269,7 @@ void CX86Ops::Seta(x86Reg reg) { case x86_ECX: PUTDST8(m_RecompPos,0xC1); break; case x86_EDX: PUTDST8(m_RecompPos,0xC2); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2286,7 +2289,7 @@ void CX86Ops::Setae(x86Reg reg) { case x86_ECX: PUTDST8(m_RecompPos,0xC1); break; case x86_EDX: PUTDST8(m_RecompPos,0xC2); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2299,7 +2302,7 @@ void CX86Ops::Setb(x86Reg reg) { case x86_ECX: PUTDST8(m_RecompPos,0xC1); break; case x86_EDX: PUTDST8(m_RecompPos,0xC2); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2319,7 +2322,7 @@ void CX86Ops::Setg(x86Reg reg) { case x86_ECX: PUTDST8(m_RecompPos,0xC1); break; case x86_EDX: PUTDST8(m_RecompPos,0xC2); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2339,7 +2342,7 @@ void CX86Ops::Setl(x86Reg reg) { case x86_ECX: PUTDST8(m_RecompPos,0xC1); break; case x86_EDX: PUTDST8(m_RecompPos,0xC2); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2360,7 +2363,7 @@ void CX86Ops::Setz(x86Reg reg) { case x86_ECX: PUTDST8(m_RecompPos,0xC1); break; case x86_EDX: PUTDST8(m_RecompPos,0xC2); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2373,7 +2376,7 @@ void CX86Ops::Setnz(x86Reg reg) { case x86_ECX: PUTDST8(m_RecompPos,0xC1); break; case x86_EDX: PUTDST8(m_RecompPos,0xC2); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2393,7 +2396,7 @@ void CX86Ops::ShiftLeftDouble(x86Reg Destination, x86Reg Source) { case x86_ESP: s |= 0x04; break; case x86_EBP: s |= 0x05; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Source) { @@ -2406,7 +2409,7 @@ void CX86Ops::ShiftLeftDouble(x86Reg Destination, x86Reg Source) { case x86_ESP: s |= 0x04 << 3; break; case x86_EBP: s |= 0x05 << 3; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,s); @@ -2428,7 +2431,7 @@ void CX86Ops::ShiftLeftDoubleImmed(x86Reg Destination, x86Reg Source, BYTE Immed case x86_ESP: s |= 0x04; break; case x86_EBP: s |= 0x05; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Source) { @@ -2441,7 +2444,7 @@ void CX86Ops::ShiftLeftDoubleImmed(x86Reg Destination, x86Reg Source, BYTE Immed case x86_ESP: s |= 0x04 << 3; break; case x86_EBP: s |= 0x05 << 3; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,s); @@ -2460,7 +2463,7 @@ void CX86Ops::ShiftLeftSign(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xE4D3); break; case x86_EBP: PUTDST16(m_RecompPos,0xE5D3); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2476,7 +2479,7 @@ void CX86Ops::ShiftLeftSignImmed(x86Reg reg, BYTE Immediate) { case x86_ESP: PUTDST16(m_RecompPos,0xE4C1); break; case x86_EBP: PUTDST16(m_RecompPos,0xE5C1); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Immediate); } @@ -2493,7 +2496,7 @@ void CX86Ops::ShiftRightSign(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xFCD3); break; case x86_EBP: PUTDST16(m_RecompPos,0xFDD3); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2509,7 +2512,7 @@ void CX86Ops::ShiftRightSignImmed(x86Reg reg, BYTE Immediate) { case x86_ESP: PUTDST16(m_RecompPos,0xFCC1); break; case x86_EBP: PUTDST16(m_RecompPos,0xFDC1); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Immediate); } @@ -2526,7 +2529,7 @@ void CX86Ops::ShiftRightUnsign(x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xECD3); break; case x86_EBP: PUTDST16(m_RecompPos,0xEDD3); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -2546,7 +2549,7 @@ void CX86Ops::ShiftRightDouble(x86Reg Destination, x86Reg Source) { case x86_ESP: s |= 0x04; break; case x86_EBP: s |= 0x05; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Source) { @@ -2559,7 +2562,7 @@ void CX86Ops::ShiftRightDouble(x86Reg Destination, x86Reg Source) { case x86_ESP: s |= 0x04 << 3; break; case x86_EBP: s |= 0x05 << 3; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,s); @@ -2581,7 +2584,7 @@ void CX86Ops::ShiftRightDoubleImmed(x86Reg Destination, x86Reg Source, BYTE Imme case x86_ESP: s |= 0x04; break; case x86_EBP: s |= 0x05; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Source) { @@ -2594,7 +2597,7 @@ void CX86Ops::ShiftRightDoubleImmed(x86Reg Destination, x86Reg Source, BYTE Imme case x86_ESP: s |= 0x04 << 3; break; case x86_EBP: s |= 0x05 << 3; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,s); @@ -2613,7 +2616,7 @@ void CX86Ops::ShiftRightUnsignImmed(x86Reg reg, BYTE Immediate) { case x86_ESP: PUTDST16(m_RecompPos,0xECC1); break; case x86_EBP: PUTDST16(m_RecompPos,0xEDC1); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos,Immediate); } @@ -2631,7 +2634,7 @@ void CX86Ops::SbbConstFromX86Reg (x86Reg reg, DWORD Const) { case x86_ESP: PUTDST16(m_RecompPos,0xDC81); break; case x86_EBP: PUTDST16(m_RecompPos,0xDD81); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos, Const); } else { @@ -2645,7 +2648,7 @@ void CX86Ops::SbbConstFromX86Reg (x86Reg reg, DWORD Const) { case x86_ESP: PUTDST16(m_RecompPos,0xDC83); break; case x86_EBP: PUTDST16(m_RecompPos,0xDD83); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, Const); } @@ -2663,7 +2666,7 @@ void CX86Ops::SbbVariableFromX86reg(x86Reg reg, void * Variable, const char * Va case x86_ESP: PUTDST16(m_RecompPos,0x251B); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D1B); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -2681,7 +2684,7 @@ void CX86Ops::SbbX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command = 0x041B; break; case x86_EBP: x86Command = 0x051B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Destination) { case x86_EAX: x86Command += 0xC000; break; @@ -2693,7 +2696,7 @@ void CX86Ops::SbbX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command += 0xE000; break; case x86_EBP: x86Command += 0xE800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -2718,7 +2721,7 @@ void CX86Ops::SubConstFromX86Reg (x86Reg reg, DWORD Const) { case x86_ESP: PUTDST16(m_RecompPos,0xEC81); break; case x86_EBP: PUTDST16(m_RecompPos,0xED81); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos, Const); } else { @@ -2732,7 +2735,7 @@ void CX86Ops::SubConstFromX86Reg (x86Reg reg, DWORD Const) { case x86_ESP: PUTDST16(m_RecompPos,0xEC83); break; case x86_EBP: PUTDST16(m_RecompPos,0xED83); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, Const); } @@ -2750,7 +2753,7 @@ void CX86Ops::SubVariableFromX86reg(x86Reg reg, void * Variable, const char * Va case x86_ESP: PUTDST16(m_RecompPos,0x252B); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D2B); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -2768,7 +2771,7 @@ void CX86Ops::SubX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command = 0x042B; break; case x86_EBP: x86Command = 0x052B; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Destination) { case x86_EAX: x86Command += 0xC000; break; @@ -2780,7 +2783,7 @@ void CX86Ops::SubX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command += 0xE000; break; case x86_EBP: x86Command += 0xE800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -2798,7 +2801,7 @@ void CX86Ops::TestConstToX86Reg(DWORD Const, x86Reg reg) { case x86_ESP: PUTDST16(m_RecompPos,0xC4F7); break; case x86_EBP: PUTDST16(m_RecompPos,0xC5F7); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Const); } @@ -2823,7 +2826,7 @@ void CX86Ops::TestX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command = 0x0485; break; case x86_EBP: x86Command = 0x0585; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Destination) { case x86_EAX: x86Command += 0xC000; break; @@ -2835,7 +2838,7 @@ void CX86Ops::TestX86RegToX86Reg(x86Reg Destination, x86Reg Source) { case x86_ESP: x86Command += 0xE000; break; case x86_EBP: x86Command += 0xE800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -2853,7 +2856,7 @@ void CX86Ops::XorConstToX86Reg(x86Reg reg, DWORD Const) { case x86_ESP: PUTDST16(m_RecompPos,0xF481); break; case x86_EBP: PUTDST16(m_RecompPos,0xF581); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos, Const); } else { @@ -2867,7 +2870,7 @@ void CX86Ops::XorConstToX86Reg(x86Reg reg, DWORD Const) { case x86_ESP: PUTDST16(m_RecompPos,0xF483); break; case x86_EBP: PUTDST16(m_RecompPos,0xF583); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, Const); } @@ -2888,7 +2891,7 @@ void CX86Ops::XorX86RegToX86Reg(x86Reg Source, x86Reg Destination) { case x86_ESP: x86Command = 0x0431; break; case x86_EBP: x86Command = 0x0531; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } switch (Destination) { case x86_EAX: x86Command += 0xC000; break; @@ -2900,7 +2903,7 @@ void CX86Ops::XorX86RegToX86Reg(x86Reg Source, x86Reg Destination) { case x86_ESP: x86Command += 0xE000; break; case x86_EBP: x86Command += 0xE800; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST16(m_RecompPos,x86Command); } @@ -2917,7 +2920,7 @@ void CX86Ops::XorVariableToX86reg(void *Variable, const char * VariableName, x86 case x86_ESP: PUTDST16(m_RecompPos,0x2533); break; case x86_EBP: PUTDST16(m_RecompPos,0x2D33); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,Variable); } @@ -2943,7 +2946,7 @@ void CX86Ops::fpuAddDwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x06D8); break; case x86_EDI: PUTDST16(m_RecompPos,0x07D8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -2964,7 +2967,7 @@ void CX86Ops::fpuAddQwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x06DC); break; case x86_EDI: PUTDST16(m_RecompPos,0x07DC); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -2981,7 +2984,7 @@ void CX86Ops::fpuAddReg(x86FpuValues x86reg) { case x86_ST6: PUTDST16(m_RecompPos,0xC6D8); break; case x86_ST7: PUTDST16(m_RecompPos,0xC7D8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -2999,7 +3002,7 @@ void CX86Ops::fpuAddRegPop(int * StackPos, x86FpuValues reg) { case x86_ST6: PUTDST16(m_RecompPos,0xC6DE); break; case x86_ST7: PUTDST16(m_RecompPos,0xC7DE); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3022,7 +3025,7 @@ void CX86Ops::fpuComDwordRegPointer(x86Reg x86Pointer, BOOL Pop) { case x86_ESI: x86Command = 0x16D8; break; case x86_EDI: x86Command = 0x17D8; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Pop) { x86Command |= 0x0800; } PUTDST16(m_RecompPos,x86Command); @@ -3046,7 +3049,7 @@ void CX86Ops::fpuComQwordRegPointer(x86Reg x86Pointer, BOOL Pop) { case x86_ESI: x86Command = 0x16DC; break; case x86_EDI: x86Command = 0x17DC; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (Pop) { x86Command |= 0x0800; } PUTDST16(m_RecompPos,x86Command); @@ -3066,7 +3069,7 @@ void CX86Ops::fpuComReg(x86FpuValues x86reg, BOOL Pop) { case x86_ST6: PUTDST16(m_RecompPos,0xD6D8|s); break; case x86_ST7: PUTDST16(m_RecompPos,0xD7D8|s); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3087,7 +3090,7 @@ void CX86Ops::fpuDivDwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x36D8); break; case x86_EDI: PUTDST16(m_RecompPos,0x37D8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3108,7 +3111,7 @@ void CX86Ops::fpuDivQwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x36DC); break; case x86_EDI: PUTDST16(m_RecompPos,0x37DC); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3125,7 +3128,7 @@ void CX86Ops::fpuDivReg(x86FpuValues Reg) { case x86_ST6: PUTDST16(m_RecompPos,0xF6D8); break; case x86_ST7: PUTDST16(m_RecompPos,0xF7D8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3142,7 +3145,7 @@ void CX86Ops::fpuDivRegPop(x86FpuValues reg) { case x86_ST6: PUTDST16(m_RecompPos,0xFEDE); break; case x86_ST7: PUTDST16(m_RecompPos,0xFFDE); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3159,7 +3162,7 @@ void CX86Ops::fpuExchange(x86FpuValues Reg) { case x86_ST6: PUTDST16(m_RecompPos,0xCED9); break; case x86_ST7: PUTDST16(m_RecompPos,0xCFD9); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3176,7 +3179,7 @@ void CX86Ops::fpuFree(x86FpuValues Reg) { case x86_ST6: PUTDST16(m_RecompPos,0xC6DD); break; case x86_ST7: PUTDST16(m_RecompPos,0xC7DD); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3218,7 +3221,7 @@ void CX86Ops::fpuLoadDwordFromX86Reg(int * StackPos, x86Reg x86reg) { case x86_ESI: PUTDST8(m_RecompPos,0x06); break; case x86_EDI: PUTDST8(m_RecompPos,0x07); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -3234,7 +3237,7 @@ void CX86Ops::fpuLoadDwordFromN64Mem(int * StackPos,x86Reg x86reg) { case x86_EDI: PUTDST16(m_RecompPos,0x87D9); break; case x86_EBP: PUTDST16(m_RecompPos,0x85D9); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram()); } @@ -3251,7 +3254,7 @@ void CX86Ops::fpuLoadInt32bFromN64Mem(int * StackPos,x86Reg x86reg) { case x86_EDI: PUTDST16(m_RecompPos,0x87DB); break; case x86_EBP: PUTDST16(m_RecompPos,0x85DB); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram()); } @@ -3275,7 +3278,7 @@ void CX86Ops::fpuLoadIntegerDwordFromX86Reg(int * StackPos,x86Reg x86reg) { case x86_ESI: PUTDST8(m_RecompPos,0x06); break; case x86_EDI: PUTDST8(m_RecompPos,0x07); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -3298,7 +3301,7 @@ void CX86Ops::fpuLoadIntegerQwordFromX86Reg(int * StackPos,x86Reg x86reg) { case x86_ESI: PUTDST8(m_RecompPos,0x2E); break; case x86_EDI: PUTDST8(m_RecompPos,0x2F); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -3321,7 +3324,7 @@ void CX86Ops::fpuLoadQwordFromX86Reg(int * StackPos, x86Reg x86reg) { case x86_ESI: PUTDST8(m_RecompPos,0x06); break; case x86_EDI: PUTDST8(m_RecompPos,0x07); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -3337,7 +3340,7 @@ void CX86Ops::fpuLoadQwordFromN64Mem(int * StackPos,x86Reg x86reg) { case x86_EDI: PUTDST16(m_RecompPos,0x87DD); break; case x86_EBP: PUTDST16(m_RecompPos,0x85DD); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram()); } @@ -3355,7 +3358,7 @@ void CX86Ops::fpuLoadReg(int * StackPos,x86FpuValues Reg) { case x86_ST6: PUTDST16(m_RecompPos,0xC6D9); break; case x86_ST7: PUTDST16(m_RecompPos,0xC7D9); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3376,7 +3379,7 @@ void CX86Ops::fpuMulDwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x0ED8); break; case x86_EDI: PUTDST16(m_RecompPos,0x0FD8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3397,7 +3400,7 @@ void CX86Ops::fpuMulQwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x0EDC); break; case x86_EDI: PUTDST16(m_RecompPos,0x0FDC); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3414,7 +3417,7 @@ void CX86Ops::fpuMulReg(x86FpuValues x86reg) { case x86_ST6: PUTDST16(m_RecompPos,0xCED8); break; case x86_ST7: PUTDST16(m_RecompPos,0xCFD8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3431,7 +3434,7 @@ void CX86Ops::fpuMulRegPop(x86FpuValues x86reg) { case x86_ST6: PUTDST16(m_RecompPos,0xCEDE); break; case x86_ST7: PUTDST16(m_RecompPos,0xCFDE); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3479,7 +3482,7 @@ void CX86Ops::fpuStoreDwordFromX86Reg(int * StackPos,x86Reg x86reg, BOOL pop) { case x86_ESI: Command = 0x16; break; case x86_EDI: Command = 0x17; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, (pop == FALSE) ? Command : (Command + 0x8)); } @@ -3499,7 +3502,7 @@ void CX86Ops::fpuStoreDwordToN64Mem(int * StackPos,x86Reg x86reg, BOOL Pop) { case x86_EDI: PUTDST16(m_RecompPos,0x97D9|s); break; case x86_EBP: PUTDST16(m_RecompPos,0x95D9|s); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST32(m_RecompPos,g_MMU->Rdram()); } @@ -3526,7 +3529,7 @@ void CX86Ops::fpuStoreIntegerDwordFromX86Reg(int * StackPos,x86Reg x86reg, BOOL case x86_ESI: Command = 0x16; break; case x86_EDI: Command = 0x17; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, (pop == FALSE) ? Command : (Command + 0x8)); } @@ -3536,7 +3539,7 @@ void CX86Ops::fpuStoreIntegerQword(int * StackPos,void *Variable, const char * V if (pop) { *StackPos = (*StackPos + 1) & 7; } PUTDST16(m_RecompPos, (pop == FALSE) ? 0x35DF : 0x3DDF); PUTDST32(m_RecompPos,Variable); - if (!pop) { X86BreakPoint(__FILE__,__LINE__); } + if (!pop) { X86BreakPoint(__FILEW__,__LINE__); } } void CX86Ops::fpuStoreIntegerQwordFromX86Reg(int * StackPos, x86Reg x86reg, BOOL pop) { @@ -3554,7 +3557,7 @@ void CX86Ops::fpuStoreIntegerQwordFromX86Reg(int * StackPos, x86Reg x86reg, BOOL case x86_ESI: Command = 0x36; break; case x86_EDI: Command = 0x37; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, (pop == FALSE) ? Command : (Command + 0x8)); } @@ -3574,7 +3577,7 @@ void CX86Ops::fpuStoreQwordFromX86Reg(int * StackPos, x86Reg x86reg, BOOL pop) { case x86_ESI: Command = 0x16; break; case x86_EDI: Command = 0x17; break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } PUTDST8(m_RecompPos, (pop == FALSE) ? Command : (Command + 0x8)); } @@ -3600,7 +3603,7 @@ void CX86Ops::fpuSubDwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x26D8); break; case x86_EDI: PUTDST16(m_RecompPos,0x27D8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3627,7 +3630,7 @@ void CX86Ops::fpuSubQwordRegPointer(x86Reg x86Pointer) { case x86_ESI: PUTDST16(m_RecompPos,0x26DC); break; case x86_EDI: PUTDST16(m_RecompPos,0x27DC); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3650,7 +3653,7 @@ void CX86Ops::fpuSubReg(x86FpuValues x86reg) { case x86_ST6: PUTDST16(m_RecompPos,0xE6D8); break; case x86_ST7: PUTDST16(m_RecompPos,0xE7D8); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3667,7 +3670,7 @@ void CX86Ops::fpuSubRegPop(x86FpuValues x86reg) { case x86_ST6: PUTDST16(m_RecompPos,0xEEDE); break; case x86_ST7: PUTDST16(m_RecompPos,0xEFDE); break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); break; } } @@ -3683,7 +3686,7 @@ const char * CX86Ops::x86_Name ( x86Reg Reg ) { case x86_EBP: return "ebp"; case x86_ESP: return "esp"; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return "???"; } @@ -3699,7 +3702,7 @@ const char * CX86Ops::x86_ByteName ( x86Reg Reg ) { case x86_CH: return "ch"; case x86_DH: return "dh"; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return "???"; } @@ -3715,7 +3718,7 @@ const char * CX86Ops::x86_HalfName ( x86Reg Reg ) { case x86_EBP: return "bp"; case x86_ESP: return "sp"; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return "???"; } @@ -3731,7 +3734,7 @@ const char * CX86Ops::fpu_Name ( x86FpuValues Reg ) { case x86_ST6: return "ST(6)"; case x86_ST7: return "ST(7)"; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return "???"; } @@ -3764,13 +3767,13 @@ void CX86Ops::SetJump8(BYTE * Loc, BYTE * JumpLoc) { if (Loc == NULL || JumpLoc == NULL) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } DWORD diffrence = (DWORD)(((DWORD)JumpLoc) - (((DWORD)(Loc)) + 1)); if (diffrence > 255) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } *Loc = (BYTE )diffrence; } diff --git a/Source/Project64/N64 System/Recompiler/X86ops.h b/Source/Project64/N64 System/Recompiler/X86ops.h index ed73f1683..ced3ff94a 100644 --- a/Source/Project64/N64 System/Recompiler/X86ops.h +++ b/Source/Project64/N64 System/Recompiler/X86ops.h @@ -77,7 +77,7 @@ protected: static void AndVariableDispToX86Reg ( void * Variable, const char * VariableName, x86Reg Reg, x86Reg AddrReg, Multipler Multiply); static void AndX86RegToX86Reg ( x86Reg Destination, x86Reg Source ); static void X86HardBreakPoint ( void ); - static void X86BreakPoint ( LPCSTR FileName, int LineNumber ); + static void X86BreakPoint ( const wchar_t * FileName, int LineNumber ); static void Call_Direct ( void * FunctAddress, const char * FunctName ); static void Call_Indirect ( void * FunctAddress, const char * FunctName ); static void CompConstToVariable ( DWORD Const, void * Variable, const char * VariableName ); @@ -297,7 +297,7 @@ protected: static void SetJump8(BYTE * Loc, BYTE * JumpLoc); private: - static void BreakPointNotification (const char * const FileName, const int LineNumber); + static void BreakPointNotification (const wchar_t * const FileName, const int LineNumber); static char m_fpupop[2][2]; }; diff --git a/Source/Project64/N64 System/Rom Information Class.cpp b/Source/Project64/N64 System/Rom Information Class.cpp index 9bb96db11..54dbd0234 100644 --- a/Source/Project64/N64 System/Rom Information Class.cpp +++ b/Source/Project64/N64 System/Rom Information Class.cpp @@ -53,7 +53,11 @@ DWORD CALLBACK RomInfoProc (HWND hDlg, DWORD uMsg, DWORD wParam, DWORD lParam) { SetProp(hDlg,"this",(RomInformation *)lParam); RomInformation * _this = (RomInformation *)lParam; + LONG_PTR originalWndProc = GetWindowLongPtrW(hDlg, GWLP_WNDPROC); + SetWindowLongPtrW(hDlg, GWLP_WNDPROC, (LONG_PTR) DefWindowProcW); SetWindowTextW(hDlg, GS(INFO_TITLE)); + SetWindowLongPtrW(hDlg, GWLP_WNDPROC, originalWndProc); + SetDlgItemTextW(hDlg, IDC_ROM_NAME, GS(INFO_ROM_NAME_TEXT)); SetDlgItemTextW(hDlg, IDC_FILE_NAME, GS(INFO_FILE_NAME_TEXT)); SetDlgItemTextW(hDlg, IDC_LOCATION, GS(INFO_LOCATION_TEXT)); @@ -65,6 +69,7 @@ DWORD CALLBACK RomInfoProc (HWND hDlg, DWORD uMsg, DWORD wParam, DWORD lParam) { SetDlgItemTextW(hDlg, IDC_CRC1, GS(INFO_CRC1_TEXT)); SetDlgItemTextW(hDlg, IDC_CRC2, GS(INFO_CRC2_TEXT)); SetDlgItemTextW(hDlg, IDC_CIC_CHIP, GS(INFO_CIC_CHIP_TEXT)); + SetDlgItemTextW(hDlg, IDC_CLOSE_BUTTON, GS(BOTTOM_CLOSE)); SetDlgItemText(hDlg,IDC_INFO_ROMNAME,_this->m_pRomInfo->GetRomName().c_str()); @@ -124,6 +129,8 @@ DWORD CALLBACK RomInfoProc (HWND hDlg, DWORD uMsg, DWORD wParam, DWORD lParam) { sprintf(&String[1],"CIC-NUS-610%d",_this->m_pRomInfo->CicChipID()); } SetDlgItemText(hDlg,IDC_INFO_CIC,String); + + } break; case WM_COMMAND: diff --git a/Source/Project64/Plugins/Controller Plugin.cpp b/Source/Project64/Plugins/Controller Plugin.cpp index 6db425018..2907b602c 100644 --- a/Source/Project64/Plugins/Controller Plugin.cpp +++ b/Source/Project64/Plugins/Controller Plugin.cpp @@ -147,7 +147,7 @@ void CControl_Plugin::UpdateKeys (void) if (!m_Controllers[cont]->m_RawData) { GetKeys(cont,&m_Controllers[cont]->m_Buttons); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } if (ReadController) { ReadController(-1, NULL); } diff --git a/Source/Project64/Plugins/Plugin Class.cpp b/Source/Project64/Plugins/Plugin Class.cpp index d4100c1d2..1a6ba89d6 100644 --- a/Source/Project64/Plugins/Plugin Class.cpp +++ b/Source/Project64/Plugins/Plugin Class.cpp @@ -284,25 +284,25 @@ bool CPlugins::Reset ( CN64System * System ) CreatePlugins(); - if (bGfxChange) + if (m_Gfx && bGfxChange) { WriteTrace(TraceGfxPlugin,__FUNCTION__ ": Gfx Initiate Starting"); if (!m_Gfx->Initiate(System,m_RenderWindow)) { return false; } WriteTrace(TraceGfxPlugin,__FUNCTION__ ": Gfx Initiate Done"); } - if (bAudioChange) + if (m_Audio && bAudioChange) { WriteTrace(TraceDebug,__FUNCTION__ ": Audio Initiate Starting"); if (!m_Audio->Initiate(System,m_RenderWindow)) { return false; } WriteTrace(TraceDebug,__FUNCTION__ ": Audio Initiate Done"); } - if (bContChange) + if (m_Control && bContChange) { WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Starting"); if (!m_Control->Initiate(System,m_RenderWindow)) { return false; } WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Done"); } - if (bRspChange) + if (m_RSP && bRspChange) { WriteTrace(TraceRSP,__FUNCTION__ ": RSP Initiate Starting"); if (!m_RSP->Initiate(this,System)) { return false; } diff --git a/Source/Project64/Settings.h b/Source/Project64/Settings.h index 8a09add1a..3ea6a1138 100644 --- a/Source/Project64/Settings.h +++ b/Source/Project64/Settings.h @@ -95,6 +95,7 @@ enum SettingID { Rdb_GameCheatFixPlugin, Rdb_ViRefreshRate, Rdb_AiCountPerBytes, + Rdb_AudioResetOnLoad, //Individual Game Settings Game_IniKey, @@ -139,6 +140,7 @@ enum SettingID { Game_LoadRomToMemory, Game_ViRefreshRate, Game_AiCountPerBytes, + Game_AudioResetOnLoad, // General Game running info GameRunning_LoadingInProgress, diff --git a/Source/Project64/Settings/Game Settings.cpp b/Source/Project64/Settings/Game Settings.cpp index 66893c8f4..1094b300b 100644 --- a/Source/Project64/Settings/Game Settings.cpp +++ b/Source/Project64/Settings/Game Settings.cpp @@ -54,9 +54,6 @@ void CGameSettings::RefreshGameSettings() m_bFastSP = g_Settings->LoadBool(Game_FastSP); m_RspAudioSignal = g_Settings->LoadBool(Game_RspAudioSignal); m_bRomInMemory = g_Settings->LoadBool(Game_LoadRomToMemory); - m_bFastSP = g_Settings->LoadBool(Game_FastSP); - m_b32Bit = g_Settings->LoadBool(Game_32Bit); - m_RegCaching = g_Settings->LoadBool(Game_RegCache); m_bLinkBlocks = g_Settings->LoadBool(Game_BlockLinking); m_LookUpMode = g_Settings->LoadDword(Game_FuncLookupMode); diff --git a/Source/Project64/Settings/SettingType/SettingsType-Application.cpp b/Source/Project64/Settings/SettingType/SettingsType-Application.cpp index a51e51875..f41bfc841 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-Application.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-Application.cpp @@ -122,7 +122,7 @@ bool CSettingTypeApplication::Load ( int /*Index*/, bool & Value ) const Value = dwValue != 0; } } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (!bRes && m_DefaultSetting != Default_None) @@ -144,7 +144,7 @@ bool CSettingTypeApplication::Load ( int /*Index*/, ULONG & Value ) const { bRes = m_SettingsIniFile->GetNumber(SectionName(),m_KeyNameIdex.c_str(),Value,Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (!bRes && m_DefaultSetting != Default_None) { @@ -170,7 +170,7 @@ bool CSettingTypeApplication::Load ( int Index, stdstr & Value ) const { bRes = m_SettingsIniFile ? m_SettingsIniFile->GetString(SectionName(),m_KeyNameIdex.c_str(),m_DefaultStr,Value) : false; } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } if (!bRes) { @@ -226,7 +226,7 @@ void CSettingTypeApplication::Save ( int /*Index*/, bool Value ) { m_SettingsIniFile->SaveNumber(SectionName(),m_KeyNameIdex.c_str(),Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -236,7 +236,7 @@ void CSettingTypeApplication::Save ( int /*Index*/, ULONG Value ) { m_SettingsIniFile->SaveNumber(SectionName(),m_KeyNameIdex.c_str(),Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -246,7 +246,7 @@ void CSettingTypeApplication::Save ( int /*Index*/, const stdstr & Value ) { m_SettingsIniFile->SaveString(SectionName(),m_KeyNameIdex.c_str(),Value.c_str()); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -256,7 +256,7 @@ void CSettingTypeApplication::Save ( int /*Index*/, const char * Value ) { m_SettingsIniFile->SaveString(SectionName(),m_KeyNameIdex.c_str(),Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -281,6 +281,6 @@ void CSettingTypeApplication::Delete( int /*Index*/ ) { m_SettingsIniFile->SaveString(SectionName(),m_KeyNameIdex.c_str(),NULL); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } diff --git a/Source/Project64/Settings/SettingType/SettingsType-Cheats.cpp b/Source/Project64/Settings/SettingType/SettingsType-Cheats.cpp index 1f282ce73..3f05d41cc 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-Cheats.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-Cheats.cpp @@ -72,18 +72,18 @@ LPCSTR CSettingTypeCheats::SectionName ( void ) const void CSettingTypeCheats::UpdateSettings ( void * ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); }*/ bool CSettingTypeCheats::Load ( int /*Index*/, bool & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } bool CSettingTypeCheats::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -100,28 +100,28 @@ bool CSettingTypeCheats::Load ( int Index, stdstr & Value ) const //return the default values void CSettingTypeCheats::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettingTypeCheats::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettingTypeCheats::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } //Update the settings void CSettingTypeCheats::Save ( int /*Index*/, bool /*Value*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettingTypeCheats::Save ( int /*Index*/, ULONG /*Value*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettingTypeCheats::Save ( int Index, const stdstr & Value ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-GameSettingIndex.cpp b/Source/Project64/Settings/SettingType/SettingsType-GameSettingIndex.cpp index 6d5a96ba6..787b90a49 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-GameSettingIndex.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-GameSettingIndex.cpp @@ -47,7 +47,7 @@ bool CSettingTypeGameIndex::Load ( int Index, bool & Value ) const bool CSettingTypeGameIndex::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -66,12 +66,12 @@ void CSettingTypeGameIndex::LoadDefault ( int Index, bool & Value ) const void CSettingTypeGameIndex::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeGameIndex::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } //Update the settings @@ -89,7 +89,7 @@ void CSettingTypeGameIndex::Save ( int Index, ULONG Value ) void CSettingTypeGameIndex::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeGameIndex::Save ( int Index, const char * Value ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-RDBCpuType.cpp b/Source/Project64/Settings/SettingType/SettingsType-RDBCpuType.cpp index 0ed216a03..80e7f5e9e 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RDBCpuType.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RDBCpuType.cpp @@ -28,7 +28,7 @@ CSettingTypeRDBCpuType::~CSettingTypeRDBCpuType() bool CSettingTypeRDBCpuType::Load ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -51,21 +51,21 @@ bool CSettingTypeRDBCpuType::Load ( int Index, ULONG & Value ) const LoadDefault(Index,Value); return false; } - else { Notify().BreakPoint(__FILE__,__LINE__); } + else { Notify().BreakPoint(__FILEW__,__LINE__); } return true; } bool CSettingTypeRDBCpuType::Load ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } //return the default values void CSettingTypeRDBCpuType::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBCpuType::LoadDefault ( int /*Index*/, ULONG & Value ) const @@ -83,13 +83,13 @@ void CSettingTypeRDBCpuType::LoadDefault ( int /*Index*/, ULONG & Value ) const void CSettingTypeRDBCpuType::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } //Update the settings void CSettingTypeRDBCpuType::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBCpuType::Save ( int /*Index*/, ULONG Value ) @@ -102,19 +102,19 @@ void CSettingTypeRDBCpuType::Save ( int /*Index*/, ULONG Value ) case CPU_Recompiler: strValue = "Recompiler"; break; case CPU_SyncCores: strValue = "SyncCores"; break; default: - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } m_SettingsIniFile->SaveString(m_SectionIdent->c_str(),m_KeyName.c_str(),strValue.c_str()); } void CSettingTypeRDBCpuType::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBCpuType::Save ( int /*Index*/, const char * /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBCpuType::Delete( int /*Index*/ ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-RDBOnOff.cpp b/Source/Project64/Settings/SettingType/SettingsType-RDBOnOff.cpp index d33b714a7..b8bd5b687 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RDBOnOff.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RDBOnOff.cpp @@ -44,20 +44,20 @@ bool CSettingTypeRDBOnOff::Load ( int Index, bool & Value ) const LoadDefault(Index,Value); return false; } - else { Notify().BreakPoint(__FILE__,__LINE__); } + else { Notify().BreakPoint(__FILEW__,__LINE__); } return true; } bool CSettingTypeRDBOnOff::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } bool CSettingTypeRDBOnOff::Load ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -77,12 +77,12 @@ void CSettingTypeRDBOnOff::LoadDefault ( int /*Index*/, bool & Value ) const void CSettingTypeRDBOnOff::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBOnOff::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } @@ -94,17 +94,17 @@ void CSettingTypeRDBOnOff::Save ( int /*Index*/, bool Value ) void CSettingTypeRDBOnOff::Save ( int /*Index*/, ULONG /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBOnOff::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBOnOff::Save ( int /*Index*/, const char * /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBOnOff::Delete( int /*Index*/ ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-RDBRamSize.cpp b/Source/Project64/Settings/SettingType/SettingsType-RDBRamSize.cpp index 00f3e7e19..8fd1c0b42 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RDBRamSize.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RDBRamSize.cpp @@ -30,7 +30,7 @@ CSettingTypeRDBRDRamSize::~CSettingTypeRDBRDRamSize() bool CSettingTypeRDBRDRamSize::Load ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -52,14 +52,14 @@ bool CSettingTypeRDBRDRamSize::Load ( int Index, ULONG & Value ) const bool CSettingTypeRDBRDRamSize::Load ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } //return the default values void CSettingTypeRDBRDRamSize::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBRDRamSize::LoadDefault ( int /*Index*/, ULONG & Value ) const @@ -69,13 +69,13 @@ void CSettingTypeRDBRDRamSize::LoadDefault ( int /*Index*/, ULONG & Value ) con void CSettingTypeRDBRDRamSize::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } //Update the settings void CSettingTypeRDBRDRamSize::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBRDRamSize::Save ( int /*Index*/, ULONG Value ) @@ -85,12 +85,12 @@ void CSettingTypeRDBRDRamSize::Save ( int /*Index*/, ULONG Value ) void CSettingTypeRDBRDRamSize::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBRDRamSize::Save ( int /*Index*/, const char * /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBRDRamSize::Delete( int /*Index*/ ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-RDBSaveChip.cpp b/Source/Project64/Settings/SettingType/SettingsType-RDBSaveChip.cpp index 0a28e9b97..590869192 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RDBSaveChip.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RDBSaveChip.cpp @@ -28,7 +28,7 @@ CSettingTypeRDBSaveChip::CSettingTypeRDBSaveChip(LPCSTR Name, int DefaultValue ) bool CSettingTypeRDBSaveChip::Load ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -53,7 +53,7 @@ bool CSettingTypeRDBSaveChip::Load ( int Index, ULONG & Value ) const LoadDefault(Index,Value); return false; } else { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } return true; @@ -61,14 +61,14 @@ bool CSettingTypeRDBSaveChip::Load ( int Index, ULONG & Value ) const bool CSettingTypeRDBSaveChip::Load ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } //return the default values void CSettingTypeRDBSaveChip::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBSaveChip::LoadDefault ( int /*Index*/, ULONG & Value ) const @@ -86,13 +86,13 @@ void CSettingTypeRDBSaveChip::LoadDefault ( int /*Index*/, ULONG & Value ) cons void CSettingTypeRDBSaveChip::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } //Update the settings void CSettingTypeRDBSaveChip::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBSaveChip::Save ( int /*Index*/, ULONG Value ) @@ -105,18 +105,18 @@ void CSettingTypeRDBSaveChip::Save ( int /*Index*/, ULONG Value ) case SaveChip_Sram: m_SettingsIniFile->SaveString(m_SectionIdent->c_str(),m_KeyName.c_str(),"Sram"); break; case SaveChip_FlashRam: m_SettingsIniFile->SaveString(m_SectionIdent->c_str(),m_KeyName.c_str(),"FlashRam"); break; default: - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } } void CSettingTypeRDBSaveChip::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBSaveChip::Save ( int /*Index*/, const char * /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBSaveChip::Delete( int /*Index*/ ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-RDBYesNo.cpp b/Source/Project64/Settings/SettingType/SettingsType-RDBYesNo.cpp index eedabed04..f8f81d2d1 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RDBYesNo.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RDBYesNo.cpp @@ -54,13 +54,13 @@ bool CSettingTypeRDBYesNo::Load ( int Index, bool & Value ) const bool CSettingTypeRDBYesNo::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } bool CSettingTypeRDBYesNo::Load ( int /*Index*/, stdstr & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -80,12 +80,12 @@ void CSettingTypeRDBYesNo::LoadDefault ( int /*Index*/, bool & Value ) const void CSettingTypeRDBYesNo::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBYesNo::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } @@ -102,12 +102,12 @@ void CSettingTypeRDBYesNo::Save ( int /*Index*/, ULONG Value ) void CSettingTypeRDBYesNo::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBYesNo::Save ( int /*Index*/, const char * /*Value*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRDBYesNo::Delete( int /*Index*/ ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-RelativePath.cpp b/Source/Project64/Settings/SettingType/SettingsType-RelativePath.cpp index 1eafaf028..0ce607ba3 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RelativePath.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RelativePath.cpp @@ -30,27 +30,27 @@ bool CSettingTypeRelativePath::Load ( int /*Index*/, stdstr & value ) const //return the default values void CSettingTypeRelativePath::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRelativePath::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRelativePath::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRelativePath::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRelativePath::Save ( int /*Index*/, ULONG /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRelativePath::Save ( int /*Index*/, const stdstr & Value ) @@ -65,5 +65,5 @@ void CSettingTypeRelativePath::Save ( int /*Index*/, const char * Value ) void CSettingTypeRelativePath::Delete ( int /*Index*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } diff --git a/Source/Project64/Settings/SettingType/SettingsType-RomDatabase.cpp b/Source/Project64/Settings/SettingType/SettingsType-RomDatabase.cpp index 2a0fa4a68..184bab4b7 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RomDatabase.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RomDatabase.cpp @@ -197,7 +197,7 @@ void CSettingTypeRomDatabase::Save ( int /*Index*/, bool Value ) } if (m_DeleteOnDefault) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } if (m_GlideSetting) { diff --git a/Source/Project64/Settings/SettingType/SettingsType-RomDatabaseIndex.cpp b/Source/Project64/Settings/SettingType/SettingsType-RomDatabaseIndex.cpp index 9b5ff31b9..9ad30a40b 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-RomDatabaseIndex.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-RomDatabaseIndex.cpp @@ -46,13 +46,13 @@ CSettingTypeRomDatabaseIndex::~CSettingTypeRomDatabaseIndex() bool CSettingTypeRomDatabaseIndex::Load ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } bool CSettingTypeRomDatabaseIndex::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -82,22 +82,22 @@ void CSettingTypeRomDatabaseIndex::LoadDefault ( int Index, stdstr & Value ) con void CSettingTypeRomDatabaseIndex::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRomDatabaseIndex::Save ( int /*Index*/, ULONG /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRomDatabaseIndex::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRomDatabaseIndex::Save ( int /*Index*/, const char * /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeRomDatabaseIndex::Delete ( int /*Index*/ ) diff --git a/Source/Project64/Settings/SettingType/SettingsType-SelectedDirectory.cpp b/Source/Project64/Settings/SettingType/SettingsType-SelectedDirectory.cpp index 28ecd3098..d08bc1ca0 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-SelectedDirectory.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-SelectedDirectory.cpp @@ -27,13 +27,13 @@ CSettingTypeSelectedDirectory::~CSettingTypeSelectedDirectory() bool CSettingTypeSelectedDirectory::Load ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } bool CSettingTypeSelectedDirectory::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -46,33 +46,33 @@ bool CSettingTypeSelectedDirectory::Load ( int /*Index*/, stdstr & Value ) const //return the default values void CSettingTypeSelectedDirectory::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeSelectedDirectory::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeSelectedDirectory::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } //Update the settings void CSettingTypeSelectedDirectory::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeSelectedDirectory::Save ( int /*Index*/, ULONG /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeSelectedDirectory::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeSelectedDirectory::Save ( int /*Index*/, const char * Value ) @@ -83,5 +83,5 @@ void CSettingTypeSelectedDirectory::Save ( int /*Index*/, const char * Value ) void CSettingTypeSelectedDirectory::Delete( int /*Index*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } diff --git a/Source/Project64/Settings/SettingType/SettingsType-TempBool.cpp b/Source/Project64/Settings/SettingType/SettingsType-TempBool.cpp index 9fbeee682..46ee982dc 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-TempBool.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-TempBool.cpp @@ -28,30 +28,30 @@ bool CSettingTypeTempBool::Load ( int /*Index*/, bool & Value ) const bool CSettingTypeTempBool::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } bool CSettingTypeTempBool::Load ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } //return the default values void CSettingTypeTempBool::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempBool::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempBool::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempBool::Save ( int /*Index*/, bool Value ) @@ -61,20 +61,20 @@ void CSettingTypeTempBool::Save ( int /*Index*/, bool Value ) void CSettingTypeTempBool::Save ( int /*Index*/, ULONG /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempBool::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempBool::Save ( int /*Index*/, const char * /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempBool::Delete( int /*Index*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } diff --git a/Source/Project64/Settings/SettingType/SettingsType-TempNumber.cpp b/Source/Project64/Settings/SettingType/SettingsType-TempNumber.cpp index 3f82c429d..77a1a43af 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-TempNumber.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-TempNumber.cpp @@ -22,7 +22,7 @@ CSettingTypeTempNumber::~CSettingTypeTempNumber ( void ) bool CSettingTypeTempNumber::Load ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return true; } @@ -34,29 +34,29 @@ bool CSettingTypeTempNumber::Load ( int /*Index*/, ULONG & Value ) const bool CSettingTypeTempNumber::Load ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } //return the default values void CSettingTypeTempNumber::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempNumber::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempNumber::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempNumber::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempNumber::Save ( int /*Index*/, ULONG Value ) @@ -66,15 +66,15 @@ void CSettingTypeTempNumber::Save ( int /*Index*/, ULONG Value ) void CSettingTypeTempNumber::Save ( int /*Index*/, const stdstr & /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempNumber::Save ( int /*Index*/, const char * /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempNumber::Delete( int /*Index*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } diff --git a/Source/Project64/Settings/SettingType/SettingsType-TempString.cpp b/Source/Project64/Settings/SettingType/SettingsType-TempString.cpp index 6e69df2ac..0e93bf547 100644 --- a/Source/Project64/Settings/SettingType/SettingsType-TempString.cpp +++ b/Source/Project64/Settings/SettingType/SettingsType-TempString.cpp @@ -23,13 +23,13 @@ CSettingTypeTempString::~CSettingTypeTempString ( void ) bool CSettingTypeTempString::Load ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } bool CSettingTypeTempString::Load ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return false; } @@ -42,27 +42,27 @@ bool CSettingTypeTempString::Load ( int /*Index*/, stdstr & Value ) const //return the default values void CSettingTypeTempString::LoadDefault ( int /*Index*/, bool & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempString::LoadDefault ( int /*Index*/, ULONG & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempString::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempString::Save ( int /*Index*/, bool /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempString::Save ( int /*Index*/, ULONG /*Value*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } void CSettingTypeTempString::Save ( int /*Index*/, const stdstr & Value ) @@ -77,5 +77,5 @@ void CSettingTypeTempString::Save ( int /*Index*/, const char * Value ) void CSettingTypeTempString::Delete( int /*Index*/ ) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); } diff --git a/Source/Project64/Settings/Settings Class.cpp b/Source/Project64/Settings/Settings Class.cpp index e291a3cf9..a6fe58e20 100644 --- a/Source/Project64/Settings/Settings Class.cpp +++ b/Source/Project64/Settings/Settings Class.cpp @@ -167,6 +167,7 @@ void CSettings::AddHowToHandleSetting () AddHandler(Rdb_GameCheatFixPlugin, new CSettingTypeRomDatabaseIndex("CheatPlugin","","")); AddHandler(Rdb_ViRefreshRate, new CSettingTypeRomDatabase("ViRefresh",1500)); AddHandler(Rdb_AiCountPerBytes, new CSettingTypeRomDatabase("AiCountPerBytes",400)); + AddHandler(Rdb_AudioResetOnLoad, new CSettingTypeRDBYesNo("AudioResetOnLoad", false)); AddHandler(Game_IniKey, new CSettingTypeTempString("")); AddHandler(Game_GameName, new CSettingTypeTempString("")); @@ -192,7 +193,7 @@ void CSettings::AddHowToHandleSetting () AddHandler(Game_DelaySI, new CSettingTypeGame("Delay SI",Rdb_DelaySi)); AddHandler(Game_RspAudioSignal, new CSettingTypeGame("Audio Signal",Rdb_RspAudioSignal)); AddHandler(Game_32Bit, new CSettingTypeGame("32bit",Rdb_32Bit)); - AddHandler(Game_FastSP, new CSettingTypeGame("SP Hack",Rdb_FastSP)); + AddHandler(Game_FastSP, new CSettingTypeGame("Fast SP",Rdb_FastSP)); AddHandler(Game_CurrentSaveState, new CSettingTypeTempNumber(0)); AddHandler(Game_SyncViaAudio, new CSettingTypeGame("Sync Audio",Rdb_SyncViaAudio)); AddHandler(Game_UseHleGfx, new CSettingTypeGame("HLE GFX",Rdb_UseHleGfx)); @@ -210,6 +211,7 @@ void CSettings::AddHowToHandleSetting () AddHandler(Game_SMM_ValidFunc, new CSettingTypeGame("SMM-FUNC",Rdb_SMM_ValidFunc)); AddHandler(Game_ViRefreshRate, new CSettingTypeGame("ViRefresh",Rdb_ViRefreshRate)); AddHandler(Game_AiCountPerBytes, new CSettingTypeGame("AiCountPerBytes",Rdb_AiCountPerBytes)); + AddHandler(Game_AudioResetOnLoad, new CSettingTypeGame("AudioResetOnLoad", Rdb_AudioResetOnLoad)); //User Interface AddHandler(UserInterface_BasicMode, new CSettingTypeApplication("","Basic Mode", (DWORD)true)); @@ -396,7 +398,7 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def case SettingType_ConstValue: if (DataType != Data_DWORD) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } _this->AddHandler(ID,new CSettingTypeTempNumber(Value)); @@ -404,7 +406,7 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def case SettingType_ConstString: if (DataType != Data_String) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return; } _this->AddHandler(ID,new CSettingTypeTempString(DefaultStr)); @@ -430,7 +432,7 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case SettingType_GameSetting: @@ -458,7 +460,7 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } break; @@ -482,7 +484,7 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; case SettingType_RdbSetting: @@ -500,11 +502,11 @@ void CSettings::RegisterSetting ( CSettings * _this, SettingID ID, SettingID Def } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } break; default: - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } @@ -538,7 +540,7 @@ bool CSettings::LoadBool ( SettingID Type, bool & Value ) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { return FindInfo->second->Load(0,Value); } @@ -565,7 +567,7 @@ bool CSettings::LoadBoolIndex( SettingID Type, int index , bool & Value ) { return FindInfo->second->Load(index,Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return false; } @@ -588,7 +590,7 @@ bool CSettings::LoadDword ( SettingID Type, DWORD & Value) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { return FindInfo->second->Load(0,Value); } @@ -615,7 +617,7 @@ bool CSettings::LoadDwordIndex( SettingID Type, int index, DWORD & Value) { return FindInfo->second->Load(index,Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return false; } @@ -638,7 +640,7 @@ bool CSettings::LoadString ( SettingID Type, stdstr & Value ) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { return FindInfo->second->Load(0,Value); } @@ -657,7 +659,7 @@ bool CSettings::LoadString ( SettingID Type, char * Buffer, int BufferSize ) bool bRes = false; if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { stdstr Value; bRes = FindInfo->second->Load(0,Value); @@ -691,14 +693,14 @@ bool CSettings::LoadStringIndex ( SettingID Type, int index, stdstr & Value ) { return FindInfo->second->Load(index,Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } return false; } bool CSettings::LoadStringIndex ( SettingID /*Type*/, int /*index*/, char * /*Buffer*/, int /*BufferSize*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } @@ -720,7 +722,7 @@ void CSettings::LoadDefaultBool ( SettingID Type, bool & Value ) } else { if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->LoadDefault(0,Value); } @@ -729,13 +731,13 @@ void CSettings::LoadDefaultBool ( SettingID Type, bool & Value ) bool CSettings::LoadDefaultBoolIndex ( SettingID /*Type*/, int /*index*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } void CSettings::LoadDefaultBoolIndex ( SettingID /*Type*/, int /*index*/, bool & /*Value*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } DWORD CSettings::LoadDefaultDword ( SettingID Type ) @@ -755,7 +757,7 @@ void CSettings::LoadDefaultDword ( SettingID Type, DWORD & Value) } else { if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->LoadDefault(0,Value); } @@ -764,13 +766,13 @@ void CSettings::LoadDefaultDword ( SettingID Type, DWORD & Value) DWORD CSettings::LoadDefaultDwordIndex ( SettingID /*Type*/, int /*index*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } void CSettings::LoadDefaultDwordIndex ( SettingID /*Type*/, int /*index*/, DWORD & /*Value*/) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } stdstr CSettings::LoadDefaultString ( SettingID Type ) @@ -790,7 +792,7 @@ void CSettings::LoadDefaultString ( SettingID Type, stdstr & Value ) } else { if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->LoadDefault(0,Value); } @@ -799,23 +801,23 @@ void CSettings::LoadDefaultString ( SettingID Type, stdstr & Value ) void CSettings::LoadDefaultString ( SettingID /*Type*/, char * /*Buffer*/, int /*BufferSize*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } stdstr CSettings::LoadDefaultStringIndex ( SettingID /*Type*/, int /*index*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); return false; } void CSettings::LoadDefaultStringIndex ( SettingID /*Type*/, int /*index*/, stdstr & /*Value*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettings::LoadDefaultStringIndex ( SettingID /*Type*/, int /*index*/, char * /*Buffer*/, int /*BufferSize*/ ) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } void CSettings::SaveBool ( SettingID Type, bool Value ) @@ -829,7 +831,7 @@ void CSettings::SaveBool ( SettingID Type, bool Value ) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->Save(0,Value); } @@ -849,7 +851,7 @@ void CSettings::SaveBoolIndex( SettingID Type, int index, bool Value ) { FindInfo->second->Save(index,Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } NotifyCallBacks(Type); } @@ -865,7 +867,7 @@ void CSettings::SaveDword ( SettingID Type, DWORD Value ) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->Save(0,Value); } @@ -885,7 +887,7 @@ void CSettings::SaveDwordIndex ( SettingID Type, int index, DWORD Value ) { FindInfo->second->Save(index,Value); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } NotifyCallBacks(Type); } @@ -901,7 +903,7 @@ void CSettings::SaveString ( SettingID Type, const stdstr & Value ) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->Save(0,Value); } @@ -918,7 +920,7 @@ void CSettings::SaveString ( SettingID Type, const char * Buffer ) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->Save(0,Buffer); } @@ -937,7 +939,7 @@ void CSettings::SaveStringIndex( SettingID Type, int index, const char * Buffer { FindInfo->second->Save(index,Buffer); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } NotifyCallBacks(Type); } @@ -957,7 +959,7 @@ void CSettings::DeleteSetting( SettingID Type ) } if (FindInfo->second->IndexBasedSetting()) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } else { FindInfo->second->Delete(0); } @@ -976,7 +978,7 @@ void CSettings::DeleteSettingIndex( SettingID Type, int index ) { FindInfo->second->Delete(index); } else { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } NotifyCallBacks(Type); } @@ -1021,7 +1023,7 @@ void CSettings::SettingTypeChanged( SettingType Type ) void CSettings::UnknownSetting (SettingID /*Type*/) { #ifdef _DEBUG - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); #endif } @@ -1105,6 +1107,6 @@ void CSettings::UnregisterChangeCB(SettingID Type,void * Data, SettingChangedFun if (!bRemoved) { - g_Notify->BreakPoint(__FILE__,__LINE__); + g_Notify->BreakPoint(__FILEW__,__LINE__); } } diff --git a/Source/Project64/User Interface/Bitmaps/Thumbs.db b/Source/Project64/User Interface/Bitmaps/Thumbs.db deleted file mode 100644 index 0c84e74f4..000000000 Binary files a/Source/Project64/User Interface/Bitmaps/Thumbs.db and /dev/null differ diff --git a/Source/Project64/User Interface/Bitmaps/tri-state.bmp b/Source/Project64/User Interface/Bitmaps/tri-state.bmp index 6e820dc6e..39a909911 100644 Binary files a/Source/Project64/User Interface/Bitmaps/tri-state.bmp and b/Source/Project64/User Interface/Bitmaps/tri-state.bmp differ diff --git a/Source/Project64/User Interface/Gui Class.cpp b/Source/Project64/User Interface/Gui Class.cpp index d465f695c..70e3180ae 100644 --- a/Source/Project64/User Interface/Gui Class.cpp +++ b/Source/Project64/User Interface/Gui Class.cpp @@ -31,7 +31,7 @@ CMainGui::CMainGui (bool bMainWindow, const char * WindowTitle ) : m_ResetPlugins(false), m_ResetInfo(NULL) { - m_Menu = NULL; + m_Menu = NULL; m_hMainWindow = 0; m_hStatusWnd = 0; @@ -160,23 +160,28 @@ void CMainGui::AboutIniBox (void) DWORD CALLBACK AboutIniBoxProc (HWND WndHandle, DWORD uMsg, DWORD wParam, DWORD /*lParam*/) { - static char RDBHomePage[300], CHTHomePage[300], RDXHomePage[300]; + static wchar_t RDBHomePage[300], CHTHomePage[300], RDXHomePage[300]; switch (uMsg) { case WM_INITDIALOG: { HWND hDlg = (HWND)WndHandle; - char String[200],String2[200]; + wchar_t String[200], String2[200]; + //Title + LONG_PTR originalWndProc = GetWindowLongPtrW(hDlg, GWLP_WNDPROC); + SetWindowLongPtrW(hDlg, GWLP_WNDPROC, (LONG_PTR) DefWindowProcW); SetWindowTextW(hDlg, GS(INI_TITLE)); + SetWindowLongPtrW(hDlg, GWLP_WNDPROC, originalWndProc); + //Language SetDlgItemTextW(hDlg,IDC_LAN,GS(INI_CURRENT_LANG)); - sprintf(String,"%s: %s",GS(INI_AUTHOR),GS(LANGUAGE_AUTHOR)); - SetDlgItemText(hDlg,IDC_LAN_AUTHOR,String); - sprintf(String,"%s: %s",GS(INI_VERSION),GS(LANGUAGE_VERSION)); - SetDlgItemText(hDlg,IDC_LAN_VERSION,String); - sprintf(String,"%s: %s",GS(INI_DATE),GS(LANGUAGE_DATE)); - SetDlgItemText(hDlg,IDC_LAN_DATE,String); + swprintf(String, L"%s: %s", GS(INI_AUTHOR),GS(LANGUAGE_AUTHOR)); + SetDlgItemTextW(hDlg,IDC_LAN_AUTHOR,String); + swprintf(String, L"%s: %s",GS(INI_VERSION),GS(LANGUAGE_VERSION)); + SetDlgItemTextW(hDlg,IDC_LAN_VERSION,String); + swprintf(String, L"%s: %s",GS(INI_DATE),GS(LANGUAGE_DATE)); + SetDlgItemTextW(hDlg,IDC_LAN_DATE,String); if (wcslen(GS(LANGUAGE_NAME)) == 0) { EnableWindow(GetDlgItem(hDlg,IDC_LAN),FALSE); @@ -188,8 +193,8 @@ DWORD CALLBACK AboutIniBoxProc (HWND WndHandle, DWORD uMsg, DWORD wParam, DWORD //RDB stdstr IniFile = g_Settings->LoadString(SupportFile_RomDatabase).c_str(); SetDlgItemTextW(hDlg,IDC_RDB,GS(INI_CURRENT_RDB)); - GetPrivateProfileString("Meta","Author","",String,sizeof(String),IniFile.c_str()); - if (strlen(String) == 0) + GetPrivateProfileStringW(L"Meta",L"Author",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + if (wcslen(String) == 0) { EnableWindow(GetDlgItem(hDlg,IDC_RDB),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_RDB_AUTHOR),FALSE); @@ -197,80 +202,84 @@ DWORD CALLBACK AboutIniBoxProc (HWND WndHandle, DWORD uMsg, DWORD wParam, DWORD EnableWindow(GetDlgItem(hDlg,IDC_RDB_DATE),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_RDB_HOME),FALSE); } - sprintf(String2,"%s: %s",GS(INI_AUTHOR),String); - SetDlgItemText(hDlg,IDC_RDB_AUTHOR,String2); - GetPrivateProfileString("Meta","Version","",String,sizeof(String),IniFile.c_str()); - sprintf(String2,"%s: %s",GS(INI_VERSION),String); - SetDlgItemText(hDlg,IDC_RDB_VERSION,String2); - GetPrivateProfileString("Meta","Date","",String,sizeof(String),IniFile.c_str()); - sprintf(String2,"%s: %s",GS(INI_DATE),String); - SetDlgItemText(hDlg,IDC_RDB_DATE,String2); - GetPrivateProfileString("Meta","Homepage","",RDBHomePage,sizeof(RDBHomePage),IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_AUTHOR),String); + SetDlgItemTextW(hDlg,IDC_RDB_AUTHOR,String2); + GetPrivateProfileStringW(L"Meta",L"Version",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_VERSION),String); + SetDlgItemTextW(hDlg,IDC_RDB_VERSION,String2); + GetPrivateProfileStringW(L"Meta",L"Date",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_DATE),String); + SetDlgItemTextW(hDlg,IDC_RDB_DATE,String2); + GetPrivateProfileStringW(L"Meta",L"Homepage",L"",RDBHomePage,sizeof(RDBHomePage),(wchar_t *)IniFile.c_str()); SetDlgItemTextW(hDlg,IDC_RDB_HOME,GS(INI_HOMEPAGE)); - if (strlen(RDBHomePage) == 0) { + if (wcslen(RDBHomePage) == 0) { EnableWindow(GetDlgItem(hDlg,IDC_RDB_HOME),FALSE); } //Cheat SetDlgItemTextW(hDlg,IDC_CHT,GS(INI_CURRENT_CHT)); IniFile = g_Settings->LoadString(SupportFile_Cheats).c_str(); - GetPrivateProfileString("Meta","Author","",String,sizeof(String),IniFile.c_str()); - if (strlen(String) == 0) { + GetPrivateProfileStringW(L"Meta",L"Author",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + if (wcslen(String) == 0) + { EnableWindow(GetDlgItem(hDlg,IDC_CHT),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_CHT_AUTHOR),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_CHT_VERSION),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_CHT_DATE),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_CHT_HOME),FALSE); } - sprintf(String2,"%s: %s",GS(INI_AUTHOR),String); - SetDlgItemText(hDlg,IDC_CHT_AUTHOR,String2); - GetPrivateProfileString("Meta","Version","",String,sizeof(String),IniFile.c_str()); - sprintf(String2,"%s: %s",GS(INI_VERSION),String); - SetDlgItemText(hDlg,IDC_CHT_VERSION,String2); - GetPrivateProfileString("Meta","Date","",String,sizeof(String),IniFile.c_str()); - sprintf(String2,"%s: %s",GS(INI_DATE),String); - SetDlgItemText(hDlg,IDC_CHT_DATE,String2); - GetPrivateProfileString("Meta","Homepage","",CHTHomePage,sizeof(CHTHomePage),IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_AUTHOR),String); + SetDlgItemTextW(hDlg,IDC_CHT_AUTHOR,String2); + GetPrivateProfileStringW(L"Meta",L"Version",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_VERSION),String); + SetDlgItemTextW(hDlg,IDC_CHT_VERSION,String2); + GetPrivateProfileStringW(L"Meta",L"Date",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_DATE),String); + SetDlgItemTextW(hDlg,IDC_CHT_DATE,String2); + GetPrivateProfileStringW(L"Meta",L"Homepage",L"",CHTHomePage,sizeof(CHTHomePage),(wchar_t *)IniFile.c_str()); SetDlgItemTextW(hDlg,IDC_CHT_HOME,GS(INI_HOMEPAGE)); - if (strlen(CHTHomePage) == 0) + if (wcslen(CHTHomePage) == 0) { EnableWindow(GetDlgItem(hDlg,IDC_CHT_HOME),FALSE); } //Extended Info SetDlgItemTextW(hDlg,IDC_RDX,GS(INI_CURRENT_RDX)); - IniFile = g_Settings->LoadString(SupportFile_ExtInfo).c_str();; - GetPrivateProfileString("Meta","Author","",String,sizeof(String),IniFile.c_str()); - if (strlen(String) == 0) - { + IniFile = g_Settings->LoadString(SupportFile_ExtInfo).c_str(); + GetPrivateProfileStringW(L"Meta",L"Author",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + if (wcslen(String) == 0) + { EnableWindow(GetDlgItem(hDlg,IDC_RDX),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_RDX_AUTHOR),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_RDX_VERSION),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_RDX_DATE),FALSE); EnableWindow(GetDlgItem(hDlg,IDC_RDX_HOME),FALSE); } - sprintf(String2,"%s: %s",GS(INI_AUTHOR),String); - SetDlgItemText(hDlg,IDC_RDX_AUTHOR,String2); - GetPrivateProfileString("Meta","Version","",String,sizeof(String),IniFile.c_str()); - sprintf(String2,"%s: %s",GS(INI_VERSION),String); - SetDlgItemText(hDlg,IDC_RDX_VERSION,String2); - GetPrivateProfileString("Meta","Date","",String,sizeof(String),IniFile.c_str()); - sprintf(String2,"%s: %s",GS(INI_DATE),String); - SetDlgItemText(hDlg,IDC_RDX_DATE,String2); - GetPrivateProfileString("Meta","Homepage","",RDXHomePage,sizeof(CHTHomePage),IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_AUTHOR),String); + SetDlgItemTextW(hDlg,IDC_RDX_AUTHOR,String2); + GetPrivateProfileStringW(L"Meta",L"Version",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_VERSION),String); + SetDlgItemTextW(hDlg,IDC_RDX_VERSION,String2); + GetPrivateProfileStringW(L"Meta",L"Date",L"",String,sizeof(String),(wchar_t *)IniFile.c_str()); + swprintf(String2,L"%s: %s",GS(INI_DATE),String); + SetDlgItemTextW(hDlg,IDC_RDX_DATE,String2); + GetPrivateProfileStringW(L"Meta",L"Homepage",L"",RDXHomePage,sizeof(CHTHomePage),(wchar_t *)IniFile.c_str()); SetDlgItemTextW(hDlg,IDC_RDX_HOME,GS(INI_HOMEPAGE)); - if (strlen(RDXHomePage) == 0) + if (wcslen(RDXHomePage) == 0) { EnableWindow(GetDlgItem(hDlg,IDC_RDX_HOME),FALSE); } + + SetDlgItemTextW(hDlg, IDOK, GS(CHEAT_OK)); + } break; case WM_COMMAND: switch (LOWORD(wParam)) { - case IDC_RDB_HOME: ShellExecute(NULL,"open",RDBHomePage,NULL,NULL,SW_SHOWNORMAL); break; - case IDC_CHT_HOME: ShellExecute(NULL,"open",CHTHomePage,NULL,NULL,SW_SHOWNORMAL); break; - case IDC_RDX_HOME: ShellExecute(NULL,"open",RDXHomePage,NULL,NULL,SW_SHOWNORMAL); break; + case IDC_RDB_HOME: ShellExecuteW(NULL,L"open",RDBHomePage,NULL,NULL,SW_SHOWNORMAL); break; + case IDC_CHT_HOME: ShellExecuteW(NULL,L"open",CHTHomePage,NULL,NULL,SW_SHOWNORMAL); break; + case IDC_RDX_HOME: ShellExecuteW(NULL,L"open",RDXHomePage,NULL,NULL,SW_SHOWNORMAL); break; case IDOK: case IDCANCEL: EndDialog((HWND)WndHandle,0); @@ -470,23 +479,24 @@ void CMainGui::RefreshMenu (void) m_Menu->ResetMenu(); } -void CMainGui::SetStatusText (int Panel,const char * Text) { - static char Message[2][500]; +void CMainGui::SetStatusText (int Panel,const wchar_t * Text) +{ + static wchar_t Message[2][500]; if (Panel >= 2) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); return; } - char * Msg = Message[Panel]; + wchar_t * Msg = Message[Panel]; memset(Msg,0,sizeof(Message[0])); - _snprintf(Msg,sizeof(Message[0]),"%s",Text); - Msg[sizeof(Message[0]) - 1] = 0; + _snwprintf(Msg, sizeof(Message[0]) / sizeof(Message[0][0]), L"%s", Text); + Msg[(sizeof(Message[0]) / sizeof(Message[0][0])) - 1] = 0; if (GetCurrentThreadId() == m_ThreadId) { - SendMessage( (HWND)m_hStatusWnd, SB_SETTEXT, Panel, (LPARAM)Msg ); + SendMessageW( (HWND)m_hStatusWnd, SB_SETTEXTW, Panel, (LPARAM)Msg ); } else { - PostMessage( (HWND)m_hStatusWnd, SB_SETTEXT, Panel, (LPARAM)Msg ); + PostMessageW( (HWND)m_hStatusWnd, SB_SETTEXTW, Panel, (LPARAM)Msg ); } } @@ -808,7 +818,7 @@ DWORD CALLBACK CMainGui::MainGui_Proc (HWND hWnd, DWORD uMsg, DWORD wParam, DWOR CMainGui * _this = (CMainGui *)GetProp((HWND)hWnd, "Class"); if (_this->m_ResetInfo != NULL) { - Notify().BreakPoint(__FILE__, __LINE__); + Notify().BreakPoint(__FILEW__, __LINE__); } _this->m_ResetInfo = (RESET_PLUGIN *)lParam; _this->m_ResetPlugins = true; diff --git a/Source/Project64/User Interface/Gui Class.h b/Source/Project64/User Interface/Gui Class.h index 4d8cd085a..7b664744e 100644 --- a/Source/Project64/User Interface/Gui Class.h +++ b/Source/Project64/User Interface/Gui Class.h @@ -69,7 +69,7 @@ public: CBaseMenu * GetMenuClass ( void ) { return m_Menu; } // Status bar - void SetStatusText ( int Panel,const char * Text ); + void SetStatusText ( int Panel,const wchar_t * Text ); void ShowStatusBar ( bool ShowBar ); //About Window diff --git a/Source/Project64/User Interface/Icons/Thumbs.db b/Source/Project64/User Interface/Icons/Thumbs.db deleted file mode 100644 index e89860cff..000000000 Binary files a/Source/Project64/User Interface/Icons/Thumbs.db and /dev/null differ diff --git a/Source/Project64/User Interface/Main Menu Class.cpp b/Source/Project64/User Interface/Main Menu Class.cpp index 18fb63e9a..04adca6b0 100644 --- a/Source/Project64/User Interface/Main Menu Class.cpp +++ b/Source/Project64/User Interface/Main Menu Class.cpp @@ -49,7 +49,8 @@ void CMainMenu::SettingsChanged (CMainMenu * _this ) _this->ResetMenu(); } -int CMainMenu::ProcessAccelerator ( HWND hWnd, void * lpMsg ) { +int CMainMenu::ProcessAccelerator ( HWND hWnd, void * lpMsg ) +{ if (m_ResetAccelerators) { m_ResetAccelerators = false; @@ -59,7 +60,8 @@ int CMainMenu::ProcessAccelerator ( HWND hWnd, void * lpMsg ) { return TranslateAccelerator((HWND)hWnd,(HACCEL)m_AccelTable,(LPMSG)lpMsg); } -bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuID) { +bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuID) +{ switch (MenuID) { case ID_FILE_OPEN_ROM: { @@ -529,7 +531,7 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI } /*stdstr CMainMenu::ShortCutString(MSC_MAP & ShortCuts, int MenuID, CMenuShortCutKey::ACCESS_MODE AccessLevel) { - Notify().BreakPoint(__FILE__,__LINE__); + Notify().BreakPoint(__FILEW__,__LINE__); MSC_MAP::iterator MenuItem = ShortCuts.find(MenuID); if (MenuItem == ShortCuts.end()) { return ""; } @@ -598,9 +600,12 @@ std::wstring CMainMenu::GetSaveSlotString (int Slot) stdstr _GoodName = g_Settings->LoadString(Game_GoodName); stdstr _InstantSaveDirectory = g_Settings->LoadString(Directory_InstantSave); stdstr CurrentSaveName; - if (Slot != 0) { + if (Slot != 0) + { CurrentSaveName.Format("%s.pj%d",_GoodName.c_str(), Slot); - } else { + } + else + { CurrentSaveName.Format("%s.pj",_GoodName.c_str()); } stdstr_f FileName("%s%s",_InstantSaveDirectory.c_str(),CurrentSaveName.c_str()); @@ -612,17 +617,19 @@ std::wstring CMainMenu::GetSaveSlotString (int Slot) } if (LastSaveTime.empty()) { - LastSaveTime = GetFileLastMod(FileName); - + LastSaveTime = GetFileLastMod(FileName); } // Check old file name if (LastSaveTime.empty()) { stdstr _RomName = g_Settings->LoadString(Game_GameName); - if (Slot > 0) { + if (Slot > 0) + { FileName.Format("%s%s.pj%d", _InstantSaveDirectory.c_str(), _RomName.c_str(),Slot); - } else { + } + else + { FileName.Format("%s%s.pj",_InstantSaveDirectory.c_str(),_RomName.c_str()); } @@ -636,8 +643,8 @@ std::wstring CMainMenu::GetSaveSlotString (int Slot) LastSaveTime = GetFileLastMod(FileName); } } - - return stdstr_f("%s%s",SlotName.c_str(),LastSaveTime.c_str()).ToUTF16(); + SlotName += LastSaveTime.ToUTF16(); + return SlotName; } void CMainMenu::FillOutMenu ( HMENU hMenu ) diff --git a/Source/Project64/User Interface/Notification Class.cpp b/Source/Project64/User Interface/Notification Class.cpp index c51e1a50b..ba41100ce 100644 --- a/Source/Project64/User Interface/Notification Class.cpp +++ b/Source/Project64/User Interface/Notification Class.cpp @@ -105,20 +105,20 @@ void CNotification::DisplayMessage ( int DisplayTime, const wchar_t * Message, va_end( ap ); - stdstr PluginMessage; - PluginMessage.FromUTF16(Msg); if (InFullScreen()) { if (m_gfxPlugin && m_gfxPlugin->DrawStatus) { WriteTrace(TraceGfxPlugin,__FUNCTION__ ": DrawStatus - Starting"); - m_gfxPlugin->DrawStatus(PluginMessage.c_str(),FALSE); + stdstr PluginMessage; + PluginMessage.FromUTF16(Msg); + m_gfxPlugin->DrawStatus(PluginMessage.c_str(), FALSE); WriteTrace(TraceGfxPlugin,__FUNCTION__ ": DrawStatus - Done"); } } else { - m_hWnd->SetStatusText(0,PluginMessage.c_str()); + m_hWnd->SetStatusText(0, Msg); } } @@ -137,10 +137,7 @@ void CNotification::DisplayMessage2 ( const wchar_t * Message, va_list ap ) con _vsnwprintf( Msg,sizeof(Msg) - 1 ,Message, ap ); va_end( ap ); - stdstr DisplayMessage; - DisplayMessage.FromUTF16(Msg); - - m_hWnd->SetStatusText(1,DisplayMessage.c_str()); + m_hWnd->SetStatusText(1,Msg); } void CNotification::SetGfxPlugin( CGfxPlugin * Plugin ) @@ -302,11 +299,11 @@ bool CNotification::ProcessGuiMessages ( void ) const return m_hWnd->ProcessGuiMessages(); } -void CNotification::BreakPoint ( const char * File, const int LineNumber ) +void CNotification::BreakPoint ( const wchar_t * FileName, const int LineNumber ) { if (g_Settings->LoadBool(Debugger_Enabled)) { - DisplayError(L"Break point found at\n%s\n%d",File, LineNumber); + DisplayError(L"Break point found at\n%s\n%d",FileName, LineNumber); if (IsDebuggerPresent() != 0) { DebugBreak(); diff --git a/Source/Project64/User Interface/Notification Class.h b/Source/Project64/User Interface/Notification Class.h index 8531a8f03..8a7a2faf0 100644 --- a/Source/Project64/User Interface/Notification Class.h +++ b/Source/Project64/User Interface/Notification Class.h @@ -54,7 +54,7 @@ public: void ShowRomBrowser ( void ); void MakeWindowOnTop ( bool OnTop ); void BringToTop ( void ); - void BreakPoint ( const char * File, const int LineNumber); + void BreakPoint ( const wchar_t * FileName, const int LineNumber); bool ProcessGuiMessages ( void ) const; void ChangeFullScreen ( void ) const; void SetGfxPlugin ( CGfxPlugin * Plugin ); diff --git a/Source/Project64/User Interface/Rom Browser Class.cpp b/Source/Project64/User Interface/Rom Browser Class.cpp index 872227f22..1f25f7e35 100644 --- a/Source/Project64/User Interface/Rom Browser Class.cpp +++ b/Source/Project64/User Interface/Rom Browser Class.cpp @@ -12,7 +12,8 @@ CRomBrowser::CRomBrowser (HWND & MainWindow, HWND & StatusWindow ) : m_ShowingRomBrowser(false), m_AllowSelectionLastRom(true) { - if (g_Settings) { + if (g_Settings) + { m_RomIniFile = new CIniFile(g_Settings->LoadString(SupportFile_RomDatabase).c_str()); m_NotesIniFile = new CIniFile(g_Settings->LoadString(SupportFile_Notes).c_str()); m_ExtIniFile = new CIniFile(g_Settings->LoadString(SupportFile_ExtInfo).c_str()); @@ -28,7 +29,8 @@ CRomBrowser::CRomBrowser (HWND & MainWindow, HWND & StatusWindow ) : m_FieldType.resize(m_Fields.size()); } -CRomBrowser::~CRomBrowser (void){ +CRomBrowser::~CRomBrowser (void) +{ m_StopRefresh = true; WatchThreadStop(); DeallocateBrushs(); @@ -248,7 +250,8 @@ int CRomBrowser::CalcSortPosition (DWORD lParam) } size_t index; - for (index = 0; index < m_Fields.size(); index++) { + for (index = 0; index < m_Fields.size(); index++) + { if (_stricmp(m_Fields[index].Name(),SortFieldName.c_str()) == 0) { break; } } if (index >= m_Fields.size()) { continue; } @@ -276,7 +279,8 @@ int CRomBrowser::CalcSortPosition (DWORD lParam) return End + 1; } -void CRomBrowser::AddRomToList (const char * RomLocation, const char * lpLastRom) { +void CRomBrowser::AddRomToList (const char * RomLocation, const char * lpLastRom) +{ ROM_INFO RomInfo; memset(&RomInfo, 0, sizeof(ROM_INFO)); @@ -285,7 +289,8 @@ void CRomBrowser::AddRomToList (const char * RomLocation, const char * lpLastRom AddRomInfoToList(RomInfo,lpLastRom); } -void CRomBrowser::AddRomInfoToList (ROM_INFO &RomInfo , const char * lpLastRom) { +void CRomBrowser::AddRomInfoToList (ROM_INFO &RomInfo , const char * lpLastRom) +{ int ListPos = m_RomInfo.size(); m_RomInfo.push_back(RomInfo); @@ -297,7 +302,6 @@ void CRomBrowser::AddRomInfoToList (ROM_INFO &RomInfo , const char * lpLastRom) lvItem.pszText = LPSTR_TEXTCALLBACK; int index = ListView_InsertItem((HWND)m_hRomList, &lvItem); - int iItem = ListView_GetNextItem((HWND)m_hRomList, -1, LVNI_SELECTED); //if (iItem == -1) { return; } @@ -314,23 +318,30 @@ void CRomBrowser::AddRomInfoToList (ROM_INFO &RomInfo , const char * lpLastRom) } } -void CRomBrowser::AllocateBrushs (void) { - for (size_t count = 0; count < m_RomInfo.size(); count++) { - if (m_RomInfo[count].SelColor == -1) { +void CRomBrowser::AllocateBrushs (void) +{ + for (size_t count = 0; count < m_RomInfo.size(); count++) + { + if (m_RomInfo[count].SelColor == -1) + { m_RomInfo[count].SelColorBrush = (DWORD)((HBRUSH)(COLOR_HIGHLIGHT + 1)); - } else { + } + else + { m_RomInfo[count].SelColorBrush = (DWORD)CreateSolidBrush(m_RomInfo[count].SelColor); } } } -DWORD CRomBrowser::AsciiToHex (char * HexValue) { +DWORD CRomBrowser::AsciiToHex (char * HexValue) +{ DWORD Count, Finish, Value = 0; Finish = strlen(HexValue); if (Finish > 8 ) { Finish = 8; } - for (Count = 0; Count < Finish; Count++){ + for (Count = 0; Count < Finish; Count++) + { Value = (Value << 4); switch( HexValue[Count] ) { case '0': break; @@ -364,21 +375,26 @@ DWORD CRomBrowser::AsciiToHex (char * HexValue) { } -void CRomBrowser::CreateRomListControl (void) { +void CRomBrowser::CreateRomListControl (void) +{ m_hRomList = (HWND)CreateWindowEx( WS_EX_CLIENTEDGE,WC_LISTVIEW,NULL, WS_TABSTOP | WS_VISIBLE | WS_CHILD | LVS_OWNERDRAWFIXED | - WS_BORDER | LVS_SINGLESEL | LVS_REPORT, - 0,0,0,0,(HWND)m_MainWindow,(HMENU)IDC_ROMLIST,GetModuleHandle(NULL),NULL); + LVS_SINGLESEL | LVS_REPORT, + 0,0,0,0,m_MainWindow,(HMENU)IDC_ROMLIST,GetModuleHandle(NULL),NULL); ResetRomBrowserColomuns(); LoadRomList(); } -void CRomBrowser::DeallocateBrushs (void) { - for (size_t count = 0; count < m_RomInfo.size(); count++) { - if (m_RomInfo[count].SelColor == -1) { +void CRomBrowser::DeallocateBrushs (void) +{ + for (size_t count = 0; count < m_RomInfo.size(); count++) + { + if (m_RomInfo[count].SelColor == -1) + { continue; } - if (m_RomInfo[count].SelColorBrush) { + if (m_RomInfo[count].SelColorBrush) + { DeleteObject((HBRUSH)m_RomInfo[count].SelColorBrush); m_RomInfo[count].SelColorBrush = NULL; } @@ -387,9 +403,6 @@ void CRomBrowser::DeallocateBrushs (void) { void CRomBrowser::FillRomExtensionInfo(ROM_INFO * pRomInfo) { - stdstr NoGoodName; - NoGoodName.FromUTF16(GS(RB_NOT_GOOD_FILE)); - //Initialize the structure pRomInfo->UserNotes[0] = 0; pRomInfo->Developer[0] = 0; @@ -398,7 +411,7 @@ void CRomBrowser::FillRomExtensionInfo(ROM_INFO * pRomInfo) pRomInfo->Players = 1; pRomInfo->CoreNotes[0] = 0; pRomInfo->PluginNotes[0] = 0; - strcpy(pRomInfo->GoodName,NoGoodName.c_str()); + strcpy(pRomInfo->GoodName,"#340#"); strcpy(pRomInfo->Status,"Unknown"); //Get File Identifier @@ -406,36 +419,45 @@ void CRomBrowser::FillRomExtensionInfo(ROM_INFO * pRomInfo) sprintf(Identifier,"%08X-%08X-C:%X",pRomInfo->CRC1,pRomInfo->CRC2,pRomInfo->Country); //Rom Notes - if (m_Fields[RB_UserNotes].Pos() >= 0) { + if (m_Fields[RB_UserNotes].Pos() >= 0) + { m_NotesIniFile->GetString(Identifier,"Note","",pRomInfo->UserNotes,sizeof(pRomInfo->UserNotes)); } //Rom Extension info - if (m_Fields[RB_Developer].Pos() >= 0) { + if (m_Fields[RB_Developer].Pos() >= 0) + { m_ExtIniFile->GetString(Identifier,"Developer","",pRomInfo->Developer,sizeof(pRomInfo->Developer)); } - if (m_Fields[RB_ReleaseDate].Pos() >= 0) { + if (m_Fields[RB_ReleaseDate].Pos() >= 0) + { m_ExtIniFile->GetString(Identifier,"ReleaseDate","",pRomInfo->ReleaseDate,sizeof(pRomInfo->ReleaseDate)); } - if (m_Fields[RB_Genre].Pos() >= 0) { + if (m_Fields[RB_Genre].Pos() >= 0) + { m_ExtIniFile->GetString(Identifier,"Genre","",pRomInfo->Genre,sizeof(pRomInfo->Genre)); } - if (m_Fields[RB_Players].Pos() >= 0) { + if (m_Fields[RB_Players].Pos() >= 0) + { m_ExtIniFile->GetNumber(Identifier,"Players",1,(DWORD &)pRomInfo->Players); } - if (m_Fields[RB_ForceFeedback].Pos() >= 0) { + if (m_Fields[RB_ForceFeedback].Pos() >= 0) + { m_ExtIniFile->GetString(Identifier,"ForceFeedback","unknown",pRomInfo->ForceFeedback,sizeof(pRomInfo->ForceFeedback)); } //Rom Settings - if (m_Fields[RB_GoodName].Pos() >= 0) { + if (m_Fields[RB_GoodName].Pos() >= 0) + { m_RomIniFile->GetString(Identifier,"Good Name",pRomInfo->GoodName,pRomInfo->GoodName,sizeof(pRomInfo->GoodName)); } m_RomIniFile->GetString(Identifier,"Status",pRomInfo->Status,pRomInfo->Status,sizeof(pRomInfo->Status)); - if (m_Fields[RB_CoreNotes].Pos() >= 0) { + if (m_Fields[RB_CoreNotes].Pos() >= 0) + { m_RomIniFile->GetString(Identifier,"Core Note","",pRomInfo->CoreNotes,sizeof(pRomInfo->CoreNotes)); } - if (m_Fields[RB_PluginNotes].Pos() >= 0) { + if (m_Fields[RB_PluginNotes].Pos() >= 0) + { m_RomIniFile->GetString(Identifier,"Plugin Note","",pRomInfo->PluginNotes,sizeof(pRomInfo->PluginNotes)); } @@ -449,9 +471,12 @@ void CRomBrowser::FillRomExtensionInfo(ROM_INFO * pRomInfo) sprintf(String,"%s.Sel",pRomInfo->Status); m_RomIniFile->GetString("Rom Status",String,"FFFFFFFF",String,9); int selcol = AsciiToHex(String); - if (selcol < 0) { + if (selcol < 0) + { pRomInfo->SelColor = - 1; - } else { + } + else + { selcol = (AsciiToHex(String) & 0xFFFFFF); selcol = (selcol & 0x00FF00) | ((selcol >> 0x10) & 0xFF) | ((selcol & 0xFF) << 0x10); pRomInfo->SelColor = selcol; @@ -464,7 +489,8 @@ void CRomBrowser::FillRomExtensionInfo(ROM_INFO * pRomInfo) pRomInfo->SelTextColor = (pRomInfo->SelTextColor & 0x00FF00) | ((pRomInfo->SelTextColor >> 0x10) & 0xFF) | ((pRomInfo->SelTextColor & 0xFF) << 0x10); } -bool CRomBrowser::FillRomInfo(ROM_INFO * pRomInfo) { +bool CRomBrowser::FillRomInfo(ROM_INFO * pRomInfo) +{ int count; BYTE RomData[0x1000]; @@ -477,13 +503,17 @@ bool CRomBrowser::FillRomInfo(ROM_INFO * pRomInfo) { if (strstr(pRomInfo->szFullFileName,"?") != NULL) { strcpy(pRomInfo->FileName,strstr(pRomInfo->szFullFileName,"?") + 1); - } else { + } + else + { char drive[_MAX_DRIVE] ,dir[_MAX_DIR], ext[_MAX_EXT]; _splitpath( pRomInfo->szFullFileName, drive, dir, pRomInfo->FileName, ext ); } - if (m_Fields[RB_InternalName].Pos() >= 0) { + if (m_Fields[RB_InternalName].Pos() >= 0) + { memcpy(pRomInfo->InternalName,(void *)(RomData + 0x20),20); - for( count = 0 ; count < 20; count += 4 ) { + for( count = 0 ; count < 20; count += 4 ) + { pRomInfo->InternalName[count] ^= pRomInfo->InternalName[count+3]; pRomInfo->InternalName[count + 3] ^= pRomInfo->InternalName[count]; pRomInfo->InternalName[count] ^= pRomInfo->InternalName[count+3]; @@ -504,9 +534,12 @@ bool CRomBrowser::FillRomInfo(ROM_INFO * pRomInfo) { FillRomExtensionInfo(pRomInfo); - if (pRomInfo->SelColor == -1) { + if (pRomInfo->SelColor == -1) + { pRomInfo->SelColorBrush = (DWORD)((HBRUSH)(COLOR_HIGHLIGHT + 1)); - } else { + } + else + { pRomInfo->SelColorBrush = (DWORD)CreateSolidBrush(pRomInfo->SelColor); } @@ -528,7 +561,8 @@ bool CRomBrowser::GetRomFileNames( strlist & FileList, const CPath & BaseDirecto return false; } - do { + do + { if (InWatchThread && WaitForSingleObject(m_WatchStopEvent,0) != WAIT_TIMEOUT) { return false; @@ -541,14 +575,16 @@ bool CRomBrowser::GetRomFileNames( strlist & FileList, const CPath & BaseDirecto stdstr CurrentDir = Directory + SearchPath.GetCurrentDirectory() + "\\"; GetRomFileNames(FileList,BaseDirectory,CurrentDir,InWatchThread); } - } else { + } + else + { AddFileNameToList(FileList, Directory, SearchPath); } } while (SearchPath.FindNext()); return true; } -void CRomBrowser::NotificationCB ( LPCSTR Status, CRomBrowser * /*_this*/ ) +void CRomBrowser::NotificationCB ( LPCWSTR Status, CRomBrowser * /*_this*/ ) { g_Notify->DisplayMessage(5,L"%s",Status); } @@ -585,7 +621,8 @@ void CRomBrowser::FillRomList ( strlist & FileList, const CPath & BaseDirectory, return; } - do { + do + { WriteTraceF(TraceDebug,__FUNCTION__ ": 2 %s m_StopRefresh = %d",(LPCSTR)SearchPath,m_StopRefresh); if (m_StopRefresh) { break; } @@ -635,12 +672,14 @@ void CRomBrowser::FillRomList ( strlist & FileList, const CPath & BaseDirectory, } ROM_INFO RomInfo; - std::string FileName = ZipFile.FileNameIndex(i); - if (FileName.length() == 0) + std::wstring FileNameW = ZipFile.FileNameIndex(i); + if (FileNameW.length() == 0) { continue; } + stdstr FileName; + FileName.FromUTF16(FileNameW.c_str()); WriteTrace(TraceDebug,__FUNCTION__ ": 5"); char drive2[_MAX_DRIVE] ,dir2[_MAX_DIR], FileName2[MAX_PATH], ext2[_MAX_EXT]; _splitpath( FileName.c_str(), drive2, dir2, FileName2, ext2 ); @@ -703,7 +742,8 @@ void CRomBrowser::FillRomList ( strlist & FileList, const CPath & BaseDirectory, WriteTrace(TraceDebug,__FUNCTION__ ": 14"); memcpy(RomInfo.InternalName,(void *)(RomData + 0x20),20); - for( int count = 0 ; count < 20; count += 4 ) { + for( int count = 0 ; count < 20; count += 4 ) + { RomInfo.InternalName[count] ^= RomInfo.InternalName[count+3]; RomInfo.InternalName[count + 3] ^= RomInfo.InternalName[count]; RomInfo.InternalName[count] ^= RomInfo.InternalName[count+3]; @@ -724,9 +764,12 @@ void CRomBrowser::FillRomList ( strlist & FileList, const CPath & BaseDirectory, WriteTrace(TraceDebug,__FUNCTION__ ": 16"); FillRomExtensionInfo(&RomInfo); - if (RomInfo.SelColor == -1) { + if (RomInfo.SelColor == -1) + { RomInfo.SelColorBrush = (DWORD)((HBRUSH)(COLOR_HIGHLIGHT + 1)); - } else { + } + else + { RomInfo.SelColorBrush = (DWORD)CreateSolidBrush(RomInfo.SelColor); } WriteTrace(TraceDebug,__FUNCTION__ ": 17"); @@ -739,20 +782,21 @@ void CRomBrowser::FillRomList ( strlist & FileList, const CPath & BaseDirectory, } continue; } - } while (SearchPath.FindNext()); - m_ZipIniFile->FlushChanges(); } -int CRomBrowser::GetCicChipID (BYTE * RomData) { +int CRomBrowser::GetCicChipID (BYTE * RomData) +{ __int64 CRC = 0; int count; - for (count = 0x40; count < 0x1000; count += 4) { + for (count = 0x40; count < 0x1000; count += 4) + { CRC += *(DWORD *)(RomData+count); } - switch (CRC) { + switch (CRC) + { case 0x000000D0027FDF31: return CIC_NUS_6101; case 0x000000CFFB631223: return CIC_NUS_6101; case 0x000000D057C85244: return CIC_NUS_6102; @@ -764,7 +808,8 @@ int CRomBrowser::GetCicChipID (BYTE * RomData) { } } -void CRomBrowser::HighLightLastRom(void) { +void CRomBrowser::HighLightLastRom(void) +{ if (!m_AllowSelectionLastRom) { return; @@ -799,7 +844,8 @@ void CRomBrowser::HighLightLastRom(void) { } //if the last rom then highlight the item - if (_stricmp(pRomInfo->szFullFileName,lpLastRom) == 0) { + if (_stricmp(pRomInfo->szFullFileName,lpLastRom) == 0) + { ListView_SetItemState((HWND)m_hRomList,index,LVIS_SELECTED | LVIS_FOCUSED,LVIS_SELECTED | LVIS_FOCUSED); ListView_EnsureVisible((HWND)m_hRomList,index,FALSE); return; @@ -807,10 +853,12 @@ void CRomBrowser::HighLightLastRom(void) { } } -bool CRomBrowser::LoadDataFromRomFile(char * FileName,BYTE * Data,int DataLen, int * RomSize, FILE_FORMAT & FileFormat) { +bool CRomBrowser::LoadDataFromRomFile(char * FileName,BYTE * Data,int DataLen, int * RomSize, FILE_FORMAT & FileFormat) +{ BYTE Test[4]; - if (_strnicmp(&FileName[strlen(FileName)-4], ".ZIP",4) == 0 ){ + if (_strnicmp(&FileName[strlen(FileName)-4], ".ZIP",4) == 0 ) + { int len, port = 0, FoundRom; unz_file_info info; char zname[132]; @@ -820,46 +868,55 @@ bool CRomBrowser::LoadDataFromRomFile(char * FileName,BYTE * Data,int DataLen, i port = unzGoToFirstFile(file); FoundRom = FALSE; - while(port == UNZ_OK && FoundRom == FALSE) { + while(port == UNZ_OK && FoundRom == FALSE) + { unzGetCurrentFileInfo(file, &info, zname, 128, NULL,0, NULL,0); - if (unzLocateFile(file, zname, 1) != UNZ_OK ) { + if (unzLocateFile(file, zname, 1) != UNZ_OK ) + { unzClose(file); return true; } - if( unzOpenCurrentFile(file) != UNZ_OK ) { + if( unzOpenCurrentFile(file) != UNZ_OK ) + { unzClose(file); return true; } unzReadCurrentFile(file,Test,4); - if (CN64Rom::IsValidRomImage(Test)) { + if (CN64Rom::IsValidRomImage(Test)) + { FoundRom = true; - //RomFileSize = info.uncompressed_size; memcpy(Data,Test,4); len = unzReadCurrentFile(file,&Data[4],DataLen - 4) + 4; - if ((int)DataLen != len) { + if ((int)DataLen != len) + { unzCloseCurrentFile(file); unzClose(file); return false; } *RomSize = info.uncompressed_size; - if(unzCloseCurrentFile(file) == UNZ_CRCERROR) { + if(unzCloseCurrentFile(file) == UNZ_CRCERROR) + { unzClose(file); return false; } unzClose(file); } - if (FoundRom == false) { + if (FoundRom == false) + { unzCloseCurrentFile(file); port = unzGoToNextFile(file); } } - if (FoundRom == false) { + if (FoundRom == false) + { return false; } FileFormat = Format_Zip; - } else { + } + else + { DWORD dwRead; HANDLE hFile; @@ -886,9 +943,11 @@ void CRomBrowser::ByteSwapRomData (BYTE * Data, int DataLen) { int count; - switch (*((DWORD *)&Data[0])) { + switch (*((DWORD *)&Data[0])) + { case 0x12408037: - for( count = 0 ; count < DataLen; count += 4 ) { + for( count = 0 ; count < DataLen; count += 4 ) + { Data[count] ^= Data[count+2]; Data[count + 2] ^= Data[count]; Data[count] ^= Data[count+2]; @@ -898,7 +957,8 @@ void CRomBrowser::ByteSwapRomData (BYTE * Data, int DataLen) } break; case 0x40123780: - for( count = 0 ; count < DataLen; count += 4 ) { + for( count = 0 ; count < DataLen; count += 4 ) + { Data[count] ^= Data[count+3]; Data[count + 3] ^= Data[count]; Data[count] ^= Data[count+3]; @@ -1050,8 +1110,8 @@ void CRomBrowser::RefreshRomBrowserStatic (CRomBrowser * _this) void CRomBrowser::ResetRomBrowserColomuns (void) { size_t Coloumn, index; - LV_COLUMN lvColumn; - char szString[300]; + LV_COLUMNW lvColumn; + wchar_t szString[300]; GetFieldInfo(m_Fields); @@ -1079,13 +1139,11 @@ void CRomBrowser::ResetRomBrowserColomuns (void) m_FieldType[Coloumn] = -1; break; } - stdstr title; - title.FromUTF16(GS(m_Fields[index].LangID())); m_FieldType[Coloumn] = m_Fields[index].ID(); lvColumn.cx = m_Fields[index].ColWidth(); - strncpy(szString, title.c_str(), sizeof(szString)); - ListView_InsertColumn(m_hRomList, Coloumn, &lvColumn); + wcsncpy(szString, GS(m_Fields[index].LangID()), sizeof(szString) / sizeof(szString[0])); + SendMessage(m_hRomList, LVM_INSERTCOLUMNW, (WPARAM)(int)(Coloumn), (LPARAM)(const LV_COLUMNW *)(&lvColumn)); } } @@ -1180,7 +1238,13 @@ bool CRomBrowser::RomListDrawItem(int idCtrl, DWORD lParam) ListView_GetItemText((HWND)m_hRomList,ditem->itemID, 0, String, sizeof(String)); memcpy(&rcDraw,&rcItem,sizeof(RECT)); rcDraw.right -= 3; - DrawText(ditem->hDC, String, strlen(String), &rcDraw, DT_LEFT | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER); + std::wstring text = stdstr(String).ToUTF16(); + if (wcscmp(L"#340#", text.c_str()) == 0) + { + text = GS(RB_NOT_GOOD_FILE); + } + + DrawTextW(ditem->hDC, text.c_str(), text.length(), &rcDraw, DT_LEFT | DT_SINGLELINE | DT_NOPREFIX | DT_VCENTER); memset(&lvc,0,sizeof(lvc)); lvc.mask = LVCF_FMT | LVCF_WIDTH; @@ -1477,7 +1541,7 @@ void CRomBrowser::RomList_PopupMenu(DWORD /*pnmh*/) GetCursorPos(&Mouse); //Show the menu - TrackPopupMenu(hPopupMenu, 0, Mouse.x, Mouse.y, 0,(HWND)m_MainWindow, NULL); + TrackPopupMenu(hPopupMenu, 0, Mouse.x, Mouse.y, 0,m_MainWindow, NULL); DestroyMenu(hMenu); } @@ -1579,7 +1643,8 @@ int CALLBACK CRomBrowser::SelectRomDirCallBack(HWND hwnd,DWORD uMsg,DWORD /*lp*/ // It would be FALSE if you were passing a pidl. if (lpData) { - SendMessage((HWND)hwnd,BFFM_SETSELECTION,TRUE,lpData); + SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData); + SetWindowTextW(hwnd, GS(DIR_SELECT_ROM)); } break; } @@ -1588,24 +1653,21 @@ int CALLBACK CRomBrowser::SelectRomDirCallBack(HWND hwnd,DWORD uMsg,DWORD /*lp*/ void CRomBrowser::SelectRomDir(void) { - char SelectedDir[MAX_PATH]; + wchar_t SelectedDir[MAX_PATH]; LPITEMIDLIST pidl; - BROWSEINFO bi; - - stdstr WindowTitle; - WindowTitle.FromUTF16(GS(SELECT_ROM_DIR)); + BROWSEINFOW bi; WriteTrace(TraceDebug,__FUNCTION__ " 1"); stdstr RomDir = g_Settings->LoadString(Directory_Game); - bi.hwndOwner = (HWND)m_MainWindow; + bi.hwndOwner = m_MainWindow; bi.pidlRoot = NULL; bi.pszDisplayName = SelectedDir; - bi.lpszTitle = WindowTitle.c_str(); + bi.lpszTitle = GS(SELECT_ROM_DIR); bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS; bi.lpfn = (BFFCALLBACK)SelectRomDirCallBack; bi.lParam = (DWORD)RomDir.c_str(); WriteTrace(TraceDebug,__FUNCTION__ " 2"); - if ((pidl = SHBrowseForFolder(&bi)) != NULL) + if ((pidl = SHBrowseForFolderW(&bi)) != NULL) { WriteTrace(TraceDebug,__FUNCTION__ " 3"); char Directory[_MAX_PATH]; @@ -1634,11 +1696,11 @@ void CRomBrowser::FixRomListWindow (void) { //Change the window Style long Style = GetWindowLong(m_MainWindow,GWL_STYLE) | WS_SIZEBOX | WS_MAXIMIZEBOX; - SetWindowLong((HWND)m_MainWindow,GWL_STYLE,Style); + SetWindowLong(m_MainWindow,GWL_STYLE,Style); //Get the current window size RECT rect; - GetWindowRect((HWND)m_MainWindow, &rect); + GetWindowRect(m_MainWindow, &rect); //We find the middle position of the screen, we use this if theres no setting int X = (GetSystemMetrics(SM_CXSCREEN) - (rect.right - rect.left)) / 2; @@ -1662,12 +1724,12 @@ void CRomBrowser::FixRomListWindow (void) rcClient.bottom = Height; rcClient.left = 0; rcClient.right = Width; - AdjustWindowRect(&rcClient,GetWindowLong((HWND)m_MainWindow,GWL_STYLE),true); + AdjustWindowRect(&rcClient,GetWindowLong(m_MainWindow,GWL_STYLE),true); int WindowHeight = rcClient.bottom - rcClient.top; int WindowWidth = rcClient.right - rcClient.left; - SetWindowPos((HWND)m_MainWindow,NULL,0,0,WindowWidth,WindowHeight,SWP_NOMOVE|SWP_NOZORDER); + SetWindowPos(m_MainWindow,NULL,0,0,WindowWidth,WindowHeight,SWP_NOMOVE|SWP_NOZORDER); } void CRomBrowser::ShowRomList (void) @@ -1689,7 +1751,7 @@ void CRomBrowser::ShowRomList (void) m_Visible = true; RECT rcWindow; - if (GetClientRect((HWND)m_MainWindow,&rcWindow)) + if (GetClientRect(m_MainWindow,&rcWindow)) { ResizeRomList((WORD)rcWindow.right,(WORD)rcWindow.bottom); } @@ -1704,7 +1766,7 @@ void CRomBrowser::ShowRomList (void) void CRomBrowser::HideRomList (void) { if (!RomBrowserVisible()) { return; } - ShowWindow((HWND)m_MainWindow,SW_HIDE); + ShowWindow(m_MainWindow,SW_HIDE); SaveRomListColoumnInfo(); WatchThreadStop(); @@ -1716,28 +1778,28 @@ void CRomBrowser::HideRomList (void) EnableWindow((HWND)m_hRomList,FALSE); ShowWindow((HWND)m_hRomList,SW_HIDE); - if (g_Settings->LoadBool(RomBrowser_Maximized)) { ShowWindow((HWND)m_MainWindow,SW_RESTORE); } + if (g_Settings->LoadBool(RomBrowser_Maximized)) { ShowWindow(m_MainWindow,SW_RESTORE); } //Change the window style - long Style = GetWindowLong((HWND)m_MainWindow,GWL_STYLE) & ~(WS_SIZEBOX | WS_MAXIMIZEBOX); - SetWindowLong((HWND)m_MainWindow,GWL_STYLE,Style); + long Style = GetWindowLong(m_MainWindow,GWL_STYLE) & ~(WS_SIZEBOX | WS_MAXIMIZEBOX); + SetWindowLong(m_MainWindow,GWL_STYLE,Style); //Move window to correct location RECT rect; - GetWindowRect((HWND)m_MainWindow,&rect); + GetWindowRect(m_MainWindow,&rect); int X = (GetSystemMetrics( SM_CXSCREEN ) - (rect.right - rect.left)) / 2; int Y = (GetSystemMetrics( SM_CYSCREEN ) - (rect.bottom - rect.top)) / 2; g_Settings->LoadDword(UserInterface_MainWindowTop,(DWORD &)Y); g_Settings->LoadDword(UserInterface_MainWindowLeft,(DWORD &)X); - SetWindowPos((HWND)m_MainWindow,NULL,X,Y,0,0,SWP_NOZORDER|SWP_NOSIZE); + SetWindowPos(m_MainWindow,NULL,X,Y,0,0,SWP_NOZORDER|SWP_NOSIZE); //Mark the window as not visible m_Visible = false; //Make the main window visible again - ShowWindow((HWND)m_MainWindow,SW_SHOW); - BringWindowToTop((HWND)m_MainWindow); - PostMessage((HWND)m_MainWindow, WM_MAKE_FOCUS, 0,0 ); + ShowWindow(m_MainWindow,SW_SHOW); + BringWindowToTop(m_MainWindow); + PostMessage(m_MainWindow, WM_MAKE_FOCUS, 0,0 ); } bool CRomBrowser::RomDirNeedsRefresh ( void ) diff --git a/Source/Project64/User Interface/Rom Browser.h b/Source/Project64/User Interface/Rom Browser.h index b72c22a85..491f9d2df 100644 --- a/Source/Project64/User Interface/Rom Browser.h +++ b/Source/Project64/User Interface/Rom Browser.h @@ -173,7 +173,7 @@ class CRomBrowser bool GetRomFileNames ( strlist & FileList, const CPath & BaseDirectory, const stdstr & Directory, bool InWatchThread ); MD5 RomListHash ( strlist & FileList ); - static void __stdcall NotificationCB ( LPCSTR Status, CRomBrowser * _this ); + static void __stdcall NotificationCB ( LPCWSTR Status, CRomBrowser * _this ); //Watch Directory Changed function HANDLE m_WatchThread, m_WatchStopEvent; diff --git a/Source/Project64/User Interface/Settings Config.cpp b/Source/Project64/User Interface/Settings Config.cpp index c810f090c..fb4bf44e6 100644 --- a/Source/Project64/User Interface/Settings Config.cpp +++ b/Source/Project64/User Interface/Settings Config.cpp @@ -27,8 +27,16 @@ void CSettingConfig::Display(void * ParentWindow) g_BaseSystem->ExternalEvent(SysEvent_PauseCPU_Settings); } - DoModal((HWND)ParentWindow); - + BOOL result = m_thunk.Init(NULL, NULL); + if (result) + { + _AtlWinModule.AddCreateWndData(&m_thunk.cd, this); +#ifdef _DEBUG + m_bModal = true; +#endif //_DEBUG + ::DialogBoxParamW(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCEW(IDD), (HWND)ParentWindow, StartDialogProc, NULL); + } + if (g_BaseSystem) { g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_Settings); @@ -80,6 +88,13 @@ LRESULT CSettingConfig::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /* CConfigSettingSection * SettingsSection; + //Set the text for all gui Items + SetDlgItemTextW(m_hWnd, IDC_RESET_PAGE, GS(BOTTOM_RESET_PAGE)); + SetDlgItemTextW(m_hWnd, IDC_RESET_ALL, GS(BOTTOM_RESET_ALL)); + SetDlgItemTextW(m_hWnd, IDOK, GS(CHEAT_OK)); + SetDlgItemTextW(m_hWnd, IDCANCEL, GS(CHEAT_CANCEL)); + SetDlgItemTextW(m_hWnd, IDAPPLY, GS(BOTTOM_APPLY)); + if (m_GameConfig) { if (g_Settings->LoadBool(Setting_RdbEditor)) diff --git a/Source/Project64/User Interface/Settings/Settings Page - Advanced Options.cpp b/Source/Project64/User Interface/Settings/Settings Page - Advanced Options.cpp index c0da4c745..c91c6e1bc 100644 --- a/Source/Project64/User Interface/Settings/Settings Page - Advanced Options.cpp +++ b/Source/Project64/User Interface/Settings/Settings Page - Advanced Options.cpp @@ -17,6 +17,15 @@ CAdvancedOptionsPage::CAdvancedOptionsPage (HWND hParent, const RECT & rcDispay { return; } + + //Set the text for all gui Items + SetDlgItemTextW(m_hWnd, IDC_START_ON_ROM_OPEN, GS(ADVANCE_AUTO_START)); + SetDlgItemTextW(m_hWnd, IDC_ZIP, GS(ADVANCE_COMPRESS)); + SetDlgItemTextW(m_hWnd, IDC_DEBUGGER, GS(ADVANCE_DEBUGGER)); + SetDlgItemTextW(m_hWnd, IDC_REMEMBER_CHEAT, GS(OPTION_REMEMBER_CHEAT)); + SetDlgItemTextW(m_hWnd, IDC_CHECK_RUNNING, GS(OPTION_CHECK_RUNNING)); + SetDlgItemTextW(m_hWnd, IDC_DISPLAY_FRAMERATE, GS(OPTION_CHANGE_FR)); + AddModCheckBox(GetDlgItem(IDC_START_ON_ROM_OPEN),Setting_AutoStart); AddModCheckBox(GetDlgItem(IDC_ZIP),Setting_AutoZipInstantSave); AddModCheckBox(GetDlgItem(IDC_DEBUGGER),Debugger_Enabled); diff --git a/Source/Project64/User Interface/Settings/Settings Page - Directories.cpp b/Source/Project64/User Interface/Settings/Settings Page - Directories.cpp index a217f3653..a793e3ad3 100644 --- a/Source/Project64/User Interface/Settings/Settings Page - Directories.cpp +++ b/Source/Project64/User Interface/Settings/Settings Page - Directories.cpp @@ -63,7 +63,7 @@ int CALLBACK COptionsDirectoriesPage::SelectDirCallBack (HWND hwnd,DWORD uMsg,DW // It would be FALSE if you were passing a pidl. if (lpData) { - SendMessage((HWND)hwnd,BFFM_SETSELECTION,TRUE,lpData); + SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData); } break; } diff --git a/Source/Project64/User Interface/Settings/Settings Page - Game - General.cpp b/Source/Project64/User Interface/Settings/Settings Page - Game - General.cpp index 1fde124eb..169a38d87 100644 --- a/Source/Project64/User Interface/Settings/Settings Page - Game - General.cpp +++ b/Source/Project64/User Interface/Settings/Settings Page - Game - General.cpp @@ -19,6 +19,23 @@ CGameGeneralPage::CGameGeneralPage (HWND hParent, const RECT & rcDispay ) return; } + //Set the text for all gui Items + SetDlgItemTextW(m_hWnd, IDC_GOOD_NAME_TEXT, GS(RB_GOODNAME)); + + SetDlgItemTextW(m_hWnd, IDC_MEMORY_SIZE_TEXT, GS(ROM_MEM_SIZE)); + SetDlgItemTextW(m_hWnd, IDC_SAVE_TYPE_TEXT, GS(ROM_SAVE_TYPE)); + SetDlgItemTextW(m_hWnd, IDC_COUNTFACT_TEXT, GS(ROM_COUNTER_FACTOR)); + SetDlgItemTextW(m_hWnd, IDC_VIREFESH_TEXT, GS(ROM_VIREFRESH)); + SetDlgItemTextW(m_hWnd, IDC_COUNTPERBYTE_TEXT, GS(ROM_COUNTPERBYTE)); + + SetDlgItemTextW(m_hWnd, IDC_ROM_32BIT, GS(ROM_32BIT)); + SetDlgItemTextW(m_hWnd, IDC_ROM_FIXEDAUDIO, GS(ROM_FIXED_AUDIO)); + SetDlgItemTextW(m_hWnd, IDC_DELAY_DP, GS(ROM_DELAY_DP)); + SetDlgItemTextW(m_hWnd, IDC_SYNC_AUDIO, GS(ROM_SYNC_AUDIO)); + SetDlgItemTextW(m_hWnd, IDC_USE_TLB, GS(ROM_USE_TLB)); + SetDlgItemTextW(m_hWnd, IDC_DELAY_SI, GS(ROM_DELAY_SI)); + SetDlgItemTextW(m_hWnd, IDC_AUDIO_SIGNAL, GS(ROM_AUDIO_SIGNAL)); + AddModCheckBox(GetDlgItem(IDC_ROM_32BIT),Game_32Bit); AddModCheckBox(GetDlgItem(IDC_SYNC_AUDIO),Game_SyncViaAudio); AddModCheckBox(GetDlgItem(IDC_ROM_FIXEDAUDIO),Game_FixedAudio); diff --git a/Source/Project64/User Interface/Settings/Settings Page - Game - Recompiler.cpp b/Source/Project64/User Interface/Settings/Settings Page - Game - Recompiler.cpp index eeaf4d8e0..91325cfa5 100644 --- a/Source/Project64/User Interface/Settings/Settings Page - Game - Recompiler.cpp +++ b/Source/Project64/User Interface/Settings/Settings Page - Game - Recompiler.cpp @@ -19,6 +19,21 @@ CGameRecompilePage::CGameRecompilePage (HWND hParent, const RECT & rcDispay ) return; } + //Set the text for all gui Items + SetDlgItemTextW(m_hWnd, IDC_CPU_TYPE_TEXT, GS(ROM_CPU_STYLE)); + SetDlgItemTextW(m_hWnd, IDC_FUNCFIND_TEXT, GS(ROM_FUNC_FIND)); + + SetDlgItemTextW(m_hWnd, IDC_ROM_REGCACHE, GS(ROM_REG_CACHE)); + SetDlgItemTextW(m_hWnd, IDC_BLOCK_LINKING, GS(ADVANCE_ABL)); + SetDlgItemTextW(m_hWnd, IDC_ROM_FASTSP, GS(ROM_FAST_SP)); + + SetDlgItemTextW(m_hWnd, IDC_SMM_FRAME, GS(ADVANCE_SMCM)); + SetDlgItemTextW(m_hWnd, IDC_SMM_CACHE, GS(ADVANCE_SMM_CACHE)); + SetDlgItemTextW(m_hWnd, IDC_SMM_DMA, GS(ADVANCE_SMM_PIDMA)); + SetDlgItemTextW(m_hWnd, IDC_SMM_VALIDATE, GS(ADVANCE_SMM_VALIDATE)); + SetDlgItemTextW(m_hWnd, IDC_SMM_TLB, GS(ADVANCE_SMM_TLB)); + SetDlgItemTextW(m_hWnd, IDC_SMM_PROTECT, GS(ADVANCE_SMM_PROTECT)); + m_SelfModGroup.Attach(GetDlgItem(IDC_SMM_FRAME)); AddModCheckBox(GetDlgItem(IDC_ROM_REGCACHE),Game_RegCache); diff --git a/Source/Project64/User Interface/Settings/Settings Page - Keyboard Shortcuts.cpp b/Source/Project64/User Interface/Settings/Settings Page - Keyboard Shortcuts.cpp index ceb3d51cd..0f794a7b9 100644 --- a/Source/Project64/User Interface/Settings/Settings Page - Keyboard Shortcuts.cpp +++ b/Source/Project64/User Interface/Settings/Settings Page - Keyboard Shortcuts.cpp @@ -25,7 +25,8 @@ COptionsShortCutsPage::COptionsShortCutsPage (HWND hParent, const RECT & rcDispa SetDlgItemTextW(m_hWnd, IDC_S_SELECT_SHORT,GS(ACCEL_SELKEY_TITLE)); SetDlgItemTextW(m_hWnd, IDC_S_CURRENT_ASSIGN,GS(ACCEL_ASSIGNEDTO_TITLE)); SetDlgItemTextW(m_hWnd, IDC_ASSIGN,GS(ACCEL_ASSIGN_BTN)); - SetDlgItemTextW(m_hWnd, IDC_REMOVE,GS(ACCEL_REMOVE_BTN)); + SetDlgItemTextW(m_hWnd, IDC_REMOVE,GS(ACCEL_REMOVE_BTN)); + SetDlgItemTextW(m_hWnd, IDC_KEY_PROMPT, GS(ACCEL_DETECTKEY)); m_CreateNewShortCut.AttachToDlgItem(m_hWnd,IDC_S_SELECT_SHORT); m_CpuState.Attach(GetDlgItem(IDC_C_CPU_STATE)); @@ -102,13 +103,21 @@ void COptionsShortCutsPage::OnCpuStateChanged(UINT /*Code*/, int /*id*/, HWND /* hParent = m_MenuItems.InsertItemW(TVIF_TEXT | TVIF_PARAM,GS(Item->second.Section()),0,0,0,0, Item->second.Section(),TVI_ROOT,TVI_LAST); } - stdstr str; - str.FromUTF16(GS(Item->second.Title())); - str.Replace("&",""); - str.Replace("...",""); + wstring str = GS(Item->second.Title()); + std::wstring::size_type pos = str.find( L"&" ); + while ( pos != std::wstring::npos ) + { + str.replace( pos, 1, L"" ); + pos = str.find( L"&", pos ); + } + pos = str.find( L"..." ); + while ( pos != std::wstring::npos ) + { + str.replace( pos, 3, L"" ); + pos = str.find( L"...", pos ); + } - HTREEITEM hItem = m_MenuItems.InsertItem(TVIF_TEXT | TVIF_PARAM,str.c_str(),0,0,0,0, - (DWORD_PTR)&Item->second,hParent,TVI_LAST); + HTREEITEM hItem = m_MenuItems.InsertItemW(TVIF_TEXT | TVIF_PARAM,str.c_str(),0,0,0,0, (DWORD_PTR)&Item->second,hParent,TVI_LAST); const SHORTCUT_KEY_LIST & ShortCutList = Item->second.GetAccelItems(); for (SHORTCUT_KEY_LIST::const_iterator ShortCut_item = ShortCutList.begin(); ShortCut_item != ShortCutList.end(); ShortCut_item ++) diff --git a/Source/Project64/User Interface/Settings/Settings Page - Options.cpp b/Source/Project64/User Interface/Settings/Settings Page - Options.cpp index e3c23223f..49441f3ea 100644 --- a/Source/Project64/User Interface/Settings/Settings Page - Options.cpp +++ b/Source/Project64/User Interface/Settings/Settings Page - Options.cpp @@ -19,6 +19,16 @@ CGeneralOptionsPage::CGeneralOptionsPage(CSettingConfig * SettingsConfig, HWND h return; } + //Set the text for all gui Items + SetDlgItemTextW(m_hWnd, IDC_AUTOSLEEP, GS(OPTION_AUTO_SLEEP)); + SetDlgItemTextW(m_hWnd, IDC_LOAD_FULLSCREEN, GS(OPTION_AUTO_FULLSCREEN)); + SetDlgItemTextW(m_hWnd, IDC_SCREEN_SAVER, GS(OPTION_DISABLE_SS)); + SetDlgItemTextW(m_hWnd, IDC_BASIC_MODE, GS(OPTION_BASIC_MODE)); + SetDlgItemTextW(m_hWnd, IDC_MAXROMS_TXT, GS(RB_MAX_ROMS)); + SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT2, GS(RB_ROMS)); + SetDlgItemTextW(m_hWnd, IDC_MAXROMDIR_TXT, GS(RB_MAX_DIRS)); + SetDlgItemTextW(m_hWnd, IDC_ROMSEL_TEXT4, GS(RB_DIRS)); + AddModCheckBox(GetDlgItem(IDC_AUTOSLEEP),Setting_AutoSleep); AddModCheckBox(GetDlgItem(IDC_LOAD_FULLSCREEN),Setting_AutoFullscreen); AddModCheckBox(GetDlgItem(IDC_SCREEN_SAVER),Setting_DisableScrSaver); @@ -57,6 +67,7 @@ bool CGeneralOptionsPage::EnableReset ( void ) void CGeneralOptionsPage::ResetPage() { CSettingsPageImpl::ResetPage(); + m_SettingsConfig->UpdateAdvanced((int)::SendMessage(GetDlgItem(IDC_BASIC_MODE), BM_GETCHECK, 0, 0) == 0); } void CGeneralOptionsPage::OnBasicMode ( UINT Code, int id, HWND ctl ) diff --git a/Source/Project64/User Interface/Settings/Settings Page.h b/Source/Project64/User Interface/Settings/Settings Page.h index 5387f9ab6..f9a3581d0 100644 --- a/Source/Project64/User Interface/Settings/Settings Page.h +++ b/Source/Project64/User Interface/Settings/Settings Page.h @@ -55,7 +55,18 @@ protected: } bool Create(HWND hParent, const RECT & rcDispay) { - CDialogImpl::Create(hParent); + BOOL result = m_thunk.Init(NULL, NULL); + if (result == FALSE) + { + SetLastError(ERROR_OUTOFMEMORY); + return false; + } + + _AtlWinModule.AddCreateWndData(&m_thunk.cd, this); +#ifdef _DEBUG + m_bModal = false; +#endif //_DEBUG + m_hWnd = ::CreateDialogParamW(_AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCEW(static_cast(this)->IDD), hParent, T::StartDialogProc, NULL); if (m_hWnd == NULL) { return false; diff --git a/Source/Project64/User Interface/UI Resources.rc b/Source/Project64/User Interface/UI Resources.rc index a75559c2d..5e49cceb3 100644 --- a/Source/Project64/User Interface/UI Resources.rc +++ b/Source/Project64/User Interface/UI Resources.rc @@ -1,7 +1,8 @@ + // Microsoft Visual C++ generated resource script. // #include "resource.h" -#include "Version.h" +#include "../Version.h" #define APSTUDIO_READONLY_SYMBOLS @@ -74,7 +75,7 @@ IDI_LEFT ICON "Icons\\left.ico" // IDD_Settings_PlugSel DIALOGEX 0, 0, 231, 206 -STYLE DS_SETFONT | DS_CENTER | WS_CHILD | WS_VISIBLE +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD | WS_VISIBLE EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -127,7 +128,7 @@ BEGIN END IDD_Settings_RomBrowser DIALOGEX 0, 0, 231, 206 -STYLE DS_SETFONT | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -145,7 +146,7 @@ BEGIN END IDD_Settings_General DIALOGEX 0, 0, 231, 210 -STYLE DS_SETFONT | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -166,7 +167,7 @@ BEGIN END IDD_Rom_Information DIALOGEX 0, 0, 239, 207 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Rom Information" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -225,14 +226,14 @@ BEGIN END IDD_Settings_Accelerator DIALOGEX 0, 0, 218, 183 -STYLE DS_SETFONT | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN LTEXT "CPU State:",IDC_S_CPU_STATE,8,9,42,11 COMBOBOX IDC_C_CPU_STATE,58,7,156,66,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP LTEXT "Menu Item:",IDC_MENU_ITEM_TEXT,8,23,84,10 - CONTROL "Tree1",IDC_MENU_ITEMS,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_NOTOOLTIPS | TVS_TRACKSELECT | WS_BORDER | WS_TABSTOP,8,33,128,78 + CONTROL "Tree1",IDC_MENU_ITEMS,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_NOTOOLTIPS | TVS_TRACKSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,8,33,128,78 LTEXT "Current Keys:",IDC_S_CURRENT_KEYS,142,23,52,10 LISTBOX IDC_CURRENT_KEYS,144,33,68,59,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Remove",IDC_REMOVE,144,97,68,12 @@ -247,16 +248,16 @@ BEGIN LTEXT "",IDC_ASSIGNED_MENU_ITEM,89,155,118,9 END -IDD_Key_Prompt DIALOG 0, 0, 105, 43 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE -FONT 8, "MS Shell Dlg" +IDD_Key_Prompt DIALOGEX 0, 0, 105, 43 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN PUSHBUTTON "Cancel",IDCANCEL,5,24,50,14 LTEXT "Press a key to be used as an accelerator",IDC_STATIC,5,3,96,19 END IDD_Cheats_Select DIALOGEX 0, 0, 412, 226 -STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Cheats" FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -264,7 +265,7 @@ BEGIN END IDD_Cheats_List DIALOGEX 0, 0, 201, 221 -STYLE DS_SETFONT | DS_CONTROL | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -275,7 +276,7 @@ BEGIN END IDD_Cheats_Add DIALOGEX 0, 0, 191, 215 -STYLE DS_SETFONT | DS_CENTER | WS_CHILD | WS_VISIBLE +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD | WS_VISIBLE EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -295,7 +296,7 @@ BEGIN END IDD_Cheats_CodeEx DIALOGEX 0, 0, 186, 153 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "Code Extensions" FONT 8, "MS Shell Dlg", 0, 0, 0x1 @@ -308,7 +309,7 @@ BEGIN END IDD_Cheats_Range DIALOGEX 0, 0, 183, 127 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_TOOLWINDOW CAPTION "Quantity Digit" FONT 8, "MS Shell Dlg", 0, 0, 0x1 @@ -341,7 +342,7 @@ BEGIN END IDD_Settings_ShellInt DIALOGEX 0, 0, 231, 206 -STYLE DS_SETFONT | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -356,10 +357,10 @@ BEGIN CONTROL ".usa",IDC_USA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,97,134,37,9 END -IDD_About_Ini DIALOG 0, 0, 185, 250 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_About_Ini DIALOGEX 0, 0, 185, 250 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About INI Files" -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "ROM Database (.RDB)",IDC_RDB,5,46,175,59 LTEXT "Author:",IDC_RDB_AUTHOR,12,57,166,8 @@ -384,7 +385,7 @@ BEGIN END IDD_About DIALOGEX 0, 0, 254, 258 -STYLE DS_SETFONT | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME EXSTYLE WS_EX_RIGHT | WS_EX_RTLREADING | WS_EX_LEFTSCROLLBAR FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -404,7 +405,7 @@ BEGIN END IDD_Logging_General DIALOGEX 0, 0, 200, 154 -STYLE DS_SETFONT | DS_CONTROL | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -420,7 +421,7 @@ BEGIN END IDD_Logging_PifRam DIALOGEX 0, 0, 200, 154 -STYLE DS_SETFONT | DS_CONTROL | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -436,7 +437,7 @@ BEGIN END IDD_Logging_Registers DIALOGEX 0, 0, 200, 154 -STYLE DS_SETFONT | DS_CONTROL | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -460,10 +461,10 @@ BEGIN "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,133,178,9 END -IDD_Debugger_TLB DIALOG 0, 0, 290, 326 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_Debugger_TLB DIALOGEX 0, 0, 290, 326 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "TLB" -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN LTEXT "View:",IDC_STATIC,10,7,25,11 CONTROL "TLB Entries",IDC_TLB_ENTRIES,"Button",BS_AUTORADIOBUTTON,40,7,65,11 @@ -472,10 +473,10 @@ BEGIN CONTROL "List1",IDC_LIST2,"SysListView32",LVS_REPORT | LVS_SORTASCENDING | NOT WS_VISIBLE | WS_BORDER | WS_TABSTOP,7,21,276,298 END -IDD_Cheats_DumpMemory DIALOG 0, 0, 211, 129 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_Cheats_DumpMemory DIALOGEX 0, 0, 211, 129 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dump Memory" -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Range",IDC_STATIC,7,3,197,61 LTEXT "&Start VAddress",IDC_STATIC,13,16,61,10 @@ -494,10 +495,10 @@ BEGIN PUSHBUTTON "Close",IDCANCEL,154,110,50,14 END -IDD_Lang_Select DIALOG 0, 0, 237, 111 -STYLE DS_SETFONT | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +IDD_Lang_Select DIALOGEX 0, 0, 237, 111 +STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Welcome to" -FONT 8, "MS Shell Dlg" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,90,99,50,12 LTEXT "Select Language:",IDC_SELECT_LANG,12,77,86,12 @@ -505,9 +506,9 @@ BEGIN END IDD_Debugger_Memory DIALOGEX 0, 0, 446, 194 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Memory" -FONT 8, "MS Sans Serif", 0, 0, 0x1 +FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN EDITTEXT IDC_ADDR_EDIT,38,13,66,12 LTEXT "Address:",IDC_STATIC,7,14,29,11 @@ -521,10 +522,10 @@ BEGIN CONTROL "Mem Details",IDC_MEM_DETAILS,"ListCtrl",WS_TABSTOP,7,31,416,154 END -IDD_Debugger_Search DIALOG 0, 0, 229, 233 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_Debugger_Search DIALOGEX 0, 0, 229, 233 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Search Memory" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Search Location:",IDC_STATIC,7,3,215,44 LTEXT "PAddr Start: ",IDC_STATIC,13,15,41,9 @@ -555,10 +556,10 @@ BEGIN CONTROL "List1",IDC_LST_RESULTS,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,13,153,202,65 END -IDD_About_UserInfo DIALOG 0, 0, 186, 97 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_About_UserInfo DIALOGEX 0, 0, 186, 97 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,61,76,50,14 GROUPBOX "Static",IDC_STATIC,7,3,172,68 @@ -570,14 +571,14 @@ BEGIN EDITTEXT IDC_INFO3,69,51,104,15,ES_AUTOHSCROLL | ES_READONLY END -IDD_Settings_Config DIALOG 0, 0, 357, 207 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +IDD_Settings_Config DIALOGEX 0, 0, 357, 207 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" -FONT 8, "MS Sans Serif" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,194,186,50,14 PUSHBUTTON "Cancel",IDCANCEL,248,186,50,14 - CONTROL "Tree1",IDC_PAGELIST,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,8,7,116,169 + CONTROL "Tree1",IDC_PAGELIST,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_SHOWSELALWAYS | WS_BORDER | WS_HSCROLL | WS_TABSTOP,8,7,116,169 CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME | SS_SUNKEN,7,180,343,1 PUSHBUTTON "Reset Page",IDC_RESET_PAGE,7,186,50,14,WS_DISABLED CONTROL "",IDC_SETTING_INFO,"Static",SS_ETCHEDFRAME,131,7,219,170 @@ -586,7 +587,7 @@ BEGIN END IDD_Settings_GameRecompiler DIALOGEX 0, 0, 230, 156 -STYLE DS_SETFONT | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -608,7 +609,7 @@ BEGIN END IDD_Settings_GamePlugin DIALOGEX 0, 0, 231, 206 -STYLE DS_SETFONT | DS_CENTER | WS_CHILD | WS_VISIBLE +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_CHILD | WS_VISIBLE EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -629,7 +630,7 @@ BEGIN END IDD_Settings_GameStatus DIALOGEX 0, 0, 218, 158 -STYLE DS_SETFONT | WS_CHILD +STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN @@ -648,7 +649,7 @@ END // #ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO +GUIDELINES DESIGNINFO BEGIN IDD_Settings_PlugSel, DIALOG BEGIN @@ -827,6 +828,10 @@ BEGIN BOTTOMMARGIN, 107 END + IDD_Debugger_Memory, DIALOG + BEGIN + END + IDD_Debugger_Search, DIALOG BEGIN LEFTMARGIN, 7 @@ -897,7 +902,7 @@ IDB_LANG_OK_DOWN BITMAP "Bitmaps\\LangOK_down.bmp" // Menu // -IDR_POPUP MENU +IDR_POPUP MENU BEGIN POPUP "PopupMenu" BEGIN @@ -914,7 +919,7 @@ BEGIN END END -IDR_CHEAT_MENU MENU +IDR_CHEAT_MENU MENU BEGIN POPUP "Popup" BEGIN @@ -925,7 +930,7 @@ BEGIN END END -IDR_MEM_SEARCH MENU +IDR_MEM_SEARCH MENU BEGIN POPUP "Popup" BEGIN diff --git a/Source/Project64/User Interface/WTL Controls/PartialGroupBox.cpp b/Source/Project64/User Interface/WTL Controls/PartialGroupBox.cpp index 3885a1dbb..1772d2ab5 100644 --- a/Source/Project64/User Interface/WTL Controls/PartialGroupBox.cpp +++ b/Source/Project64/User Interface/WTL Controls/PartialGroupBox.cpp @@ -10,14 +10,30 @@ ****************************************************************************/ #include "stdafx.h" -BOOL CPartialGroupBox::Attach(HWND hWndNew) +BOOL CPartialGroupBox::Attach(HWND hWnd) { - return SubclassWindow(hWndNew); + ATLASSUME(m_hWnd == NULL); + ATLASSERT(::IsWindow(hWnd)); + + // Allocate the thunk structure here, where we can fail gracefully. + + BOOL result = m_thunk.Init(GetWindowProc(), this); + if (result == FALSE) + { + return FALSE; + } + WNDPROC pProc = m_thunk.GetWNDPROC(); + WNDPROC pfnWndProc = (WNDPROC)::SetWindowLongPtrW(hWnd, GWLP_WNDPROC, (LONG_PTR)pProc); + if (pfnWndProc == NULL) + return FALSE; + m_pfnSuperWindowProc = pfnWndProc; + m_hWnd = hWnd; + return TRUE; } BOOL CPartialGroupBox::AttachToDlgItem(HWND parent, UINT dlgID) { - return SubclassWindow(::GetDlgItem(parent,dlgID)); + return Attach(::GetDlgItem(parent,dlgID)); } void CPartialGroupBox::Draw3dLine(CPaintDC & dc, LPCRECT lpRect, COLORREF clrTopLeft, COLORREF /*clrBottomRight*/) @@ -48,11 +64,11 @@ void CPartialGroupBox::OnPaint(HDC /*hDC*/) dc.SetMapMode(MM_TEXT); dc.SelectBrush(GetSysColorBrush(COLOR_BTNFACE)); - TCHAR grptext[MAX_PATH]; - GetWindowText(grptext,MAX_PATH); + wchar_t grptext[500]; + GetWindowTextW(m_hWnd, grptext, sizeof(grptext) / sizeof(grptext[0])); CRect fontsizerect(0,0,0,0); - dc.DrawText(grptext,-1,fontsizerect,DT_SINGLELINE|DT_LEFT|DT_CALCRECT); + dc.DrawTextW(grptext, -1, fontsizerect, DT_SINGLELINE | DT_LEFT | DT_CALCRECT); CRect framerect(controlrect); framerect.top += (fontsizerect.Height())/2; @@ -71,7 +87,7 @@ void CPartialGroupBox::OnPaint(HDC /*hDC*/) Draw3dLine(dc,framerect,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW)); } - if(_tcslen(grptext)) + if (wcslen(grptext)) { CRect fontrect(controlrect); fontrect.bottom = controlrect.top+fontsizerect.Height(); @@ -100,7 +116,7 @@ void CPartialGroupBox::OnPaint(HDC /*hDC*/) dc.SetBkMode(OPAQUE); dc.SetBkColor(GetSysColor(COLOR_BTNFACE)); - dc.DrawText(grptext,-1,fontrect,DT_SINGLELINE|DT_LEFT); + dc.DrawTextW(grptext,-1,fontrect,DT_SINGLELINE|DT_LEFT); } } diff --git a/Source/Project64/User Interface/WTL Controls/PartialGroupBox.h b/Source/Project64/User Interface/WTL Controls/PartialGroupBox.h index 2ab7562a3..0a971f3da 100644 --- a/Source/Project64/User Interface/WTL Controls/PartialGroupBox.h +++ b/Source/Project64/User Interface/WTL Controls/PartialGroupBox.h @@ -25,7 +25,6 @@ public: { } - virtual ~CPartialGroupBox() { } diff --git a/Source/Project64/Version.h b/Source/Project64/Version.h index 9f0e62c15..ff88e0b3a 100644 --- a/Source/Project64/Version.h +++ b/Source/Project64/Version.h @@ -14,7 +14,7 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 2 #define VERSION_REVISION 0 -#define VERSION_BUILD 1 +#define VERSION_BUILD 3 #define VER_FILE_DESCRIPTION_STR "Project 64" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD diff --git a/Source/RSP/Cpu.c b/Source/RSP/Cpu.c index c1ee724d6..ce3f1b04f 100644 --- a/Source/RSP/Cpu.c +++ b/Source/RSP/Cpu.c @@ -57,10 +57,12 @@ void BuildRecompilerCPU(void); extern HANDLE hMutex; -void SetCPU(DWORD core) { +void SetCPU(DWORD core) +{ WaitForSingleObjectEx(hMutex, 1000 * 100, FALSE); CPUCore = core; - switch (core) { + switch (core) + { case RecompilerCPU: BuildRecompilerCPU(); break; @@ -71,7 +73,8 @@ void SetCPU(DWORD core) { ReleaseMutex(hMutex); } -void Build_RSP ( void ) { +void Build_RSP ( void ) +{ int i; extern UWORD32 Recp, RecpResult, SQroot, SQrootResult; @@ -150,16 +153,19 @@ void Build_RSP ( void ) { Indx[30].DW = 0x0001020304050706; /* 6 */ Indx[31].DW = 0x0001020304050607; /* 7 */ - for (i = 16; i < 32; i ++) { + for (i = 16; i < 32; i ++) + { int count; - for (count = 0; count < 8; count ++) { + for (count = 0; count < 8; count ++) + { Indx[i].B[count] = 7 - Indx[i].B[count]; EleSpec[i].B[count] = 7 - EleSpec[i].B[count]; } - for (count = 0; count < 4; count ++) { + for (count = 0; count < 4; count ++) + { BYTE Temp; - + Temp = Indx[i].B[count]; Indx[i].B[count] = Indx[i].B[7 - count]; Indx[i].B[7 - count] = Temp; @@ -182,44 +188,55 @@ void Build_RSP ( void ) { *******************************************************************/ DWORD RunInterpreterCPU(DWORD Cycles); -DWORD RunRecompilerCPU ( DWORD Cycles ); +DWORD RunRecompilerCPU (DWORD Cycles); #define MI_INTR_SP 0x01 /* Bit 0: SP intr */ -__declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ) { +__declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ) +{ extern BOOL AudioHle, GraphicsHle; DWORD TaskType = *(DWORD*)(RSPInfo.DMEM + 0xFC0); -/* if (*RSPInfo.SP_STATUS_REG & SP_STATUS_SIG0) { +/* if (*RSPInfo.SP_STATUS_REG & SP_STATUS_SIG0) + { *RSPInfo.SP_STATUS_REG &= ~SP_STATUS_SIG0; *RSPInfo.MI_INTR_REG |= MI_INTR_SP; RSPInfo.CheckInterrupts(); return Cycles; } */ - if (TaskType == 1 && GraphicsHle && *(DWORD*)(RSPInfo.DMEM + 0x0ff0) != 0) { - if (RSPInfo.ProcessDList != NULL) { + if (TaskType == 1 && GraphicsHle && *(DWORD*)(RSPInfo.DMEM + 0x0ff0) != 0) + { + if (RSPInfo.ProcessDList != NULL) + { RSPInfo.ProcessDList(); } *RSPInfo.SP_STATUS_REG |= (0x0203 ); - if ((*RSPInfo.SP_STATUS_REG & SP_STATUS_INTR_BREAK) != 0 ) { + if ((*RSPInfo.SP_STATUS_REG & SP_STATUS_INTR_BREAK) != 0 ) + { *RSPInfo.MI_INTR_REG |= R4300i_SP_Intr; RSPInfo.CheckInterrupts(); } *RSPInfo.DPC_STATUS_REG &= ~0x0002; return Cycles; - } else if (TaskType == 2 && AudioHle) { - if (RSPInfo.ProcessAList != NULL) { + } + else if (TaskType == 2 && AudioHle) + { + if (RSPInfo.ProcessAList != NULL) + { RSPInfo.ProcessAList(); } *RSPInfo.SP_STATUS_REG |= (0x0203 ); - if ((*RSPInfo.SP_STATUS_REG & SP_STATUS_INTR_BREAK) != 0 ) { + if ((*RSPInfo.SP_STATUS_REG & SP_STATUS_INTR_BREAK) != 0 ) + { *RSPInfo.MI_INTR_REG |= R4300i_SP_Intr; RSPInfo.CheckInterrupts(); } return Cycles; - } else if (TaskType == 7) { + } + else if (TaskType == 7) + { RSPInfo.ShowCFB(); } @@ -227,14 +244,16 @@ __declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ) { /* *RSPInfo.SP_STATUS_REG |= (0x0203 ); - if ((*RSPInfo.SP_STATUS_REG & SP_STATUS_INTR_BREAK) != 0 ) { + if ((*RSPInfo.SP_STATUS_REG & SP_STATUS_INTR_BREAK) != 0 ) + { *RSPInfo.MI_INTR_REG |= R4300i_SP_Intr; RSPInfo.CheckInterrupts(); } //return Cycles; */ - if (Profiling && !IndvidualBlock) { + if (Profiling && !IndvidualBlock) + { StartTimer((DWORD)Timer_RSP_Running); } @@ -246,7 +265,8 @@ __declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ) { } RSP_MfStatusCount = 0; - switch (CPUCore) { + switch (CPUCore) + { case RecompilerCPU: RunRecompilerCPU(Cycles); break; @@ -256,7 +276,8 @@ __declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ) { } ReleaseMutex(hMutex); - if (Profiling && !IndvidualBlock) { + if (Profiling && !IndvidualBlock) + { StartTimer((DWORD)Timer_R4300_Running); } diff --git a/Source/RSP/Interpreter CPU.c b/Source/RSP/Interpreter CPU.c index b8647093d..0849ef90d 100644 --- a/Source/RSP/Interpreter CPU.c +++ b/Source/RSP/Interpreter CPU.c @@ -444,6 +444,7 @@ DWORD RunInterpreterCPU(DWORD Cycles) { RSP_LW_IMEM(*PrgCount, &RSPOpC.Hex); RSP_Opcode[ RSPOpC.op ](); + RSP_GPR[0].W = 0x00000000; /* MIPS $zero hard-wired to 0 */ switch (RSP_NextInstruction) { case NORMAL: diff --git a/Source/RSP/Interpreter Ops.c b/Source/RSP/Interpreter Ops.c index f3003798f..5622a9d9a 100644 --- a/Source/RSP/Interpreter Ops.c +++ b/Source/RSP/Interpreter Ops.c @@ -98,19 +98,14 @@ void RSP_Opcode_BGTZ ( void ) { } void RSP_Opcode_ADDI ( void ) { - if (RSPOpC.rt != 0) { - RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W + (int16_t)RSPOpC.immediate; - } + RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W + (int16_t)RSPOpC.immediate; } void RSP_Opcode_ADDIU ( void ) { - if (RSPOpC.rt != 0) { - RSP_GPR[RSPOpC.rt].UW = RSP_GPR[RSPOpC.rs].UW + (uint32_t)((int16_t)RSPOpC.immediate); - } + RSP_GPR[RSPOpC.rt].UW = RSP_GPR[RSPOpC.rs].UW + (uint32_t)((int16_t)RSPOpC.immediate); } void RSP_Opcode_SLTI (void) { - if (RSPOpC.rt == 0) { return; } if (RSP_GPR[RSPOpC.rs].W < (int16_t)RSPOpC.immediate) { RSP_GPR[RSPOpC.rt].W = 1; } else { @@ -119,7 +114,6 @@ void RSP_Opcode_SLTI (void) { } void RSP_Opcode_SLTIU (void) { - if (RSPOpC.rt == 0) { return; } if (RSP_GPR[RSPOpC.rs].UW < (uint32_t)(int16_t)RSPOpC.immediate) { RSP_GPR[RSPOpC.rt].W = 1; } else { @@ -128,27 +122,19 @@ void RSP_Opcode_SLTIU (void) { } void RSP_Opcode_ANDI ( void ) { - if (RSPOpC.rt != 0) { - RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W & RSPOpC.immediate; - } + RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W & RSPOpC.immediate; } void RSP_Opcode_ORI ( void ) { - if (RSPOpC.rt != 0) { - RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W | RSPOpC.immediate; - } + RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W | RSPOpC.immediate; } void RSP_Opcode_XORI ( void ) { - if (RSPOpC.rt != 0) { - RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W ^ RSPOpC.immediate; - } + RSP_GPR[RSPOpC.rt].W = RSP_GPR[RSPOpC.rs].W ^ RSPOpC.immediate; } void RSP_Opcode_LUI (void) { - if (RSPOpC.rt != 0) { - RSP_GPR[RSPOpC.rt].W = RSPOpC.immediate << 16; - } + RSP_GPR[RSPOpC.rt].W = RSPOpC.immediate << 16; } void RSP_Opcode_COP0 (void) { @@ -213,39 +199,27 @@ void RSP_Opcode_SC2 (void) { /********************** R4300i OpCodes: Special **********************/ void RSP_Special_SLL ( void ) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W << RSPOpC.sa; - } + RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W << RSPOpC.sa; } void RSP_Special_SRL ( void ) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rt].UW >> RSPOpC.sa; - } + RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rt].UW >> RSPOpC.sa; } void RSP_Special_SRA ( void ) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W >> RSPOpC.sa; - } + RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W >> RSPOpC.sa; } void RSP_Special_SLLV (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W << (RSP_GPR[RSPOpC.rs].W & 0x1F); - } + RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W << (RSP_GPR[RSPOpC.rs].W & 0x1F); } void RSP_Special_SRLV (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rt].UW >> (RSP_GPR[RSPOpC.rs].W & 0x1F); - } + RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rt].UW >> (RSP_GPR[RSPOpC.rs].W & 0x1F); } void RSP_Special_SRAV (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W >> (RSP_GPR[RSPOpC.rs].W & 0x1F); - } + RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rt].W >> (RSP_GPR[RSPOpC.rs].W & 0x1F); } void RSP_Special_JR (void) { @@ -269,55 +243,38 @@ void RSP_Special_BREAK ( void ) { } void RSP_Special_ADD (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rs].W + RSP_GPR[RSPOpC.rt].W; - } + RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rs].W + RSP_GPR[RSPOpC.rt].W; } void RSP_Special_ADDU (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW + RSP_GPR[RSPOpC.rt].UW; - } + RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW + RSP_GPR[RSPOpC.rt].UW; } void RSP_Special_SUB (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rs].W - RSP_GPR[RSPOpC.rt].W; - } + RSP_GPR[RSPOpC.rd].W = RSP_GPR[RSPOpC.rs].W - RSP_GPR[RSPOpC.rt].W; } void RSP_Special_SUBU (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW - RSP_GPR[RSPOpC.rt].UW; - } + RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW - RSP_GPR[RSPOpC.rt].UW; } void RSP_Special_AND (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW & RSP_GPR[RSPOpC.rt].UW; - } + RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW & RSP_GPR[RSPOpC.rt].UW; } void RSP_Special_OR (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW | RSP_GPR[RSPOpC.rt].UW; - } + RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW | RSP_GPR[RSPOpC.rt].UW; } void RSP_Special_XOR (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW ^ RSP_GPR[RSPOpC.rt].UW; - } + RSP_GPR[RSPOpC.rd].UW = RSP_GPR[RSPOpC.rs].UW ^ RSP_GPR[RSPOpC.rt].UW; } void RSP_Special_NOR (void) { - if (RSPOpC.rd != 0) { - RSP_GPR[RSPOpC.rd].UW = ~(RSP_GPR[RSPOpC.rs].UW | RSP_GPR[RSPOpC.rt].UW); - } + RSP_GPR[RSPOpC.rd].UW = ~(RSP_GPR[RSPOpC.rs].UW | RSP_GPR[RSPOpC.rt].UW); } void RSP_Special_SLT (void) { - if (RSPOpC.rd == 0) { return; } if (RSP_GPR[RSPOpC.rs].W < RSP_GPR[RSPOpC.rt].W) { RSP_GPR[RSPOpC.rd].UW = 1; } else { @@ -326,7 +283,6 @@ void RSP_Special_SLT (void) { } void RSP_Special_SLTU (void) { - if (RSPOpC.rd == 0) { return; } if (RSP_GPR[RSPOpC.rs].UW < RSP_GPR[RSPOpC.rt].UW) { RSP_GPR[RSPOpC.rd].UW = 1; } else { diff --git a/Source/RSP/Main.cpp b/Source/RSP/Main.cpp index 6fb457feb..943778a04 100644 --- a/Source/RSP/Main.cpp +++ b/Source/RSP/Main.cpp @@ -96,15 +96,18 @@ const char * AboutMsg ( void ) } /************ Functions ***********/ -DWORD AsciiToHex (char * HexValue) { +DWORD AsciiToHex (char * HexValue) +{ DWORD Count, Finish, Value = 0; Finish = strlen(HexValue); if (Finish > 8 ) { Finish = 8; } - for (Count = 0; Count < Finish; Count++){ + for (Count = 0; Count < Finish; Count++) + { Value = (Value << 4); - switch( HexValue[Count] ) { + switch( HexValue[Count] ) + { case '0': break; case '1': Value += 1; break; case '2': Value += 2; break; @@ -135,7 +138,8 @@ DWORD AsciiToHex (char * HexValue) { return Value; } -void DisplayError (char * Message, ...) { +void DisplayError (char * Message, ...) +{ char Msg[400]; va_list ap; @@ -152,7 +156,8 @@ void DisplayError (char * Message, ...) { input: none output: none *******************************************************************/ -__declspec(dllexport) void CloseDLL (void) { +__declspec(dllexport) void CloseDLL (void) +{ FreeMemory(); } @@ -163,11 +168,13 @@ __declspec(dllexport) void CloseDLL (void) { input: a handle to the window that calls this function output: none *******************************************************************/ -__declspec(dllexport) void DllAbout ( HWND hParent ) { +__declspec(dllexport) void DllAbout ( HWND hParent ) +{ MessageBox(hParent,AboutMsg(),"About",MB_OK | MB_ICONINFORMATION ); } -BOOL WINAPI DllMain( HINSTANCE hinst, DWORD /*fdwReason*/, LPVOID /*lpvReserved*/ ){ +BOOL WINAPI DllMain( HINSTANCE hinst, DWORD /*fdwReason*/, LPVOID /*lpvReserved*/ ) +{ hinstDLL = hinst; return TRUE; } @@ -179,7 +186,8 @@ BOOL WINAPI DllMain( HINSTANCE hinst, DWORD /*fdwReason*/, LPVOID /*lpvReserved filled by the function. (see def above) output: none *******************************************************************/ -__declspec(dllexport) void GetDllInfo ( PLUGIN_INFO * PluginInfo ) { +__declspec(dllexport) void GetDllInfo ( PLUGIN_INFO * PluginInfo ) +{ PluginInfo->Version = 0x0102; PluginInfo->Type = PLUGIN_TYPE_RSP; #ifdef _DEBUG @@ -259,7 +267,8 @@ __declspec(dllexport) void GetRspDebugInfo ( RSPDEBUG_INFO * DebugInfo ) RSP_COMPILER Compiler; -void DetectCpuSpecs(void) { +void DetectCpuSpecs(void) +{ DWORD Intel_Features = 0; DWORD AMD_Features = 0; @@ -279,24 +288,31 @@ void DetectCpuSpecs(void) { AMD_Features = Intel_Features = 0; } - if (Intel_Features & 0x02000000) { + if (Intel_Features & 0x02000000) + { Compiler.mmx2 = TRUE; Compiler.sse = TRUE; } - if (Intel_Features & 0x00800000) { + if (Intel_Features & 0x00800000) + { Compiler.mmx = TRUE; } - if (AMD_Features & 0x40000000) { + if (AMD_Features & 0x40000000) + { Compiler.mmx2 = TRUE; } - if (Intel_Features & 0x00008000) { + if (Intel_Features & 0x00008000) + { ConditionalMove = TRUE; - } else { + } + else + { ConditionalMove = FALSE; } } -__declspec(dllexport) void InitiateRSP ( RSP_INFO Rsp_Info, DWORD * CycleCount) { +__declspec(dllexport) void InitiateRSP ( RSP_INFO Rsp_Info, DWORD * CycleCount) +{ RSPInfo = Rsp_Info; AudioHle = GetSystemSetting(Set_AudioHle); GraphicsHle = GetSystemSetting(Set_GraphicsHle); @@ -320,14 +336,17 @@ __declspec(dllexport) void InitiateRSP ( RSP_INFO Rsp_Info, DWORD * CycleCount) above. output: none *******************************************************************/ -__declspec(dllexport) void InitiateRSPDebugger ( DEBUG_INFO Debug_Info) { +__declspec(dllexport) void InitiateRSPDebugger ( DEBUG_INFO Debug_Info) +{ DebugInfo = Debug_Info; } -void ProcessMenuItem(int ID) { +void ProcessMenuItem(int ID) +{ UINT uState; - switch (ID) { + switch (ID) + { case ID_RSPCOMMANDS: Enter_RSP_Commands_Window(); break; case ID_RSPREGISTERS: Enter_RSP_Register_Window(); break; case ID_DUMP_RSPCODE: DumpRSPCode(); break; @@ -337,12 +356,15 @@ void ProcessMenuItem(int ID) { { uState = GetMenuState(hRSPMenu, ID_PROFILING_ON, MF_BYCOMMAND); - if (uState & MFS_CHECKED) { + if (uState & MFS_CHECKED) + { CheckMenuItem( hRSPMenu, ID_PROFILING_ON, MF_BYCOMMAND | MFS_UNCHECKED ); CheckMenuItem( hRSPMenu, ID_PROFILING_OFF, MF_BYCOMMAND | MFS_CHECKED ); SetSetting(Set_Profiling,FALSE); if (DebuggingEnabled) { Profiling = FALSE; } - } else { + } + else + { CheckMenuItem( hRSPMenu, ID_PROFILING_ON, MF_BYCOMMAND | MFS_CHECKED ); CheckMenuItem( hRSPMenu, ID_PROFILING_OFF, MF_BYCOMMAND | MFS_UNCHECKED ); SetSetting(Set_Profiling,TRUE); @@ -356,11 +378,14 @@ void ProcessMenuItem(int ID) { { uState = GetMenuState(hRSPMenu, ID_PROFILING_LOGINDIVIDUALBLOCKS, MF_BYCOMMAND); - if (uState & MFS_CHECKED) { + if (uState & MFS_CHECKED) + { CheckMenuItem( hRSPMenu, ID_PROFILING_LOGINDIVIDUALBLOCKS, MF_BYCOMMAND | MFS_UNCHECKED ); SetSetting(Set_IndvidualBlock,FALSE); if (DebuggingEnabled) { IndvidualBlock = FALSE; } - } else { + } + else + { CheckMenuItem( hRSPMenu, ID_PROFILING_LOGINDIVIDUALBLOCKS, MF_BYCOMMAND | MFS_CHECKED ); SetSetting(Set_IndvidualBlock,TRUE); if (DebuggingEnabled) { IndvidualBlock = TRUE; } @@ -371,11 +396,14 @@ void ProcessMenuItem(int ID) { { uState = GetMenuState(hRSPMenu, ID_SHOWCOMPILERERRORS, MF_BYCOMMAND); - if (uState & MFS_CHECKED) { + if (uState & MFS_CHECKED) + { CheckMenuItem( hRSPMenu, ID_SHOWCOMPILERERRORS, MF_BYCOMMAND | MFS_UNCHECKED ); SetSetting(Set_ShowErrors,FALSE); if (DebuggingEnabled) { ShowErrors = FALSE; } - } else { + } + else + { CheckMenuItem( hRSPMenu, ID_SHOWCOMPILERERRORS, MF_BYCOMMAND | MFS_CHECKED ); SetSetting(Set_ShowErrors,TRUE); if (DebuggingEnabled) { ShowErrors = TRUE; } @@ -389,11 +417,14 @@ void ProcessMenuItem(int ID) { { uState = GetMenuState(hRSPMenu, ID_BREAKONSTARTOFTASK, MF_BYCOMMAND); - if (uState & MFS_CHECKED) { + if (uState & MFS_CHECKED) + { CheckMenuItem( hRSPMenu, ID_BREAKONSTARTOFTASK, MF_BYCOMMAND | MFS_UNCHECKED ); SetSetting(Set_BreakOnStart,FALSE); if (DebuggingEnabled) { BreakOnStart = FALSE; } - } else { + } + else + { CheckMenuItem( hRSPMenu, ID_BREAKONSTARTOFTASK, MF_BYCOMMAND | MFS_CHECKED ); SetSetting(Set_BreakOnStart,TRUE); if (DebuggingEnabled) { BreakOnStart = TRUE; } @@ -404,7 +435,8 @@ void ProcessMenuItem(int ID) { { uState = GetMenuState(hRSPMenu, ID_LOGRDPCOMMANDS, MF_BYCOMMAND); - if (uState & MFS_CHECKED) { + if (uState & MFS_CHECKED) + { CheckMenuItem( hRSPMenu, ID_LOGRDPCOMMANDS, MF_BYCOMMAND | MFS_UNCHECKED ); SetSetting(Set_LogRDP,FALSE); if (DebuggingEnabled) @@ -412,7 +444,9 @@ void ProcessMenuItem(int ID) { LogRDP = FALSE; StopRDPLog(); } - } else { + } + else + { CheckMenuItem( hRSPMenu, ID_LOGRDPCOMMANDS, MF_BYCOMMAND | MFS_CHECKED ); SetSetting(Set_LogRDP,TRUE); if (DebuggingEnabled) @@ -427,7 +461,8 @@ void ProcessMenuItem(int ID) { { uState = GetMenuState(hRSPMenu, ID_SETTINGS_LOGX86CODE, MF_BYCOMMAND); - if (uState & MFS_CHECKED) { + if (uState & MFS_CHECKED) + { CheckMenuItem( hRSPMenu, ID_SETTINGS_LOGX86CODE, MF_BYCOMMAND | MFS_UNCHECKED ); SetSetting(Set_LogX86Code,FALSE); if (DebuggingEnabled) @@ -435,7 +470,9 @@ void ProcessMenuItem(int ID) { LogX86Code = FALSE; StopCPULog(); } - } else { + } + else + { CheckMenuItem( hRSPMenu, ID_SETTINGS_LOGX86CODE, MF_BYCOMMAND | MFS_CHECKED ); SetSetting(Set_LogX86Code,TRUE); if (DebuggingEnabled) @@ -488,7 +525,8 @@ __declspec(dllexport) void RomOpen (void) output: none *******************************************************************/ __declspec(dllexport) void RomClosed (void) { - if (Profiling) { + if (Profiling) + { StopTimer(); GenerateTimerResults(); } @@ -501,14 +539,17 @@ __declspec(dllexport) void RomClosed (void) { #endif } -static BOOL GetBooleanCheck(HWND hDlg, DWORD DialogID) { +static BOOL GetBooleanCheck(HWND hDlg, DWORD DialogID) +{ return (IsDlgButtonChecked(hDlg, DialogID) == BST_CHECKED) ? TRUE : FALSE; } -BOOL CALLBACK CompilerDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam*/) { +BOOL CALLBACK CompilerDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam*/) +{ char Buffer[256]; - switch (uMsg) { + switch (uMsg) + { case WM_INITDIALOG: if (Compiler.bDest == TRUE) CheckDlgButton(hDlg, IDC_COMPILER_DEST, BST_CHECKED); @@ -535,16 +576,15 @@ BOOL CALLBACK CompilerDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lPar SetTimer(hDlg, 1, 250, NULL); break; - case WM_TIMER: sprintf(Buffer, "x86: %2.2f KB / %2.2f KB", (float)(RecompPos - RecompCode) / 1024.0F, pLastSecondary?(float)((pLastSecondary - RecompCodeSecondary) / 1024.0F):0); SetDlgItemText(hDlg, IDC_COMPILER_BUFFERS, Buffer); break; - case WM_COMMAND: - switch (GET_WM_COMMAND_ID(wParam, lParam)) { + switch (GET_WM_COMMAND_ID(wParam, lParam)) + { case IDOK: Compiler.bDest = GetBooleanCheck(hDlg, IDC_COMPILER_DEST); Compiler.bAccum = GetBooleanCheck(hDlg, IDC_COMPILER_ACCUM); @@ -570,31 +610,32 @@ BOOL CALLBACK CompilerDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lPar KillTimer(hDlg, 1); EndDialog(hDlg, TRUE); break; - case IDCANCEL: KillTimer(hDlg, 1); EndDialog(hDlg, TRUE); break; } break; - default: return FALSE; } return TRUE; } -BOOL CALLBACK ConfigDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam*/) { +BOOL CALLBACK ConfigDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam*/) +{ HWND hWndItem; DWORD value; - switch (uMsg) { + switch (uMsg) + { case WM_INITDIALOG: - if (AudioHle == TRUE) { + if (AudioHle == TRUE) + { CheckDlgButton(hDlg, IDC_AUDIOHLE, BST_CHECKED); } - - if (GraphicsHle == TRUE) { + if (GraphicsHle == TRUE) + { CheckDlgButton(hDlg, IDC_GRAPHICSHLE, BST_CHECKED); } @@ -603,9 +644,9 @@ BOOL CALLBACK ConfigDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam ComboBox_AddString(hWndItem, "Recompiler"); ComboBox_SetCurSel(hWndItem, CPUCore); break; - case WM_COMMAND: - switch (GET_WM_COMMAND_ID(wParam, lParam)) { + switch (GET_WM_COMMAND_ID(wParam, lParam)) + { case IDOK: hWndItem = GetDlgItem(hDlg, IDC_COMPILER_SELECT); value = ComboBox_GetCurSel(hWndItem); @@ -621,19 +662,20 @@ BOOL CALLBACK ConfigDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam break; } break; - default: return FALSE; } return TRUE; } -/*__declspec(dllexport) void DllConfig (HWND hWnd) { +/*__declspec(dllexport) void DllConfig (HWND hWnd) +{ // DialogBox(hinstDLL, "RSPCONFIG", hWnd, ConfigDlgProc); DialogBox(hinstDLL, "RSPCONFIG", GetForegroundWindow(), ConfigDlgProc); }*/ -__declspec(dllexport) void EnableDebugging (BOOL Enabled) { +__declspec(dllexport) void EnableDebugging (BOOL Enabled) +{ DebuggingEnabled = Enabled; if (DebuggingEnabled) { diff --git a/Source/RSP/Profiling.cpp b/Source/RSP/Profiling.cpp index af68e1138..3e15f4198 100644 --- a/Source/RSP/Profiling.cpp +++ b/Source/RSP/Profiling.cpp @@ -36,7 +36,8 @@ extern "C" { #include #include -class CProfiling { +class CProfiling +{ typedef std::map PROFILE_ENRTIES; typedef PROFILE_ENRTIES::iterator PROFILE_ENRTY; typedef PROFILE_ENRTIES::value_type PROFILE_VALUE; @@ -89,9 +90,12 @@ public: __int64 TimeTaken = StopTime - StartTime; PROFILE_ENRTY Entry = m_Entries.find(m_CurrentTimerAddr); - if (Entry != m_Entries.end()) { + if (Entry != m_Entries.end()) + { Entry->second += TimeTaken; - } else { + } + else + { m_Entries.insert(PROFILE_ENRTIES::value_type(m_CurrentTimerAddr,TimeTaken)); } @@ -117,22 +121,27 @@ public: //Get the total time __int64 TotalTime = 0; - for (PROFILE_ENRTY itemTime = m_Entries.begin(); itemTime != m_Entries.end(); itemTime++ ) { + for (PROFILE_ENRTY itemTime = m_Entries.begin(); itemTime != m_Entries.end(); itemTime++ ) + { TotalTime += itemTime->second; } //Create a sortable list of items std::vector ItemList; - for (PROFILE_ENRTY Entry = m_Entries.begin(); Entry != m_Entries.end(); Entry++ ) { + for (PROFILE_ENRTY Entry = m_Entries.begin(); Entry != m_Entries.end(); Entry++ ) + { ItemList.push_back(&(*Entry)); } - + //sort the list with a basic bubble sort if (ItemList.size() > 0) { - for (size_t OuterPass = 0; OuterPass < (ItemList.size() - 1); OuterPass++ ) { - for (size_t InnerPass = 0; InnerPass < (ItemList.size() - 1); InnerPass++ ) { - if (ItemList[InnerPass]->second < ItemList[InnerPass + 1]->second) { + for (size_t OuterPass = 0; OuterPass < (ItemList.size() - 1); OuterPass++ ) + { + for (size_t InnerPass = 0; InnerPass < (ItemList.size() - 1); InnerPass++ ) + { + if (ItemList[InnerPass]->second < ItemList[InnerPass + 1]->second) + { PROFILE_VALUE * TempPtr = ItemList[InnerPass]; ItemList[InnerPass] = ItemList[InnerPass + 1]; ItemList[InnerPass + 1] = TempPtr; @@ -147,14 +156,17 @@ public: {Timer_R4300_Running, "R4300: Running"}, {Timer_RDP_Running, "RDP: Running"}, }; - - for (size_t count = 0; count < ItemList.size(); count++ ) { + + for (size_t count = 0; count < ItemList.size(); count++ ) + { char Buffer[255]; float CpuUsage = (float)(((double)ItemList[count]->second / (double)TotalTime) * 100); if (CpuUsage <= 0.2) { continue; } sprintf(Buffer,"Func 0x%08X",ItemList[count]->first); - for (int NameID = 0; NameID < (sizeof(TimerNames) / sizeof(TIMER_NAME)); NameID++) { - if (ItemList[count]->first == (DWORD)TimerNames[NameID].Timer) { + for (int NameID = 0; NameID < (sizeof(TimerNames) / sizeof(TIMER_NAME)); NameID++) + { + if (ItemList[count]->first == (DWORD)TimerNames[NameID].Timer) + { strcpy(Buffer,TimerNames[NameID].Name); break; } @@ -165,7 +177,6 @@ public: ShellExecute(NULL,"open",LogFileName.c_str(),NULL,NULL,SW_SHOW); ResetCounters(); - } }; @@ -176,23 +187,26 @@ CProfiling& GetProfiler ( void ) return Profile; } -void ResetTimerList (void) { +void ResetTimerList (void) +{ GetProfiler().ResetCounters(); } -DWORD StartTimer (DWORD Address) { +DWORD StartTimer (DWORD Address) +{ return GetProfiler().StartTimer(Address); } -void StopTimer (void) { +void StopTimer (void) +{ GetProfiler().StopTimer(); } -void GenerateTimerResults (void) { +void GenerateTimerResults (void) +{ GetProfiler().GenerateLog(); } - #ifdef todelete #include #include @@ -206,14 +220,16 @@ DWORD StartTimeHi, StartTimeLo, StopTimeHi, StopTimeLo, TSE_Count, TSE_Max; TIME_STAMP_ENTRY * TS_Entries = NULL; char LastLabel[100]; -void ResetTimerList (void) { +void ResetTimerList (void) +{ if (TS_Entries) { free(TS_Entries); } TS_Entries = NULL; TSE_Count = 0; TSE_Max = 0; } -void StartTimer (char * Label) { +void StartTimer (char * Label) +{ strcpy(LastLabel,Label); _asm { pushad @@ -224,7 +240,8 @@ void StartTimer (char * Label) { } } -void StopTimer (void) { +void StopTimer (void) +{ _asm { pushad rdtsc @@ -236,8 +253,10 @@ void StopTimer (void) { { DWORD count; - for (count = 0; count < TSE_Count; count ++) { - if (strcmp(LastLabel,TS_Entries[count].Label) == 0) { + for (count = 0; count < TSE_Count; count ++) + { + if (strcmp(LastLabel,TS_Entries[count].Label) == 0) + { __int64 Time = ((unsigned __int64)StopTimeHi << 32) + (unsigned __int64)StopTimeLo; Time -= ((unsigned __int64)StartTimeHi << 32) + (unsigned __int64)StartTimeLo; TS_Entries[count].TimeTotal += Time; @@ -245,16 +264,21 @@ void StopTimer (void) { } } } - if (TSE_Count == 0) { + if (TSE_Count == 0) + { TS_Entries = (TIME_STAMP_ENTRY *)malloc(sizeof(TIME_STAMP_ENTRY) * 100); - if (TS_Entries == NULL) { + if (TS_Entries == NULL) + { MessageBox(NULL,"TIME_STAMP_ENTRY == NULL ??","ERROR",MB_OK|MB_ICONERROR|MB_SETFOREGROUND); } TSE_Max = 100; - } else if (TSE_Count == TSE_Max) { + } + else if (TSE_Count == TSE_Max) + { TSE_Max += 100; TS_Entries = (TIME_STAMP_ENTRY *)realloc(TS_Entries,sizeof(TIME_STAMP_ENTRY) * TSE_Max); - if (TS_Entries == NULL) { + if (TS_Entries == NULL) + { MessageBox(NULL,"TIME_STAMP_ENTRY == NULL ??","ERROR",MB_OK|MB_ICONERROR|MB_SETFOREGROUND); } } @@ -264,7 +288,8 @@ void StopTimer (void) { TSE_Count +=1; } -void GenerateTimerResults (void) { +void GenerateTimerResults (void) +{ char buffer[_MAX_PATH], drive[_MAX_DRIVE] ,dir[_MAX_DIR]; char fname[_MAX_FNAME],ext[_MAX_EXT], LogFileName[_MAX_PATH]; DWORD dwWritten, count, count2; @@ -280,10 +305,13 @@ void GenerateTimerResults (void) { hLogFile = CreateFile(LogFileName,GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); SetFilePointer(hLogFile,0,NULL,FILE_BEGIN); - - for (count = 0; count < TSE_Count; count ++) { - for (count2 = 0; count2 < (TSE_Count - 1); count2 ++) { - if (TS_Entries[count2].TimeTotal < TS_Entries[count2 + 1].TimeTotal) { + + for (count = 0; count < TSE_Count; count ++) + { + for (count2 = 0; count2 < (TSE_Count - 1); count2 ++) + { + if (TS_Entries[count2].TimeTotal < TS_Entries[count2 + 1].TimeTotal) + { TIME_STAMP_ENTRY Temp; memcpy(&Temp,&TS_Entries[count2],sizeof(TIME_STAMP_ENTRY)); memcpy(&TS_Entries[count2],&TS_Entries[count2 + 1],sizeof(TIME_STAMP_ENTRY)); @@ -292,10 +320,12 @@ void GenerateTimerResults (void) { } } TotalTime = 0; - for (count = 0; count < TSE_Count; count ++) { + for (count = 0; count < TSE_Count; count ++) + { TotalTime += TS_Entries[count].TimeTotal; } - for (count = 0; count < (TSE_Count < 50?TSE_Count:50); count ++) { + for (count = 0; count < (TSE_Count < 50?TSE_Count:50); count ++) + { sprintf(buffer,"%s - %0.2f%c\r\n", TS_Entries[count].Label, (((double)TS_Entries[count].TimeTotal / (double)TotalTime) * 100),'%' diff --git a/Source/RSP/RSP Command.c b/Source/RSP/RSP Command.c index 1e061a02f..ff6bcb2d0 100644 --- a/Source/RSP/RSP Command.c +++ b/Source/RSP/RSP Command.c @@ -72,29 +72,36 @@ BOOL InRSPCommandsWindow; char CommandName[100]; DWORD Stepping_Commands, WaitingForStep; - -void Create_RSP_Commands_Window ( int Child ) { +void Create_RSP_Commands_Window ( int Child ) +{ DWORD ThreadID; - if ( Child ) { + if ( Child ) + { InRSPCommandsWindow = TRUE; DialogBox( hinstDLL, "RSPCOMMAND", NULL,(DLGPROC)RSP_Commands_Proc ); InRSPCommandsWindow = FALSE; memset(RSPCommandLine,0,sizeof(RSPCommandLine)); SetRSPCommandToRunning(); - } else { - if (!InRSPCommandsWindow) { + } + else + { + if (!InRSPCommandsWindow) + { Stepping_Commands = TRUE; CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Create_RSP_Commands_Window, (LPVOID)TRUE,0, &ThreadID); - } else { + } + else + { SetForegroundWindow(RSPCommandshWnd); } } } -void Disable_RSP_Commands_Window ( void ) { +void Disable_RSP_Commands_Window ( void ) +{ SCROLLINFO si; if (!InRSPCommandsWindow) { return; } @@ -108,7 +115,7 @@ void Disable_RSP_Commands_Window ( void ) { EnableWindow(hRSPRegisters, FALSE); EnableWindow(hR4300iDebugger, FALSE); EnableWindow(hMemory, FALSE); - + si.cbSize = sizeof(si); si.fMask = SIF_RANGE | SIF_POS | SIF_PAGE; si.nMin = 0; @@ -118,28 +125,33 @@ void Disable_RSP_Commands_Window ( void ) { SetScrollInfo(hScrlBar,SB_CTL,&si,TRUE); } -int DisplayRSPCommand (DWORD location, int InsertPos) { +int DisplayRSPCommand (DWORD location, int InsertPos) +{ uint32_t OpCode; DWORD LinesUsed = 1, status; BOOL Redraw = FALSE; RSP_LW_IMEM(location, &OpCode); - + status = 0; if (location == *PrgCount) {status = RSP_Status_PC; } if (CheckForRSPBPoint(location)) { status |= RSP_Status_BP; } if (RSPCommandLine[InsertPos].opcode != OpCode) { Redraw = TRUE; } if (RSPCommandLine[InsertPos].Location != location) { Redraw = TRUE; } if (RSPCommandLine[InsertPos].status != status) { Redraw = TRUE; } - if (Redraw) { + if (Redraw) + { RSPCommandLine[InsertPos].Location = location; RSPCommandLine[InsertPos].status = status; RSPCommandLine[InsertPos].opcode = OpCode; sprintf(RSPCommandLine[InsertPos].String," 0x%03X\t%s",location, RSPOpcodeName ( OpCode, location )); - if ( SendMessage(hList,LB_GETCOUNT,0,0) <= InsertPos) { + if ( SendMessage(hList,LB_GETCOUNT,0,0) <= InsertPos) + { SendMessage(hList,LB_INSERTSTRING,(WPARAM)InsertPos, (LPARAM)location); - } else { + } + else + { RECT ItemRC; SendMessage(hList,LB_GETITEMRECT,(WPARAM)InsertPos, (LPARAM)&ItemRC); RedrawWindow(hList,&ItemRC,NULL, RDW_INVALIDATE ); @@ -148,7 +160,8 @@ int DisplayRSPCommand (DWORD location, int InsertPos) { return LinesUsed; } -void DumpRSPCode (void) { +void DumpRSPCode (void) +{ char string[100], LogFileName[255], *p ; uint32_t OpCode; DWORD location, dwWritten; @@ -156,14 +169,17 @@ void DumpRSPCode (void) { strcpy(LogFileName,GetCommandLine() + 1); - if (strchr(LogFileName,'\"')) { + if (strchr(LogFileName,'\"')) + { p = strchr(LogFileName,'\"'); *p = '\0'; } - if (strchr(LogFileName,'\\')) { + if (strchr(LogFileName,'\\')) + { p = LogFileName; - while (strchr(p,'\\')) { + while (strchr(p,'\\')) + { p = strchr(p,'\\'); p++; } @@ -185,20 +201,23 @@ void DumpRSPCode (void) { CloseHandle(hLogFile); } -void DumpRSPData (void) { +void DumpRSPData (void) +{ char string[100], LogFileName[255], *p ; uint32_t value; DWORD location, dwWritten; HANDLE hLogFile = NULL; strcpy(LogFileName,GetCommandLine() + 1); - - if (strchr(LogFileName,'\"')) { + + if (strchr(LogFileName,'\"')) + { p = strchr(LogFileName,'\"'); *p = '\0'; } - - if (strchr(LogFileName,'\\')) { + + if (strchr(LogFileName,'\\')) + { p = LogFileName; while (strchr(p,'\\')) { p = strchr(p,'\\'); @@ -214,7 +233,8 @@ void DumpRSPData (void) { FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); SetFilePointer(hLogFile,0,NULL,FILE_BEGIN); - for (location = 0; location < 0x1000; location += 4) { + for (location = 0; location < 0x1000; location += 4) + { RSP_LW_DMEM(location, &value); sprintf(string," 0x%03X\t0x%08X\r\n", location, value); WriteFile( hLogFile,string,strlen(string),&dwWritten,NULL ); @@ -222,7 +242,8 @@ void DumpRSPData (void) { CloseHandle(hLogFile); } -void DrawRSPCommand ( LPARAM lParam ) { +void DrawRSPCommand ( LPARAM lParam ) +{ char Command[150], Offset[30], Instruction[30], Arguments[40]; LPDRAWITEMSTRUCT ditem; COLORREF oldColor = {0}; @@ -233,40 +254,53 @@ void DrawRSPCommand ( LPARAM lParam ) { ditem = (LPDRAWITEMSTRUCT)lParam; strcpy(Command, RSPCommandLine[ditem->itemID].String); - - if (strchr(Command,'\t')) { + + if (strchr(Command,'\t')) + { p1 = strchr(Command,'\t'); sprintf(Offset,"%.*s",p1 - Command, Command); p1++; - if (strchr(p1,'\t')) { + if (strchr(p1,'\t')) + { p2 = strchr(p1,'\t'); sprintf(Instruction,"%.*s",p2 - p1, p1); sprintf(Arguments,"%s",p2 + 1); - } else { + } + else + { sprintf(Instruction,"%s",p1); sprintf(Arguments,"\0"); } sprintf(Command,"\0"); - } else { + } + else + { sprintf(Offset,"\0"); sprintf(Instruction,"\0"); sprintf(Arguments,"\0"); } - - if (*PrgCount == RSPCommandLine[ditem->itemID].Location) { + + if (*PrgCount == RSPCommandLine[ditem->itemID].Location) + { ResetColor = TRUE; hBrush = (HBRUSH)(COLOR_HIGHLIGHT + 1); oldColor = SetTextColor(ditem->hDC,RGB(255,255,255)); - } else { + } + else + { ResetColor = FALSE; hBrush = (HBRUSH)GetStockObject(WHITE_BRUSH); } - if (CheckForRSPBPoint( RSPCommandLine[ditem->itemID].Location )) { + if (CheckForRSPBPoint( RSPCommandLine[ditem->itemID].Location )) + { ResetColor = TRUE; - if (*PrgCount == RSPCommandLine[ditem->itemID].Location) { + if (*PrgCount == RSPCommandLine[ditem->itemID].Location) + { SetTextColor(ditem->hDC,RGB(255,0,0)); - } else { + } + else + { oldColor = SetTextColor(ditem->hDC,RGB(255,0,0)); } } @@ -274,11 +308,12 @@ void DrawRSPCommand ( LPARAM lParam ) { FillRect( ditem->hDC, &ditem->rcItem,hBrush); SetBkMode( ditem->hDC, TRANSPARENT ); - if (strlen (Command) == 0 ) { + if (strlen (Command) == 0 ) + { SetRect(&TextRect,ditem->rcItem.left,ditem->rcItem.top, ditem->rcItem.left + 83, ditem->rcItem.bottom); DrawText(ditem->hDC,Offset,strlen(Offset), &TextRect,DT_SINGLELINE | DT_VCENTER); - + SetRect(&TextRect,ditem->rcItem.left + 83,ditem->rcItem.top, ditem->rcItem.left + 165, ditem->rcItem.bottom); DrawText(ditem->hDC,Instruction,strlen(Instruction), &TextRect,DT_SINGLELINE | DT_VCENTER); @@ -286,18 +321,19 @@ void DrawRSPCommand ( LPARAM lParam ) { SetRect(&TextRect,ditem->rcItem.left + 165,ditem->rcItem.top, ditem->rcItem.right, ditem->rcItem.bottom); DrawText(ditem->hDC,Arguments,strlen(Arguments), &TextRect,DT_SINGLELINE | DT_VCENTER); - } else { + } + else + { DrawText(ditem->hDC,Command,strlen(Command), &ditem->rcItem,DT_SINGLELINE | DT_VCENTER); } if (ResetColor == TRUE) { SetTextColor( ditem->hDC, oldColor ); } - } - -void Enable_RSP_Commands_Window ( void ) { +void Enable_RSP_Commands_Window ( void ) +{ SCROLLINFO si; if (!InRSPCommandsWindow) { return; } @@ -314,7 +350,7 @@ void Enable_RSP_Commands_Window ( void ) { SendMessage(hBPButton, BM_SETSTYLE, BS_PUSHBUTTON,TRUE); SendMessage(hStepButton, BM_SETSTYLE, BS_DEFPUSHBUTTON,TRUE); SendMessage(RSPCommandshWnd, DM_SETDEFID,IDC_STEP_BUTTON,0); - + if (Stepping_Commands) { si.cbSize = sizeof(si); si.fMask = SIF_RANGE | SIF_POS | SIF_PAGE; @@ -323,24 +359,26 @@ void Enable_RSP_Commands_Window ( void ) { si.nPos = (*PrgCount >> 2); si.nPage = 30; SetScrollInfo(hScrlBar,SB_CTL,&si,TRUE); - + SetRSPCommandViewto( *PrgCount ); SetForegroundWindow(RSPCommandshWnd); } } -void Enter_RSP_Commands_Window ( void ) { +void Enter_RSP_Commands_Window ( void ) +{ Create_RSP_Commands_Window ( FALSE ); } -void Paint_RSP_Commands (HWND hDlg) { +void Paint_RSP_Commands (HWND hDlg) +{ PAINTSTRUCT ps; RECT rcBox; HFONT hOldFont; int OldBkMode; BeginPaint( hDlg, &ps ); - + rcBox.left = 5; rcBox.top = 5; rcBox.right = 343; rcBox.bottom = 463; DrawEdge( ps.hdc, &rcBox, EDGE_RAISED, BF_RECT ); @@ -384,7 +422,8 @@ void Paint_RSP_Commands (HWND hDlg) { EndPaint( hDlg, &ps ); } -void RefreshRSPCommands ( void ) { +void RefreshRSPCommands ( void ) +{ DWORD location, LinesUsed; char AsciiAddress[20]; int count; @@ -395,14 +434,17 @@ void RefreshRSPCommands ( void ) { location = AsciiToHex(AsciiAddress) & ~3; if (location > 0xF88) { location = 0xF88; } - for (count = 0 ; count < RSP_MaxCommandLines; count += LinesUsed ){ + for (count = 0 ; count < RSP_MaxCommandLines; count += LinesUsed ) + { LinesUsed = DisplayRSPCommand ( location, count ); location += 4; } } -LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { - switch (uMsg) { +LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + switch (uMsg) + { case WM_INITDIALOG: RSPCommandshWnd = hDlg; RSP_Commands_Setup( hDlg ); @@ -411,7 +453,8 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM //StoreCurrentWinPos("RSP Commands",hDlg); break; case WM_DRAWITEM: - if (wParam == IDC_LIST) { + if (wParam == IDC_LIST) + { DrawRSPCommand (lParam); } break; @@ -420,16 +463,22 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM RedrawWindow(hScrlBar,NULL,NULL, RDW_INVALIDATE |RDW_ERASE); return TRUE; case WM_COMMAND: - switch (LOWORD(wParam)) { + switch (LOWORD(wParam)) + { case IDC_LIST: - if (HIWORD(wParam) == LBN_DBLCLK ) { + if (HIWORD(wParam) == LBN_DBLCLK ) + { DWORD Location, Selected; Selected = SendMessage(hList,LB_GETCURSEL,(WPARAM)0, (LPARAM)0); Location = RSPCommandLine[Selected].Location; - if (Location != (DWORD)-1) { - if (CheckForRSPBPoint(Location)) { + if (Location != (DWORD)-1) + { + if (CheckForRSPBPoint(Location)) + { RemoveRSPBreakPoint(Location); - } else { + } + else + { AddRSP_BPoint(Location, FALSE); } RefreshRSPCommands(); @@ -437,7 +486,8 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM } break; case IDC_ADDRESS: - if (HIWORD(wParam) == EN_CHANGE ) { + if (HIWORD(wParam) == EN_CHANGE ) + { RefreshRSPCommands(); } break; @@ -455,7 +505,8 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM WaitingFor_RSPStep = FALSE; break;*/ case IDC_BP_BUTTON: - if (DebugInfo.Enter_BPoint_Window != NULL) { + if (DebugInfo.Enter_BPoint_Window != NULL) + { DebugInfo.Enter_BPoint_Window(); } break; @@ -463,17 +514,20 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM Enter_RSP_Register_Window(); break; case IDC_R4300I_DEBUGGER_BUTTON: - if (DebugInfo.Enter_R4300i_Commands_Window != NULL) { + if (DebugInfo.Enter_R4300i_Commands_Window != NULL) + { DebugInfo.Enter_R4300i_Commands_Window(); } break; case IDC_R4300I_REGISTERS_BUTTON: - if (DebugInfo.Enter_R4300i_Register_Window != NULL) { + if (DebugInfo.Enter_R4300i_Register_Window != NULL) + { DebugInfo.Enter_R4300i_Register_Window(); } break; case IDC_MEMORY_BUTTON: - if (DebugInfo.Enter_Memory_Window != NULL) { + if (DebugInfo.Enter_Memory_Window != NULL) + { DebugInfo.Enter_Memory_Window(); } break; @@ -483,15 +537,17 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM } break; case WM_VSCROLL: - if ((HWND)lParam == hScrlBar) { + if ((HWND)lParam == hScrlBar) + { DWORD location; char Value[20]; SCROLLINFO si; - + GetWindowText(hAddress,Value,sizeof(Value)); location = AsciiToHex(Value) & ~3; - - switch (LOWORD(wParam)) { + + switch (LOWORD(wParam)) + { case SB_THUMBTRACK: sprintf(Value,"%03X",((short int)HIWORD(wParam) << 2 )); SetWindowText(hAddress,Value); @@ -501,14 +557,17 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM SetScrollInfo(hScrlBar,SB_CTL,&si,TRUE); break; case SB_LINEDOWN: - if (location < 0xF88) { + if (location < 0xF88) + { sprintf(Value,"%03X",location + 0x4); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); si.fMask = SIF_POS; si.nPos = ((location + 0x4) >> 2); SetScrollInfo(hScrlBar,SB_CTL,&si,TRUE); - } else { + } + else + { sprintf(Value,"%03X",0xF88); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); @@ -518,14 +577,17 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM } break; case SB_LINEUP: - if (location > 0x4 ) { + if (location > 0x4 ) + { sprintf(Value,"%03X",location - 0x4); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); si.fMask = SIF_POS; si.nPos = ((location - 0x4) >> 2); SetScrollInfo(hScrlBar,SB_CTL,&si,TRUE); - } else { + } + else + { sprintf(Value,"%03X",0); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); @@ -535,14 +597,17 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM } break; case SB_PAGEDOWN: - if ((location + 0x74)< 0xF88) { + if ((location + 0x74)< 0xF88) + { sprintf(Value,"%03X",location + 0x74); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); si.fMask = SIF_POS; si.nPos = ((location + 0x74) >> 2); SetScrollInfo(hScrlBar,SB_CTL,&si,TRUE); - } else { + } + else + { sprintf(Value,"%03X",0xF88); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); @@ -552,14 +617,17 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM } break; case SB_PAGEUP: - if ((location - 0x74) > 0x74 ) { + if ((location - 0x74) > 0x74 ) + { sprintf(Value,"%03X",location - 0x74); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); si.fMask = SIF_POS; si.nPos = ((location - 0x74) >> 2); SetScrollInfo(hScrlBar,SB_CTL,&si,TRUE); - } else { + } + else + { sprintf(Value,"%03X",0); SetWindowText(hAddress,Value); si.cbSize = sizeof(si); @@ -577,7 +645,8 @@ LRESULT CALLBACK RSP_Commands_Proc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM return TRUE; } -void RSP_Commands_Setup ( HWND hDlg ) { +void RSP_Commands_Setup ( HWND hDlg ) +{ #define WindowWidth 457 #define WindowHeight 494 char Location[10]; @@ -586,7 +655,8 @@ void RSP_Commands_Setup ( HWND hDlg ) { hList = CreateWindowEx(WS_EX_STATICEDGE, "LISTBOX","", WS_CHILD | WS_VISIBLE | LBS_OWNERDRAWFIXED | LBS_NOTIFY,14,30,303,445, hDlg, (HMENU)IDC_LIST, hinstDLL,NULL ); - if ( hList) { + if ( hList) + { SendMessage(hList,WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); SendMessage(hList,LB_SETITEMHEIGHT, (WPARAM)0,(LPARAM)MAKELPARAM(14, 0)); } @@ -594,43 +664,49 @@ void RSP_Commands_Setup ( HWND hDlg ) { sprintf(Location,"%03X",*PrgCount); hAddress = CreateWindowEx(0,"EDIT",Location, WS_CHILD | ES_UPPERCASE | WS_VISIBLE | WS_BORDER | WS_TABSTOP,375,17,36,18, hDlg,(HMENU)IDC_ADDRESS,hinstDLL, NULL ); - if (hAddress) { + if (hAddress) + { SendMessage(hAddress,WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); SendMessage(hAddress,EM_SETLIMITTEXT, (WPARAM)3,(LPARAM)0); - } + } hFunctionlist = CreateWindowEx(0,"COMBOBOX","", WS_CHILD | WS_VSCROLL | CBS_DROPDOWNLIST | CBS_SORT | WS_TABSTOP,352,56,89,150,hDlg, (HMENU)IDC_FUNCTION_COMBO,hinstDLL,NULL); - if (hFunctionlist) { + if (hFunctionlist) + { SendMessage(hFunctionlist,WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } hGoButton = CreateWindowEx(WS_EX_STATICEDGE, "BUTTON","&Go", WS_CHILD | BS_DEFPUSHBUTTON | WS_VISIBLE | WS_TABSTOP, 347,56,100,24, hDlg,(HMENU)IDC_GO_BUTTON, hinstDLL,NULL ); - if (hGoButton) { + if (hGoButton) + { SendMessage(hGoButton,WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } - + hBreakButton = CreateWindowEx(WS_EX_STATICEDGE, "BUTTON","&Break", WS_DISABLED | WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,85,100,24,hDlg, (HMENU)IDC_BREAK_BUTTON,hinstDLL,NULL ); - if (hBreakButton) { + if (hBreakButton) + { SendMessage(hBreakButton,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } hStepButton = CreateWindowEx(WS_EX_STATICEDGE, "BUTTON","&Step", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,114,100,24,hDlg, (HMENU)IDC_STEP_BUTTON,hinstDLL,NULL ); - if (hStepButton) { + if (hStepButton) + { SendMessage(hStepButton,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } hSkipButton = CreateWindowEx(WS_EX_STATICEDGE, "BUTTON","&Skip", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,143,100,24,hDlg, (HMENU)IDC_SKIP_BUTTON,hinstDLL,NULL ); - if (hSkipButton) { + if (hSkipButton) + { SendMessage(hSkipButton,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } @@ -640,11 +716,13 @@ void RSP_Commands_Setup ( HWND hDlg ) { if (DebugInfo.Enter_R4300i_Register_Window == NULL) { WndPos += 29;} if (DebugInfo.Enter_Memory_Window == NULL) { WndPos += 29;} - if (DebugInfo.Enter_BPoint_Window != NULL) { + if (DebugInfo.Enter_BPoint_Window != NULL) + { hBPButton = CreateWindowEx(WS_EX_STATICEDGE, "BUTTON","&Break Points", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,WndPos,100,24,hDlg, (HMENU)IDC_BP_BUTTON,hinstDLL,NULL ); - if (hBPButton) { + if (hBPButton) + { SendMessage(hBPButton,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } } @@ -653,49 +731,59 @@ void RSP_Commands_Setup ( HWND hDlg ) { hRSPRegisters = CreateWindowEx(WS_EX_STATICEDGE,"BUTTON", "RSP &Registers...", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,WndPos,100,24,hDlg, (HMENU)IDC_RSP_REGISTERS_BUTTON,hinstDLL,NULL ); - if (hRSPRegisters) { + if (hRSPRegisters) + { SendMessage(hRSPRegisters,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } WndPos += 29; - if (DebugInfo.Enter_R4300i_Commands_Window != NULL) { + if (DebugInfo.Enter_R4300i_Commands_Window != NULL) + { hR4300iDebugger = CreateWindowEx(WS_EX_STATICEDGE,"BUTTON", "R4300i &Debugger...", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,WndPos,100,24,hDlg, (HMENU)IDC_R4300I_DEBUGGER_BUTTON,hinstDLL,NULL ); - if (hR4300iDebugger) { + if (hR4300iDebugger) + { SendMessage(hR4300iDebugger,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } } WndPos += 29; - if (DebugInfo.Enter_R4300i_Register_Window != NULL) { + if (DebugInfo.Enter_R4300i_Register_Window != NULL) + { hR4300iRegisters = CreateWindowEx(WS_EX_STATICEDGE,"BUTTON","R4300i R&egisters...", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,WndPos,100,24,hDlg, (HMENU)IDC_R4300I_REGISTERS_BUTTON,hinstDLL,NULL ); - if (hR4300iRegisters) { + if (hR4300iRegisters) + { SendMessage(hR4300iRegisters,WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } } WndPos += 29; - if (DebugInfo.Enter_Memory_Window != NULL) { + if (DebugInfo.Enter_Memory_Window != NULL) + { hMemory = CreateWindowEx(WS_EX_STATICEDGE,"BUTTON", "&Memory...", WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE | WS_TABSTOP | BS_TEXT, 347,WndPos,100,24,hDlg, (HMENU)IDC_MEMORY_BUTTON,hinstDLL,NULL ); - if (hMemory) { + if (hMemory) + { SendMessage(hMemory,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); } } - + hScrlBar = CreateWindowEx(WS_EX_STATICEDGE, "SCROLLBAR","", WS_CHILD | WS_VISIBLE | WS_TABSTOP | SBS_VERT, 318,14,18,439, hDlg, (HMENU)IDC_SCRL_BAR, hinstDLL, NULL ); - if ( RSP_Running ) { + if ( RSP_Running ) + { Enable_RSP_Commands_Window(); - } else { + } + else + { Disable_RSP_Commands_Window(); } - + //if ( !GetStoredWinPos("RSP Commands", &X, &Y ) ) { X = (GetSystemMetrics( SM_CXSCREEN ) - WindowWidth) / 2; Y = (GetSystemMetrics( SM_CYSCREEN ) - WindowHeight) / 2; @@ -705,18 +793,23 @@ void RSP_Commands_Setup ( HWND hDlg ) { SetWindowPos(hDlg,NULL,X,Y,WindowWidth,WindowHeight, SWP_NOZORDER | SWP_SHOWWINDOW); } -char * RSPSpecialName ( DWORD OpCode, DWORD PC ) { +char * RSPSpecialName ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; PC = PC; // unused - switch (command.funct) { + switch (command.funct) + { case RSP_SPECIAL_SLL: - if (command.rd != 0) { + if (command.rd != 0) + { sprintf(CommandName,"SLL\t%s, %s, 0x%X",GPR_Name(command.rd), GPR_Name(command.rt), command.sa); - } else { + } + else + { sprintf(CommandName,"NOP"); } break; @@ -796,11 +889,13 @@ char * RSPSpecialName ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * RSPRegimmName ( DWORD OpCode, DWORD PC ) { +char * RSPRegimmName ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; - switch (command.rt) { + switch (command.rt) + { case RSP_REGIMM_BLTZ: sprintf(CommandName,"BLTZ\t%s, 0x%03X",GPR_Name(command.rs), (PC + ((short)command.offset << 2) + 4) & 0xFFC); @@ -814,9 +909,12 @@ char * RSPRegimmName ( DWORD OpCode, DWORD PC ) { (PC + ((short)command.offset << 2) + 4) & 0xFFC); break; case RSP_REGIMM_BGEZAL: - if (command.rs == 0) { + if (command.rs == 0) + { sprintf(CommandName,"BAL\t0x%03X",(PC + ((short)command.offset << 2) + 4) & 0xFFC); - } else { + } + else + { sprintf(CommandName,"BGEZAL\t%s, 0x%03X",GPR_Name(command.rs), (PC + ((short)command.offset << 2) + 4) & 0xFFC); } @@ -828,13 +926,15 @@ char * RSPRegimmName ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * RSPCop0Name ( DWORD OpCode, DWORD PC ) { +char * RSPCop0Name ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; PC = PC; // unused - switch (command.rs) { + switch (command.rs) + { case RSP_COP0_MF: sprintf(CommandName,"MFC0\t%s, %s",GPR_Name(command.rt),COP0_Name(command.rd)); break; @@ -848,14 +948,17 @@ char * RSPCop0Name ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * RSPCop2Name ( DWORD OpCode, DWORD PC ) { +char * RSPCop2Name ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; PC = PC; // unused - - if ( ( command.rs & 0x10 ) == 0 ) { - switch (command.rs) { + + if ( ( command.rs & 0x10 ) == 0 ) + { + switch (command.rs) + { case RSP_COP2_MF: sprintf(CommandName,"MFC2\t%s, $v%d [%d]",GPR_Name(command.rt), command.rd, command.sa >> 1); @@ -876,8 +979,11 @@ char * RSPCop2Name ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"RSP: Unknown\t%02X %02X %02X %02X", command.Ascii[3],command.Ascii[2],command.Ascii[1],command.Ascii[0]); } - } else { - switch (command.funct) { + } + else + { + switch (command.funct) + { case RSP_VECTOR_VMULF: sprintf(CommandName,"VMULF\t$v%d, $v%d, $v%d%s",command.sa, command.rd, command.rt, ElementSpecifier(command.rs & 0xF)); @@ -1061,13 +1167,15 @@ char * RSPCop2Name ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * RSPLc2Name ( DWORD OpCode, DWORD PC ) { +char * RSPLc2Name ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; PC = PC; // unused - switch (command.rd) { + switch (command.rd) + { case RSP_LSC2_BV: sprintf(CommandName,"LBV\t$v%d [%d], 0x%04X (%s)",command.rt, command.del, command.voffset, GPR_Name(command.base)); @@ -1123,13 +1231,15 @@ char * RSPLc2Name ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * RSPSc2Name ( DWORD OpCode, DWORD PC ) { +char * RSPSc2Name ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; PC = PC; // unused - switch (command.rd) { + switch (command.rd) + { case RSP_LSC2_BV: sprintf(CommandName,"SBV\t$v%d [%d], 0x%04X (%s)",command.rt, command.del, command.voffset, GPR_Name(command.base)); @@ -1185,11 +1295,13 @@ char * RSPSc2Name ( DWORD OpCode, DWORD PC ) { return CommandName; } -char * RSPOpcodeName ( DWORD OpCode, DWORD PC ) { +char * RSPOpcodeName ( DWORD OpCode, DWORD PC ) +{ OPCODE command; command.Hex = OpCode; - - switch (command.op) { + + switch (command.op) + { case RSP_SPECIAL: return RSPSpecialName(OpCode,PC); break; @@ -1203,12 +1315,17 @@ char * RSPOpcodeName ( DWORD OpCode, DWORD PC ) { sprintf(CommandName,"JAL\t0x%03X",(command.target << 2) & 0xFFC); break; case RSP_BEQ: - if (command.rs == 0 && command.rt == 0) { + if (command.rs == 0 && command.rt == 0) + { sprintf(CommandName,"B\t0x%03X",(PC + ((short)command.offset << 2) + 4) & 0xFFC); - } else if (command.rs == 0 || command.rt == 0){ + } + else if (command.rs == 0 || command.rt == 0) + { sprintf(CommandName,"BEQZ\t%s, 0x%03X",GPR_Name(command.rs == 0 ? command.rt : command.rs), (PC + ((short)command.offset << 2) + 4) & 0xFFC); - } else { + } + else + { sprintf(CommandName,"BEQ\t%s, %s, 0x%03X",GPR_Name(command.rs),GPR_Name(command.rt), (PC + ((short)command.offset << 2) + 4) & 0xFFC); } @@ -1305,7 +1422,8 @@ char * RSPOpcodeName ( DWORD OpCode, DWORD PC ) { return CommandName; } -void SetRSPCommandToRunning ( void ) { +void SetRSPCommandToRunning ( void ) +{ Stepping_Commands = FALSE; if (InRSPCommandsWindow == FALSE) { return; } EnableWindow(hGoButton, FALSE); @@ -1318,7 +1436,8 @@ void SetRSPCommandToRunning ( void ) { SetFocus(hBreakButton); } -void SetRSPCommandToStepping ( void ) { +void SetRSPCommandToStepping ( void ) +{ if (InRSPCommandsWindow == FALSE) { return; } EnableWindow(hGoButton, TRUE); EnableWindow(hBreakButton, FALSE); @@ -1331,7 +1450,8 @@ void SetRSPCommandToStepping ( void ) { Stepping_Commands = TRUE; } -void SetRSPCommandViewto ( UINT NewLocation ) { +void SetRSPCommandViewto ( UINT NewLocation ) +{ unsigned int location; char Value[20]; @@ -1340,10 +1460,13 @@ void SetRSPCommandViewto ( UINT NewLocation ) { GetWindowText(hAddress,Value,sizeof(Value)); location = AsciiToHex(Value) & ~3; - if ( NewLocation < location || NewLocation >= location + 120 ) { + if ( NewLocation < location || NewLocation >= location + 120 ) + { sprintf(Value,"%03X",NewLocation); SetWindowText(hAddress,Value); - } else { + } + else + { RefreshRSPCommands(); } } diff --git a/Source/RSP/RSP Registers.h b/Source/RSP/RSP Registers.h index cc2ad6181..4543def26 100644 --- a/Source/RSP/RSP Registers.h +++ b/Source/RSP/RSP Registers.h @@ -147,5 +147,3 @@ void UpdateRSPRegistersScreen ( void ); extern UWORD32 RSP_GPR[32], RSP_Flags[4]; extern UDWORD RSP_ACCUM[8]; extern VECTOR RSP_Vect[32]; - - diff --git a/Source/RSP/Types.h b/Source/RSP/Types.h index 27578cd51..16e8af390 100644 --- a/Source/RSP/Types.h +++ b/Source/RSP/Types.h @@ -24,8 +24,8 @@ * */ -#ifndef __Types_h -#define __Types_h +#ifndef __Types_h +#define __Types_h /* * Some versions of Microsoft Visual C/++ compilers before Visual Studio 2010 diff --git a/Source/RSP/Version.h b/Source/RSP/Version.h index b80a24b99..e5c65881d 100644 --- a/Source/RSP/Version.h +++ b/Source/RSP/Version.h @@ -23,13 +23,14 @@ * should be forwarded to them so if they want them. * */ + #define STRINGIZE2(s) #s #define STRINGIZE(s) STRINGIZE2(s) #define VERSION_MAJOR 1 #define VERSION_MINOR 7 #define VERSION_REVISION 0 -#define VERSION_BUILD 11 +#define VERSION_BUILD 13 #define VER_FILE_DESCRIPTION_STR "RSP emulation Plugin" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD diff --git a/Source/RSP/breakpoint.c b/Source/RSP/breakpoint.c index 2134beffe..c60fe7a14 100644 --- a/Source/RSP/breakpoint.c +++ b/Source/RSP/breakpoint.c @@ -33,7 +33,8 @@ #define IDC_LOCATION_EDIT 105 HWND BPoint_Win_hDlg, hRSPLocation = NULL; -void Add_BPoint ( void ) { +void Add_BPoint ( void ) +{ char Title[10]; GetWindowText(hRSPLocation,Title,sizeof(Title)); @@ -43,29 +44,35 @@ void Add_BPoint ( void ) { } } -int AddRSP_BPoint( DWORD Location, int Confirm ) { +int AddRSP_BPoint( DWORD Location, int Confirm ) +{ int count; - if (NoOfBpoints == MaxBPoints) { + if (NoOfBpoints == MaxBPoints) + { DisplayError("Max amount of Break Points set"); return FALSE; } - for (count = 0; count < NoOfBpoints; count ++) { - if (BPoint[count].Location == Location) { + for (count = 0; count < NoOfBpoints; count ++) + { + if (BPoint[count].Location == Location) + { DisplayError("You already have this Break Point"); return FALSE; } } - if (Confirm) { + if (Confirm) + { char Message[150]; int Response; sprintf(Message,"Break when:\n\nRSP's Program Counter = 0x%03X\n\nIs this correct?", Location); Response = MessageBox(BPoint_Win_hDlg, Message, "Breakpoint", MB_YESNO | MB_ICONINFORMATION); - if (Response == IDNO) { + if (Response == IDNO) + { return FALSE; } } @@ -78,18 +85,22 @@ int AddRSP_BPoint( DWORD Location, int Confirm ) { return TRUE; } -int CheckForRSPBPoint ( DWORD Location ) { +int CheckForRSPBPoint ( DWORD Location ) +{ int count; - for (count = 0; count < NoOfBpoints; count ++){ - if (BPoint[count].Location == Location) { + for (count = 0; count < NoOfBpoints; count ++) + { + if (BPoint[count].Location == Location) + { return TRUE; } } return FALSE; } -void CreateBPPanel ( HWND hDlg, RECT rcBox ) { +void CreateBPPanel ( HWND hDlg, RECT rcBox ) +{ if (hRSPLocation != NULL) { return; } rcBox = rcBox; // remove warning of unused @@ -97,8 +108,9 @@ void CreateBPPanel ( HWND hDlg, RECT rcBox ) { BPoint_Win_hDlg = hDlg; hRSPLocation = CreateWindowEx(0,"EDIT","", WS_CHILD | WS_BORDER | ES_UPPERCASE | WS_TABSTOP, - 83,90,100,17,hDlg,(HMENU)IDC_LOCATION_EDIT,RSPInfo.hInst,NULL); - if (hRSPLocation) { + 83,90,100,17,hDlg,(HMENU)IDC_LOCATION_EDIT,RSPInfo.hInst,NULL); + if (hRSPLocation) + { char Title[20]; SendMessage(hRSPLocation,WM_SETFONT,(WPARAM)GetStockObject(DEFAULT_GUI_FONT),0); SendMessage(hRSPLocation,EM_SETLIMITTEXT,(WPARAM)3,(LPARAM)0); @@ -107,20 +119,24 @@ void CreateBPPanel ( HWND hDlg, RECT rcBox ) { } } -void HideBPPanel ( void ) { +void HideBPPanel ( void ) +{ ShowWindow(hRSPLocation,FALSE); } -void PaintBPPanel ( PAINTSTRUCT ps ) { +void PaintBPPanel ( PAINTSTRUCT ps ) +{ TextOut( ps.hdc, 29,60,"Break when the Program Counter equals",37); TextOut( ps.hdc, 59,85,"0x",2); } -void ShowBPPanel ( void ) { +void ShowBPPanel ( void ) +{ ShowWindow(hRSPLocation,TRUE); } -void RefreshBpoints ( HWND hList ) { +void RefreshBpoints ( HWND hList ) +{ char Message[100]; int count, location; @@ -131,29 +147,36 @@ void RefreshBpoints ( HWND hList ) { } } -void RemoveAllBpoint ( void ) { +void RemoveAllBpoint ( void ) +{ NoOfBpoints = 0; } -void RemoveBpoint ( HWND hList, int index ) { +void RemoveBpoint ( HWND hList, int index ) +{ DWORD location; location = SendMessage(hList,LB_GETITEMDATA,(WPARAM)index,0); RemoveRSPBreakPoint(location); } -void RemoveRSPBreakPoint (DWORD Location) { +void RemoveRSPBreakPoint (DWORD Location) +{ int count, location = -1; - for (count = 0; count < NoOfBpoints; count ++){ - if (BPoint[count].Location == Location) { + for (count = 0; count < NoOfBpoints; count ++) + { + if (BPoint[count].Location == Location) + { location = count; count = NoOfBpoints; } } - if (location >= 0) { - for (count = location; count < NoOfBpoints - 1; count ++ ){ + if (location >= 0) + { + for (count = location; count < NoOfBpoints - 1; count ++ ) + { BPoint[count].Location = BPoint[count + 1].Location; } NoOfBpoints -= 1; diff --git a/Source/RSP/dma.c b/Source/RSP/dma.c index 9fa49ea98..6a40a1d15 100644 --- a/Source/RSP/dma.c +++ b/Source/RSP/dma.c @@ -32,18 +32,21 @@ // #define RSP_SAFE_DMA /* unoptimized dma transfers */ -void SP_DMA_READ (void) { +void SP_DMA_READ (void) +{ DWORD i, j, Length, Skip, Count, End, addr; BYTE *Dest, *Source; addr = (*RSPInfo.SP_DRAM_ADDR_REG) & 0x00FFFFFF; - if (addr > 0x800000) { + if (addr > 0x800000) + { MessageBox(NULL,"SP DMA READ\nSP_DRAM_ADDR_REG not in RDRam space","Error",MB_OK); return; } - if ((*RSPInfo.SP_RD_LEN_REG & 0xFFF) + 1 + (*RSPInfo.SP_MEM_ADDR_REG & 0xFFF) > 0x1000) { + if ((*RSPInfo.SP_RD_LEN_REG & 0xFFF) + 1 + (*RSPInfo.SP_MEM_ADDR_REG & 0xFFF) > 0x1000) + { MessageBox(NULL,"SP DMA READ\ncould not fit copy in memory segement","Error",MB_OK); return; } @@ -53,29 +56,40 @@ void SP_DMA_READ (void) { Count = ((*RSPInfo.SP_RD_LEN_REG >> 12) & 0xFF) + 1; End = ((*RSPInfo.SP_MEM_ADDR_REG & 0x0FFF) & ~7) + (((Count - 1) * Skip) + Length); - if ((*RSPInfo.SP_MEM_ADDR_REG & 0x1000) != 0) { + if ((*RSPInfo.SP_MEM_ADDR_REG & 0x1000) != 0) + { Dest = RSPInfo.IMEM + ((*RSPInfo.SP_MEM_ADDR_REG & 0x0FFF) & ~7); - } else { + } + else + { Dest = RSPInfo.DMEM + ((*RSPInfo.SP_MEM_ADDR_REG & 0x0FFF) & ~7); } Source = RSPInfo.RDRAM + (addr & ~7); #if defined(RSP_SAFE_DMA) - for (j = 0 ; j < Count; j++) { - for (i = 0 ; i < Length; i++) { + for (j = 0 ; j < Count; j++) + { + for (i = 0 ; i < Length; i++) + { *(BYTE *)(((DWORD)Dest + j * Length + i) ^ 3) = *(BYTE *)(((DWORD)Source + j * Skip + i) ^ 3); } } #else - if ((Skip & 0x3) == 0) { - for (j = 0; j < Count; j++) { + if ((Skip & 0x3) == 0) + { + for (j = 0; j < Count; j++) + { memcpy(Dest, Source, Length); Source += Skip; Dest += Length; } - } else { - for (j = 0 ; j < Count; j++) { - for (i = 0 ; i < Length; i++) { + } + else + { + for (j = 0 ; j < Count; j++) + { + for (i = 0 ; i < Length; i++) + { *(BYTE *)(((DWORD)Dest + i) ^ 3) = *(BYTE *)(((DWORD)Source + i) ^ 3); } Source += Skip; @@ -85,7 +99,8 @@ void SP_DMA_READ (void) { #endif /* FIXME: could this be a problem DMEM to IMEM (?) */ - if (CPUCore == RecompilerCPU && (*RSPInfo.SP_MEM_ADDR_REG & 0x1000) != 0) { + if (CPUCore == RecompilerCPU && (*RSPInfo.SP_MEM_ADDR_REG & 0x1000) != 0) + { SetJumpTable(End); } @@ -93,18 +108,21 @@ void SP_DMA_READ (void) { *RSPInfo.SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY; } -void SP_DMA_WRITE (void) { +void SP_DMA_WRITE (void) +{ DWORD i, j, Length, Skip, Count, addr; BYTE *Dest, *Source; addr = (*RSPInfo.SP_DRAM_ADDR_REG) & 0x00FFFFFF; - if (addr > 0x800000) { + if (addr > 0x800000) + { MessageBox(NULL,"SP DMA WRITE\nSP_DRAM_ADDR_REG not in RDRam space","Error",MB_OK); return; } - - if ((*RSPInfo.SP_WR_LEN_REG & 0xFFF) + 1 + (*RSPInfo.SP_MEM_ADDR_REG & 0xFFF) > 0x1000) { + + if ((*RSPInfo.SP_WR_LEN_REG & 0xFFF) + 1 + (*RSPInfo.SP_MEM_ADDR_REG & 0xFFF) > 0x1000) + { MessageBox(NULL,"SP DMA WRITE\ncould not fit copy in memory segement","Error",MB_OK); return; } @@ -114,23 +132,31 @@ void SP_DMA_WRITE (void) { Count = ((*RSPInfo.SP_WR_LEN_REG >> 12) & 0xFF) + 1; Dest = RSPInfo.RDRAM + (addr & ~7); Source = RSPInfo.DMEM + ((*RSPInfo.SP_MEM_ADDR_REG & 0x1FFF) & ~7); - + #if defined(RSP_SAFE_DMA) - for (j = 0 ; j < Count; j++) { - for (i = 0 ; i < Length; i++) { + for (j = 0 ; j < Count; j++) + { + for (i = 0 ; i < Length; i++) + { *(BYTE *)(((DWORD)Dest + j * Skip + i) ^ 3) = *(BYTE *)(((DWORD)Source + j * Length + i) ^ 3); } } #else - if ((Skip & 0x3) == 0) { - for (j = 0; j < Count; j++) { + if ((Skip & 0x3) == 0) + { + for (j = 0; j < Count; j++) + { memcpy(Dest, Source, Length); Source += Length; Dest += Skip; } - } else { - for (j = 0 ; j < Count; j++) { - for (i = 0 ; i < Length; i++) { + } + else + { + for (j = 0 ; j < Count; j++) + { + for (i = 0 ; i < Length; i++) + { *(BYTE *)(((DWORD)Dest + i) ^ 3) = *(BYTE *)(((DWORD)Source + i) ^ 3); } Source += Length; diff --git a/Source/RSP/dma.h b/Source/RSP/dma.h index 698bac5d5..199ad2c2b 100644 --- a/Source/RSP/dma.h +++ b/Source/RSP/dma.h @@ -26,4 +26,3 @@ void SP_DMA_READ ( void ); void SP_DMA_WRITE ( void ); - diff --git a/Source/Settings/Settings.cpp b/Source/Settings/Settings.cpp index c876103fc..72670c825 100644 --- a/Source/Settings/Settings.cpp +++ b/Source/Settings/Settings.cpp @@ -60,7 +60,6 @@ __declspec(dllexport) void SetSettingInfo2 (PLUGIN_SETTINGS2 * info); __declspec(dllexport) void SetSettingInfo3 (PLUGIN_SETTINGS3 * info); } - __declspec(dllexport) void SetSettingInfo (PLUGIN_SETTINGS * info) { g_PluginSettings = *info; @@ -97,7 +96,9 @@ void RegisterSetting ( short SettingID, SETTING_DATA_TYPE Type, const char * if (Category && Category[0] != 0) { _snprintf(FullCategory,sizeof(FullCategory),"%s\\%s",g_PluginSettingName,Category); - } else { + } + else + { _snprintf(FullCategory,sizeof(FullCategory),"%s",g_PluginSettingName); } @@ -209,6 +210,3 @@ void SetSettingSz ( short SettingID, const char * Value ) { g_PluginSettings.SetSettingSz(g_PluginSettings.handle,SettingID + g_PluginSettings.SettingStartRange, Value); } - - - diff --git a/Source/Settings/Settings.h b/Source/Settings/Settings.h index 62a32868c..013196e6f 100644 --- a/Source/Settings/Settings.h +++ b/Source/Settings/Settings.h @@ -28,7 +28,6 @@ enum SETTING_DATA_TYPE { Data_String_RDB_Setting = 7, // A string read from the rom database, with config file }; - // set other information about different settings BOOL SettingsInitilized ( void ); void SetModuleName ( const char * Name ); diff --git a/Source/nragev20/DirectInput.cpp b/Source/nragev20/DirectInput.cpp index 14d1b1ba9..006f2218b 100644 --- a/Source/nragev20/DirectInput.cpp +++ b/Source/nragev20/DirectInput.cpp @@ -497,11 +497,15 @@ bool GetNControllerInput ( const int indexController, LPDWORD pdwData ) } - if (pcController->bRapidFireEnabled) { - if (pcController->bRapidFireCounter >= pcController->bRapidFireRate) { + if (pcController->bRapidFireEnabled) + { + if (pcController->bRapidFireCounter >= pcController->bRapidFireRate) + { w_Buttons = (w_Buttons & 0xFF1F); pcController->bRapidFireCounter = 0; - } else{ + } + else + { pcController->bRapidFireCounter = pcController->bRapidFireCounter + 1; } } @@ -545,7 +549,6 @@ bool GetNControllerInput ( const int indexController, LPDWORD pdwData ) MAKEWORD( (BYTE)(min( max( MINAXISVALUE, (long)(lAxisValueX * d_ModifierX )), MAXAXISVALUE) / N64DIVIDER ), (BYTE)(min( max( MINAXISVALUE, (long)(lAxisValueY * d_ModifierY )), MAXAXISVALUE) / N64DIVIDER ))); } - return true; } @@ -745,7 +748,7 @@ BOOL CALLBACK EnumSetObjectsAxis( LPCDIDEVICEOBJECTINSTANCE lpddoi, LPVOID pvRef diprg.diph.dwObj = lpddoi->dwType; diprg.lMin = MINAXISVALUE; diprg.lMax = MAXAXISVALUE; - + lpDirectInputDevice->SetProperty(DIPROP_RANGE, &diprg.diph); // HACK: Usually works, but not all devices support setting range. return DIENUM_CONTINUE; @@ -788,7 +791,6 @@ bool GetInputDevice( HWND hWnd, LPDIRECTINPUTDEVICE8 &lpDirectInputDevice, GUID switch( LOBYTE(dwDevType) ) { - case DI8DEVTYPE_KEYBOARD: ppDiDataFormat = &c_dfDIKeyboard; break; @@ -1130,7 +1132,7 @@ HRESULT DirectRumbleCommand( LPDIRECTINPUTDEVICE8 lpDirectInputDevice, DWORD cmd esc.dwCommand = ADAPT_RUMBLE; // send rumble command esc.lpvInBuffer = &cmd; // 1=go, 0=stop esc.cbInBuffer = 4; - esc.lpvOutBuffer = NULL; + esc.lpvOutBuffer = NULL; esc.cbOutBuffer = 0; HRESULT hr = lpDirectInputDevice->Escape(&esc); diff --git a/Source/nragev20/FileAccess.cpp b/Source/nragev20/FileAccess.cpp index ab47ac27c..a08104dac 100644 --- a/Source/nragev20/FileAccess.cpp +++ b/Source/nragev20/FileAccess.cpp @@ -604,7 +604,6 @@ bool ProcessKey( DWORD dwKey, DWORD dwSection, LPCSTR pszLine, LPTSTR pszFFDevic } break; - } return bReturn; @@ -1146,7 +1145,8 @@ bool BrowseFile( HWND hDlg, TCHAR *pszFileName, DWORD dwType, bool fSave ) return false; } - for ( ; nFilters > 0; nFilters--) { + for ( ; nFilters > 0; nFilters--) + { pszTemp += _tcslen(pszTemp); pszTemp += 1; pszTemp += _tcslen(pszTemp); @@ -1160,7 +1160,6 @@ bool BrowseFile( HWND hDlg, TCHAR *pszFileName, DWORD dwType, bool fSave ) szInitialDir[MAX_PATH+1] = _T(""), *pcSlash; - if( pszFileName[1] == _T(':') || ( pszFileName[1] == _T('\\') && pszFileName[0] == _T('\\') )) { lstrcpyn( szInitialDir, pszFileName, ARRAYSIZE(szInitialDir) ); @@ -1178,7 +1177,6 @@ bool BrowseFile( HWND hDlg, TCHAR *pszFileName, DWORD dwType, bool fSave ) lstrcpyn( szFileName, pszFileName, ARRAYSIZE(szFileName) ); } - OPENFILENAME oFile; oFile.lStructSize = sizeof (OPENFILENAME); diff --git a/Source/nragev20/GBCart.cpp b/Source/nragev20/GBCart.cpp index b06d06dec..8b5600825 100644 --- a/Source/nragev20/GBCart.cpp +++ b/Source/nragev20/GBCart.cpp @@ -32,15 +32,18 @@ bool WriteCartMBC5(LPGBCART Cart, WORD dwAddress, BYTE *Data); // Tries to read RTC data from separate file (not integrated into SAV) // success sets the useTDF flag // failure inits the RTC at zero and maybe throws a warning -void ReadTDF(LPGBCART Cart) { +void ReadTDF(LPGBCART Cart) +{ } -void WriteTDF(LPGBCART Cart) { +void WriteTDF(LPGBCART Cart) +{ // check useTDF flag // write data from RTC to TDF file } -void UpdateRTC(LPGBCART Cart) { +void UpdateRTC(LPGBCART Cart) +{ time_t now, dif; int days; @@ -57,13 +60,17 @@ void UpdateRTC(LPGBCART Cart) { days = (int)(Cart->TimerData[3] + ((Cart->TimerData[4] & 1) << 8) + dif); Cart->TimerData[3] = (days & 0xFF); - if(days > 255) { - if(days > 511) { + if (days > 255) + { + if (days > 511) + { days &= 511; Cart->TimerData[4] |= 0x80; } if (days > 255) - Cart->TimerData[4] = (Cart->TimerData[4] & 0xFE) | (days > 255 ? 1 : 0); + { + Cart->TimerData[4] = (Cart->TimerData[4] & 0xFE) | (days > 255 ? 1 : 0); + } } Cart->timerLastUpdate = now; @@ -103,7 +110,9 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T dwFilesize = GetFileSize(hTemp, NULL); CloseHandle(hTemp); Cart->RomData = (const unsigned char *)MapViewOfFile( Cart->hRomFile, FILE_MAP_READ, 0, 0, 0 ); - } else { + } + else + { DebugWriteA("Couldn't load the ROM file, GetLastError returned %08x\n", GetLastError()); if (hTemp != INVALID_HANDLE_VALUE) CloseHandle(hTemp); // if file size was zero, make sure we don't leak the handle @@ -124,7 +133,8 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T DebugWriteA(" Cartridge Type #:"); DebugWriteByteA(Cart->RomData[0x147]); DebugWriteA("\n"); - switch (Cart->RomData[0x147]) { // if we hadn't checked the file size before, this might have caused an access violation + switch (Cart->RomData[0x147]) + { // if we hadn't checked the file size before, this might have caused an access violation case 0x00: Cart->iCartType = GB_NORM; Cart->bHasRam = false; @@ -287,7 +297,8 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T } // assign read/write handlers - switch (Cart->iCartType) { + switch (Cart->iCartType) + { case GB_NORM: // Raw cartridge Cart->ptrfnReadCart = &ReadCartNorm; Cart->ptrfnWriteCart = &WriteCartNorm; @@ -318,7 +329,8 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T // Determine ROM size for paging checks Cart->iNumRomBanks = 2; - switch (Cart->RomData[0x148]) { + switch (Cart->RomData[0x148]) + { case 0x01: Cart->iNumRomBanks = 4; break; @@ -397,11 +409,13 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T if( hTemp == INVALID_HANDLE_VALUE ) {// test if Read-only access is possible hTemp = CreateFile( RamFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL ); - if (Cart->bHasTimer && Cart->bHasBattery) { + if (Cart->bHasTimer && Cart->bHasBattery) + { Cart->RamData = (LPBYTE)P_malloc(NumQuarterBlocks * 0x0800 + sizeof(gbCartRTC)); ClearData(Cart->RamData, NumQuarterBlocks * 0x0800 + sizeof(gbCartRTC)); } - else { + else + { Cart->RamData = (LPBYTE)P_malloc(NumQuarterBlocks * 0x0800); ClearData(Cart->RamData, NumQuarterBlocks * 0x0800); } @@ -421,7 +435,9 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T WarningMessage( IDS_ERR_GBSRAMERR, MB_OK | MB_ICONWARNING); return true; } - } else { // file is OK, use a mapping + } + else + { // file is OK, use a mapping if (Cart->bHasTimer && Cart->bHasBattery) Cart->hRamFile = CreateFileMapping( hTemp, NULL, PAGE_READWRITE, 0, NumQuarterBlocks * 0x0800 + sizeof(gbCartRTC), NULL); else @@ -430,15 +446,21 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T if (Cart->hRamFile != NULL) { Cart->RamData = (LPBYTE)MapViewOfFile( Cart->hRamFile, FILE_MAP_ALL_ACCESS, 0, 0, 0 ); - } else { // could happen, if the file isn't big enough AND can't be grown to fit + } + else + { // could happen, if the file isn't big enough AND can't be grown to fit DWORD dwBytesRead; - if (Cart->bHasTimer && Cart->bHasBattery) { + if (Cart->bHasTimer && Cart->bHasBattery) + { Cart->RamData = (LPBYTE)P_malloc(NumQuarterBlocks * 0x0800 + sizeof(gbCartRTC)); ReadFile(hTemp, Cart->RamData, NumQuarterBlocks * 0x0800 + sizeof(gbCartRTC), &dwBytesRead, NULL); - } else { + } + else + { Cart->RamData = (LPBYTE)P_malloc(NumQuarterBlocks * 0x0800); ReadFile(hTemp, Cart->RamData, NumQuarterBlocks * 0x0800, &dwBytesRead, NULL); } + if (dwBytesRead < NumQuarterBlocks * 0x0800 + ((Cart->bHasTimer && Cart->bHasBattery) ? sizeof(gbCartRTC) : 0)) { ClearData(Cart->RamData, NumQuarterBlocks * 0x0800 + ((Cart->bHasTimer && Cart->bHasBattery) ? sizeof(gbCartRTC) : 0)); @@ -451,9 +473,11 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T } } - if (Cart->bHasTimer && Cart->bHasBattery) { + if (Cart->bHasTimer && Cart->bHasBattery) + { dwFilesize = GetFileSize(hTemp, 0); - if (dwFilesize >= (NumQuarterBlocks * 0x0800 + sizeof(gbCartRTC) ) ) { + if (dwFilesize >= (NumQuarterBlocks * 0x0800 + sizeof(gbCartRTC) ) ) + { // Looks like there is extra data in the SAV file than just RAM data... assume it is RTC data. gbCartRTC RTCTimer; CopyMemory( &RTCTimer, &Cart->RamData[NumQuarterBlocks * 0x0800], sizeof(RTCTimer) ); @@ -470,13 +494,16 @@ bool LoadCart(LPGBCART Cart, LPCTSTR RomFileName, LPCTSTR RamFileName, LPCTSTR T Cart->timerLastUpdate = RTCTimer.mapperLastTime; UpdateRTC(Cart); } - else { + else + { ReadTDF(Cart); // try to open TDF format, clear/init Cart->TimerData if that fails } } CloseHandle(hTemp); - } else { + } + else + { // no battery; just allocate some RAM Cart->RamData = (LPBYTE)P_malloc(Cart->iNumRamBanks * 0x2000); } @@ -582,8 +609,8 @@ bool ReadCartMBC1(LPGBCART Cart, WORD dwAddress, BYTE *Data) } else if ((dwAddress >= 0xA000) && (dwAddress <= 0xBFFF)) { - if (Cart->bHasRam) - { // && Cart->bRamEnableState) { + if (Cart->bHasRam/* && Cart->bRamEnableState)*/) + { if (Cart->iCurrentRamBankNo >= Cart->iNumRamBanks) { ZeroMemory(Data, 32); @@ -742,7 +769,8 @@ bool WriteCartMBC2(LPGBCART Cart, WORD dwAddress, BYTE *Data) else if ((dwAddress >= 0x2000) && (dwAddress <= 0x3FFF)) // ROM bank select { Cart->iCurrentRomBankNo = Data[0] & 0x0F; - if (Cart->iCurrentRomBankNo == 0) { + if (Cart->iCurrentRomBankNo == 0) + { Cart->iCurrentRomBankNo = 1; } DebugWriteA("Set ROM Bank: %02X\n", Cart->iCurrentRomBankNo); @@ -820,12 +848,13 @@ bool ReadCartMBC3(LPGBCART Cart, WORD dwAddress, BYTE *Data) { CopyMemory(Data, &Cart->RamData[dwAddress - 0xA000 + (Cart->iCurrentRamBankNo * 0x2000)], 32); DebugWriteA("RAM read: Bank %02X\n", Cart->iCurrentRamBankNo); - } - //else { - // ZeroMemory(Data, 32); - // //for (i=0; i<32; i++) Data[i] = 0; - // DebugWriteA("Failed RAM read: (RAM not active)\n"); - //} + }/* + else + { + ZeroMemory(Data, 32); + //for (i=0; i<32; i++) Data[i] = 0; + DebugWriteA("Failed RAM read: (RAM not active)\n"); + }*/ } else { @@ -918,7 +947,6 @@ bool WriteCartMBC3(LPGBCART Cart, WORD dwAddress, BYTE *Data) // Done bool ReadCartMBC5(LPGBCART Cart, WORD dwAddress, BYTE *Data) { - if ((dwAddress < 0x4000)) //Rom Bank 0 { CopyMemory(Data, &Cart->RomData[dwAddress], 32); @@ -1029,9 +1057,10 @@ bool SaveCart(LPGBCART Cart, LPTSTR SaveFile, LPTSTR TimeFile) DWORD NumQuarterBlocks = 0; gbCartRTC RTCTimer; - if (Cart->bHasRam && Cart->bHasBattery) { - // Write only the bytes that NEED writing! - switch (Cart->RomData[0x149]) { + if (Cart->bHasRam && Cart->bHasBattery) + { // Write only the bytes that NEED writing! + switch (Cart->RomData[0x149]) + { case 1: NumQuarterBlocks = 1; break; @@ -1046,7 +1075,8 @@ bool SaveCart(LPGBCART Cart, LPTSTR SaveFile, LPTSTR TimeFile) break; } FlushViewOfFile( Cart->RamData, NumQuarterBlocks * 0x0800 ); - if (Cart->bHasTimer) { + if (Cart->bHasTimer) + { // Save RTC in VisualBoy Advance format // TODO: Check if VBA saves are compatible with other emus. // TODO: Only write RTC data if VBA RTC data was originaly present @@ -1063,8 +1093,7 @@ bool SaveCart(LPGBCART Cart, LPTSTR SaveFile, LPTSTR TimeFile) RTCTimer.mapperLastTime = Cart->timerLastUpdate; CopyMemory(Cart->RamData + NumQuarterBlocks * 0x0800, &RTCTimer, sizeof(RTCTimer)); - - FlushViewOfFile( Cart->RamData + NumQuarterBlocks * 0x0800, sizeof(gbCartRTC)); + FlushViewOfFile(Cart->RamData + NumQuarterBlocks * 0x0800, sizeof(gbCartRTC)); } } return true; @@ -1105,10 +1134,14 @@ void ClearData(BYTE *Data, int Length) { int i; - for (i=0; ifXInput ? BST_CHECKED : BST_UNCHECKED ); if( hTabControl ) - DestroyWindow( hTabControl ); + DestroyWindow( hTabControl ); + if( pcController->fXInput ) hTabControl = CreateDialog ( g_hResourceDLL, MAKEINTRESOURCE( IDD_XCONTROLS ), hDlg, XControlsTabProc ); else hTabControl = CreateDialog( g_hResourceDLL, MAKEINTRESOURCE( IDD_CONTROLS ), hDlg, ControlsTabProc ); + { hDlgItem = GetDlgItem( hDlg, IDC_CONTROLLERTAB ); @@ -583,7 +585,6 @@ BOOL CALLBACK ControllerTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa if( hTabControl ) SendMessage( hTabControl, WM_USER_UPDATE, 0, 0 ); return TRUE; - default: return FALSE; //false means the msg didn't got processed } @@ -718,7 +719,6 @@ BOOL CALLBACK ControlsTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara LeaveCriticalSection(&g_critical); - GetButtonText( aButtons[dwButtonID[2]], szBuffer ); SendMessage( GetDlgItem( hDlg, dwButtonID[1] ), WM_SETTEXT , 0, (LPARAM)szBuffer ); if( hFocus != NULL ) @@ -770,7 +770,6 @@ BOOL CALLBACK ControlsTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara aButtons = g_ivConfig->Controllers[g_ivConfig->ChosenTab].aButton; LeaveCriticalSection(&g_critical); - if( wParam == 0 ) { CheckDlgButton( hDlg, IDC_N64RANGE, g_ivConfig->Controllers[g_ivConfig->ChosenTab].fRealN64Range ? BST_CHECKED : BST_UNCHECKED ); @@ -779,7 +778,6 @@ BOOL CALLBACK ControlsTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara CheckDlgButton( hDlg, IDC_CONFIG2, ( g_ivConfig->Controllers[g_ivConfig->ChosenTab].bAxisSet == 1 ) ? BST_CHECKED : BST_UNCHECKED ); CheckDlgButton( hDlg, IDC_CONFIG3, ( g_ivConfig->Controllers[g_ivConfig->ChosenTab].bAxisSet == 2 ) ? BST_CHECKED : BST_UNCHECKED ); - SendMessage( GetDlgItem( hDlg, IDC_CTRRANGE ), TBM_SETPOS, TRUE, g_ivConfig->Controllers[g_ivConfig->ChosenTab].bStickRange ); LoadString( g_hResourceDLL, IDS_C_RANGE, szTemp, 40 ); wsprintf( szBuffer, szTemp, g_ivConfig->Controllers[g_ivConfig->ChosenTab].bStickRange ); @@ -842,7 +840,6 @@ BOOL CALLBACK XControlsTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar if( !ReadXInputControllerKeys( hDlg, gController )) for( int i = IDC_XC_A; i <= IDC_XC_RTS; i++ ) SendDlgItemMessage( hDlg, i, CB_SETCURSEL, 0, ( LPARAM )0 ); - return TRUE; case WM_COMMAND: @@ -980,10 +977,12 @@ BOOL CALLBACK DevicesTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam CheckDlgButton( hDlg, IDC_DEADPANMOUSEX, BST_CHECKED ); else CheckDlgButton( hDlg, IDC_DEADPANMOUSEX, BST_UNCHECKED ); + if( pcController->bMouseMoveX == MM_BUFF ) CheckDlgButton( hDlg, IDC_BUFFEREDMOUSEX, BST_CHECKED ); else CheckDlgButton( hDlg, IDC_BUFFEREDMOUSEX, BST_UNCHECKED ); + if( pcController->bMouseMoveX == MM_ABS ) CheckDlgButton( hDlg, IDC_ABSOLUTEMOUSEX, BST_CHECKED ); else @@ -993,10 +992,12 @@ BOOL CALLBACK DevicesTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam CheckDlgButton( hDlg, IDC_DEADPANMOUSEY, BST_CHECKED ); else CheckDlgButton( hDlg, IDC_DEADPANMOUSEY, BST_UNCHECKED ); + if( pcController->bMouseMoveY == MM_BUFF ) CheckDlgButton( hDlg, IDC_BUFFEREDMOUSEY, BST_CHECKED ); else CheckDlgButton( hDlg, IDC_BUFFEREDMOUSEY, BST_UNCHECKED ); + if( pcController->bMouseMoveY == MM_ABS ) CheckDlgButton( hDlg, IDC_ABSOLUTEMOUSEY, BST_CHECKED ); else @@ -1030,7 +1031,6 @@ BOOL CALLBACK DevicesTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam BOOL CALLBACK MoveModifierDialog( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { - HWND hDlgItem; long i,j; DWORD dwValue; @@ -1065,20 +1065,18 @@ BOOL CALLBACK MoveModifierDialog( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lP case WM_VSCROLL: switch (GetWindowLong( (HWND)lParam, GWL_ID )) { - case IDC_XMODIFIER: + case IDC_XMODIFIER: i = SendMessage( (HWND)lParam, TBM_GETPOS, 0, 0 ); LoadString( g_hResourceDLL, IDS_M_MOVEVALUE, szTemp, DEFAULT_BUFFER ); wsprintf( szBuffer, szTemp, i ); SendMessage( GetDlgItem( hDlg, IDT_XMODIFIER ), WM_SETTEXT , 0, (LPARAM)szBuffer ); return TRUE; - - case IDC_YMODIFIER: + case IDC_YMODIFIER: i = SendMessage( (HWND)lParam, TBM_GETPOS, 0, 0 ); LoadString( g_hResourceDLL, IDS_M_MOVEVALUE, szTemp, DEFAULT_BUFFER ); wsprintf( szBuffer, szTemp, i ); SendMessage( GetDlgItem( hDlg, IDT_YMODIFIER ), WM_SETTEXT , 0, (LPARAM)szBuffer ); return TRUE; - default: return FALSE; } @@ -1399,7 +1397,6 @@ void ModDescription( HWND hListView, int iEntry, const LPMODIFIER pModifier ) szBuffer[0] = '\0'; } ListView_SetItemText( hListView, iEntry, 2, szBuffer ); - } BOOL CALLBACK ModifierTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) @@ -2571,7 +2568,6 @@ BOOL CALLBACK RumblePakProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam bMatch = true; } - if (!bMatch && g_devList[i].bEffType != 0 ) { if( g_devList[i].bProductCounter == 0 ) @@ -2667,10 +2663,12 @@ BOOL CALLBACK RumblePakProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam CheckDlgButton( hDlg, IDC_RUMBLE1, BST_CHECKED ); else CheckDlgButton( hDlg, IDC_RUMBLE1, BST_UNCHECKED ); + if( pcController->bRumbleTyp == RUMBLE_EFF2 ) CheckDlgButton( hDlg, IDC_RUMBLE2, BST_CHECKED ); else CheckDlgButton( hDlg, IDC_RUMBLE2, BST_UNCHECKED ); + if( pcController->bRumbleTyp == RUMBLE_EFF3 ) CheckDlgButton( hDlg, IDC_RUMBLE3, BST_CHECKED ); else @@ -2785,7 +2783,6 @@ BOOL CALLBACK ShortcutsTabProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPar switch(uMsg) { case WM_INITDIALOG: - bScanRunning = false; iPlayer = 5; @@ -3069,7 +3066,6 @@ BOOL CALLBACK FoldersDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa if( szBuffer[0] != 0 && ( szBuffer[1] == ':' || ( szBuffer[1] == '\\' && szBuffer[0] == '\\' ))) { - CheckDlgButton( hDlg, IDC_MEMPAK_ABS, BST_CHECKED ); GetDirectory( szBuffer, DIRECTORY_MEMPAK ); @@ -3093,7 +3089,6 @@ BOOL CALLBACK FoldersDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa SendMessage( GetDlgItem( hDlg, IDC_MEMPAK_REL_EDIT ), WM_SETTEXT, 0, (LPARAM)STRING_DEF_MEMPAKFILE ); } - GetDirectory( szBuffer, DIRECTORY_MEMPAK ); pcSlash = _tcsrchr( szBuffer, '\\' ); if( pcSlash && ( pcSlash[1] == '\0' )) *pcSlash = '\0'; @@ -3132,7 +3127,6 @@ BOOL CALLBACK FoldersDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa if( pcSlash && ( pcSlash[1] == _T('\0') )) *pcSlash = '\0'; SendMessage( GetDlgItem( hDlg, IDC_GBROM_ABS_EDIT ), WM_SETTEXT, 0, (LPARAM)szBuffer ); - // GBSave Directory lstrcpyn(szBuffer, g_aszDefFolders[DIRECTORY_GBSAVES], MAX_PATH); @@ -3171,13 +3165,11 @@ BOOL CALLBACK FoldersDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa } } - GetDirectory( szBuffer, DIRECTORY_GBSAVES ); pcSlash = _tcsrchr( szBuffer, _T('\\') ); if( pcSlash && ( pcSlash[1] == _T('\0') )) *pcSlash = '\0'; SendMessage( GetDlgItem( hDlg, IDC_GBSAVE_ABS_EDIT ), WM_SETTEXT, 0, (LPARAM)szBuffer ); - return FALSE; // don't give it focus case WM_COMMAND: @@ -3312,8 +3304,6 @@ BOOL CALLBACK FoldersDialogProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPa } } - - /////////////////////////////////////////////////////////////////////////////// // A wonderful n squared algorithm to store the key names in a string... what for??? // called by EnumObjects in MainDlgProcess to enumerate the keys on the keyboard...? @@ -3486,7 +3476,6 @@ bool GetButtonText( const BUTTON& btnButton, LPTSTR Buffer ) wsprintf(Text[1], buff, btnButton.bOffset - 7 ); Text[2] = AxeID[2 + btnButton.bAxisID]; break; - case DT_KEYBUTTON: LoadString( g_hResourceDLL, iDevice[2], Text[0], 16 ); //TODO: this is great! can we do this for all of them? @@ -3496,20 +3485,17 @@ bool GetButtonText( const BUTTON& btnButton, LPTSTR Buffer ) LoadString( g_hResourceDLL, IDS_C_UNKNOWN, Text[1], 16 ); Text[2] = TEXT( "" ); break; - case DT_MOUSEBUTTON: LoadString( g_hResourceDLL, iDevice[3], Text[0], 16 ); LoadString( g_hResourceDLL, iMouse[3], Text[1], 16 ); Text[2] = Btn; wsprintf( Btn, TEXT( "%02u" ), btnButton.bOffset ); break; - case DT_MOUSEAXE: LoadString( g_hResourceDLL, iDevice[3], Text[0], 16 ); LoadString( g_hResourceDLL, iMouse[btnButton.bOffset], Text[1], 16 ); Text[2] = AxeID[btnButton.bAxisID]; break; - case DT_UNASSIGNED: default: LoadString( g_hResourceDLL, iDevice[0], Text[0], 16 ); @@ -3574,7 +3560,6 @@ DWORD ScanMouse( LPDEVICE lpDevice, LPDWORD lpdwCounter, LPBUTTON pButton ) return FALSE; } - if ( bFirstScan ) { CopyMemory( rgbInitButtons, dm_Current.rgbButtons, sizeof(rgbInitButtons)); @@ -3650,8 +3635,8 @@ DWORD ScanGamePad ( LPDEVICE lpDevice, LPDWORD lpdwCounter, LPBUTTON pButton, in hr = lpDevice->didHandle->GetDeviceState( sizeof(DIJOYSTATE), &lpDevice->stateAs.joyState ); if ( FAILED(hr) ) { - hr = lpDevice->didHandle->Acquire(); - return FALSE; + hr = lpDevice->didHandle->Acquire(); + return FALSE; } if ( bFirstScan ) @@ -3971,7 +3956,6 @@ void UpdateControllerStructures() g_pcControllers[i].guidFFDevice = GUID_NULL; } - g_pcControllers[i].fPakCRCError = false; g_pcControllers[i].fPakInitialized = false; @@ -3986,7 +3970,8 @@ LRESULT CALLBACK BlockerProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; - switch (msg) { + switch (msg) + { case WM_CREATE: return 0; case WM_PAINT: @@ -4027,7 +4012,6 @@ BOOL InitOverlay(void) HWND MakeOverlay() { HWND hwnd; - RECT size; GetWindowRect(g_hMainDialog, &size); @@ -4046,8 +4030,8 @@ HWND MakeOverlay() g_hMainDialog, // owner window (HMENU) NULL, // menu g_strEmuInfo.hinst, // handle to application instance - (LPVOID) NULL); // window-creation data - + (LPVOID) NULL // window-creation data + ); if (!hwnd) return NULL; diff --git a/Source/nragev20/International.cpp b/Source/nragev20/International.cpp index 846f08922..2a2a69dae 100644 --- a/Source/nragev20/International.cpp +++ b/Source/nragev20/International.cpp @@ -49,9 +49,10 @@ HMODULE LoadLanguageDLL(LANGID DesiredLanguage) hDLL = LoadLibraryEx(SatellitePath, 0, 0); if( hDLL ) return hDLL; - else { // try the primary language ID + else + { // try the primary language ID DesiredLanguage = PRIMARYLANGID(DesiredLanguage); - _stprintf(SatellitePath, _T("NRage-Language-%u.dll"), DesiredLanguage); + _stprintf(SatellitePath, _T("NRage-Language-%u.dll"), DesiredLanguage); hDLL = LoadLibraryEx(SatellitePath, 0, 0); if( hDLL ) return hDLL; @@ -83,25 +84,25 @@ BOOL CALLBACK EnumLangProc(HANDLE hModule, LPCTSTR lpszType, LPCTSTR lpszName, // the Hongkong SAR version LANGID GetNTDLLNativeLangID() { - LANGINFO LangInfo; - LPCTSTR Type = (LPCTSTR) ((LPVOID)((WORD)16)); + LPCTSTR Type = (LPCTSTR) ((LPVOID)((WORD)16)); LPCTSTR Name = (LPCTSTR) 1; ZeroMemory(&LangInfo,sizeof(LangInfo)); - + // Get the HModule for ntdll. HMODULE hMod = GetModuleHandle(_T("ntdll.dll")); - if (hMod==NULL) { + if (hMod==NULL) + { return(0); } BOOL result = EnumResourceLanguages(hMod, Type, Name, (ENUMRESLANGPROC)EnumLangProc, (LONG_PTR) &LangInfo); - - if (!result || (LangInfo.Count > 2) || (LangInfo.Count < 1) ) { + + if (!result || (LangInfo.Count > 2) || (LangInfo.Count < 1) ) + { return (0); } - return (LangInfo.LangID); } @@ -114,7 +115,8 @@ BOOL IsHongKongVersion() IMMRELEASECONTEXT pImmReleaseContext; hMod = LoadLibrary(_T("imm32.dll")); - if (hMod) { + if (hMod) + { pImmReleaseContext = (IMMRELEASECONTEXT)GetProcAddress(hMod,"ImmReleaseContext"); if (pImmReleaseContext) { bRet = pImmReleaseContext(NULL,0); @@ -137,12 +139,12 @@ LANGID DetectLanguage() DWORD Type, BuffLen = MAX_KEY_BUFFER; TCHAR LangKeyValue[MAX_KEY_BUFFER]; - VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); if( !GetVersionEx(&VersionInfo) ) return(0); - switch( VersionInfo.dwPlatformId ) { + switch( VersionInfo.dwPlatformId ) + { // On Windows NT, Windows 2000 or higher case VER_PLATFORM_WIN32_NT: if( VersionInfo.dwMajorVersion >= 5) // Windows 2000 or higher @@ -156,10 +158,13 @@ LANGID DetectLanguage() uiLangID = fpGetLang(); } // and if we couldn't load kernel32.dll, just fall back to default language } - else { // for NT4 check the language of ntdll.dll + else + { // for NT4 check the language of ntdll.dll uiLangID = GetNTDLLNativeLangID(); - if (uiLangID == 1033) { // special processing for Honkong SAR version of NT4 - if (IsHongKongVersion()) { + if (uiLangID == 1033) + { // special processing for Honkong SAR version of NT4 + if (IsHongKongVersion()) + { uiLangID = 3076; } } @@ -169,13 +174,15 @@ LANGID DetectLanguage() case VER_PLATFORM_WIN32_WINDOWS: // Open the registry key for the UI language if( RegOpenKeyEx(HKEY_CURRENT_USER,_T("Default\\Control Panel\\Desktop\\ResourceLocale"), 0, - KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS ) { + KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS ) + { // Get the type of the default key if( RegQueryValueEx(hKey, NULL, NULL, &Type, NULL, NULL) == ERROR_SUCCESS - && Type == REG_SZ ) { - // Read the key value + && Type == REG_SZ ) + { // Read the key value if( RegQueryValueEx(hKey, NULL, NULL, &Type, (LPBYTE)LangKeyValue, &BuffLen) - == ERROR_SUCCESS ) { + == ERROR_SUCCESS ) + { uiLangID = _ttoi(LangKeyValue); } } @@ -184,7 +191,8 @@ LANGID DetectLanguage() break; } - if (uiLangID == 0) { + if (uiLangID == 0) + { uiLangID = GetUserDefaultLangID(); } // Return the found language ID. diff --git a/Source/nragev20/International.h b/Source/nragev20/International.h index 0349c979b..b9afb351b 100644 --- a/Source/nragev20/International.h +++ b/Source/nragev20/International.h @@ -27,7 +27,8 @@ #ifndef _NRINTERNATIONAL_ #define _NRINTERNATIONAL_ -typedef struct LANGINFO_DEF { +typedef struct LANGINFO_DEF +{ int Count; LANGID LangID; } LANGINFO; diff --git a/Source/nragev20/NRagePluginV2.cpp b/Source/nragev20/NRagePluginV2.cpp index c998d8e32..970013e0d 100644 --- a/Source/nragev20/NRagePluginV2.cpp +++ b/Source/nragev20/NRagePluginV2.cpp @@ -236,7 +236,8 @@ EXPORT void CALL DllConfig ( HWND hParent ) } EnterCriticalSection( &g_critical ); - if( g_sysMouse.didHandle ) { // unlock mouse while configuring + if( g_sysMouse.didHandle ) + { // unlock mouse while configuring g_sysMouse.didHandle->SetCooperativeLevel( g_strEmuInfo.hMainWindow, DIB_DEVICE ); g_sysMouse.didHandle->Acquire(); } @@ -258,8 +259,10 @@ EXPORT void CALL DllConfig ( HWND hParent ) InitiatePaks( false ); // only re-init the mempaks and such if the user clicked Save or Use } - if( g_sysMouse.didHandle ) { - if ( g_bExclusiveMouse ) { // if we have exclusive mouse, we need to relock mouse after closing the config + if( g_sysMouse.didHandle ) + { + if ( g_bExclusiveMouse ) + { // if we have exclusive mouse, we need to relock mouse after closing the config g_sysMouse.didHandle->SetCooperativeLevel( g_strEmuInfo.hMainWindow, DIB_MOUSE ); g_sysMouse.didHandle->Acquire(); if (g_strEmuInfo.fDisplayShortPop) @@ -270,7 +273,8 @@ EXPORT void CALL DllConfig ( HWND hParent ) CreateThread(NULL, 0, MsgThreadFunction, g_pszThreadMessage, 0, NULL); } } - else { + else + { g_sysMouse.didHandle->SetCooperativeLevel( g_strEmuInfo.hMainWindow, DIB_KEYBOARD ); g_sysMouse.didHandle->Acquire(); } @@ -413,7 +417,8 @@ EXPORT void CALL InitiateControllers (CONTROL_INFO * ControlInfo) PrepareInputDevices(); - if( g_bExclusiveMouse ) { + if( g_bExclusiveMouse ) + { // g_sysMouse.didHandle->Unacquire(); // g_sysMouse.didHandle->SetCooperativeLevel( g_strEmuInfo.hMainWindow, DIB_MOUSE ); // PrepareInputDevices does this. g_sysMouse.didHandle->Acquire(); @@ -448,7 +453,7 @@ EXPORT void CALL RomOpen (void) ErrorMessage(IDS_ERR_NOINIT, 0, false); return; } - + EnterCriticalSection( &g_critical ); // re-init our paks and shortcuts InitiatePaks( true ); @@ -517,7 +522,8 @@ EXPORT void CALL GetKeys(int Control, BUTTONS * Keys ) { EnterCriticalSection( &g_critical ); - if( g_pcControllers[Control].fPlugged ) { + if( g_pcControllers[Control].fPlugged ) + { if (Control == g_iFirstController ) { GetDeviceDatas(); @@ -667,8 +673,6 @@ EXPORT void CALL ReadController( int Control, BYTE * Command ) GetNControllerInput( Control, (DWORD*)&Command[3] ); } break; - - case RD_READPAK: #ifdef ENABLE_RAWPAK_DEBUG WriteDatasA( "ReadPak-PreProcessing", Control, Command, 0); @@ -688,7 +692,6 @@ EXPORT void CALL ReadController( int Control, BYTE * Command ) DebugWriteA( NULL ); #endif break; - case RD_WRITEPAK: #ifdef ENABLE_RAWPAK_DEBUG WriteDatasA( "WritePak-PreProcessing", Control, Command, 0); @@ -707,7 +710,6 @@ EXPORT void CALL ReadController( int Control, BYTE * Command ) DebugWriteA( NULL ); #endif break; - case RD_READEEPROM: // Should be handled by the Emulator WriteDatasA( "ReadEeprom-PreProcessing", Control, Command, 0); @@ -720,7 +722,6 @@ EXPORT void CALL ReadController( int Control, BYTE * Command ) WriteDatasA( "WriteEeprom-PostProcessing", Control, Command, 0); DebugWriteA( NULL ); break; - default: // only accessible if the Emulator has bugs.. or maybe the Rom is flawed WriteDatasA( "ReadController: Bad read", Control, Command, 0); @@ -893,6 +894,7 @@ void FillControls(CONTROL Controls[4]) { case PAK_MEM: Controls[i].Plugin = PLUGIN_MEMPAK; + Controls[i].RawData = false; break; case PAK_RUMBLE: Controls[i].Plugin = PLUGIN_RUMBLE_PAK; @@ -1003,7 +1005,6 @@ void DoShortcut( int iControl, int iShortcut ) LoadString( g_hResourceDLL, IDS_P_NONE, pszMessage, ARRAYSIZE(pszMessage) ); LeaveCriticalSection( &g_critical ); break; - case SC_MEMPAK: if (PAK_NONE == g_pcControllers[iControl].PakType) { @@ -1018,7 +1019,6 @@ void DoShortcut( int iControl, int iShortcut ) bEjectFirst = true; } break; - case SC_RUMBPAK: if (PAK_NONE == g_pcControllers[iControl].PakType) { @@ -1060,7 +1060,6 @@ void DoShortcut( int iControl, int iShortcut ) bEjectFirst = true; } break; - case SC_VOICEPAK: if (PAK_NONE == g_pcControllers[iControl].PakType) { @@ -1076,7 +1075,6 @@ void DoShortcut( int iControl, int iShortcut ) bEjectFirst = true; } break; - case SC_ADAPTPAK: if (PAK_NONE == g_pcControllers[iControl].PakType) { @@ -1092,7 +1090,6 @@ void DoShortcut( int iControl, int iShortcut ) bEjectFirst = true; } break; - case SC_SWMEMRUMB: bEjectFirst = true; if( g_pcControllers[iControl].PakType == PAK_MEM ) @@ -1104,7 +1101,6 @@ void DoShortcut( int iControl, int iShortcut ) iShortcut = PAK_MEM; } break; - case SC_SWMEMADAPT: bEjectFirst = true; if( g_pcControllers[iControl].PakType == PAK_MEM ) @@ -1116,7 +1112,6 @@ void DoShortcut( int iControl, int iShortcut ) iShortcut = PAK_MEM; } break; - default: DebugWriteA("Invalid iShortcut passed to DoShortcut\n"); EnterCriticalSection( &g_critical ); @@ -1144,7 +1139,7 @@ void DoShortcut( int iControl, int iShortcut ) CreateThread(NULL, 0, DelayedShortcut, lpmNextShortcut, 0, NULL); iControl = -2; // this is just a hack to get around the check that appends "Changing Pak X to ..." } - + if( g_strEmuInfo.fDisplayShortPop && _tcslen(pszMessage) > 0 ) { if( iControl >= 0 ) diff --git a/Source/nragev20/NRagePluginV2.h b/Source/nragev20/NRagePluginV2.h index acfa0d6ad..06057dd9f 100644 --- a/Source/nragev20/NRagePluginV2.h +++ b/Source/nragev20/NRagePluginV2.h @@ -42,7 +42,7 @@ #define DEFAULT_RUMBLETYP RUMBLE_EFF1 #define DEFAULT_RUMBLESTRENGTH 80 #define DEFAULT_MOUSESENSIVITY 100 -#define DEFAULT_PAKTYPE PAK_NONE +#define DEFAULT_PAKTYPE PAK_MEM #define DEFAULT_MOUSEMOVE MM_BUFF #define PAK_NONE 0 diff --git a/Source/nragev20/PakIO.cpp b/Source/nragev20/PakIO.cpp index 6e6a8b5d6..efc621e81 100644 --- a/Source/nragev20/PakIO.cpp +++ b/Source/nragev20/PakIO.cpp @@ -199,7 +199,6 @@ bool InitControllerPak( const int iControl ) } } break; - case PAK_RUMBLE: { g_pcControllers[iControl].pPakData = P_malloc( sizeof(RUMBLEPAK)); @@ -233,7 +232,6 @@ bool InitControllerPak( const int iControl ) * Here, both files should be opened and the handles stored in tPak ( modify the struct for Your own purposes, only bPakType must stay at first ) */ - //CreateFile( g_pcControllers[iControl].szTransferSave, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_ALWAYS, 0, NULL ); tPak->iCurrentAccessMode = 0; tPak->iCurrentBankNo = 0; @@ -242,16 +240,18 @@ bool InitControllerPak( const int iControl ) tPak->bPakInserted = LoadCart( &tPak->gbCart, g_pcControllers[iControl].szTransferRom, g_pcControllers[iControl].szTransferSave, _T("") ); - if (tPak->bPakInserted) { + if (tPak->bPakInserted) + { DebugWriteA( "*** Init Transfer Pak - Success***\n" ); - } else { + } + else + { DebugWriteA( "*** Init Transfer Pak - FAILURE***\n" ); } bReturn = true; } break; - /*case PAK_VOICE: { g_pcControllers[iControl].pPakData = P_malloc( sizeof(VOICEPAK)); @@ -261,7 +261,6 @@ bool InitControllerPak( const int iControl ) bReturn = true; } break;*/ - case PAK_ADAPTOID: if( !g_pcControllers[iControl].fIsAdaptoid ) g_pcControllers[iControl].PakType = PAK_NONE; @@ -281,8 +280,6 @@ bool InitControllerPak( const int iControl ) bReturn = true; } break; - - /*case PAK_NONE: break;*/ } @@ -338,7 +335,7 @@ BYTE ReadControllerPak( const int iControl, LPBYTE Command ) FillMemory( Data, 32, 0x80 ); else ZeroMemory( Data, 32 ); - + if( g_pcControllers[iControl].fXInput ) // xinput controller rumble --tecnicors VibrateXInputController( g_pcControllers[iControl].xiController.nControl, 0, 0); else if (g_apFFDevice[iControl]) @@ -369,18 +366,25 @@ BYTE ReadControllerPak( const int iControl, LPBYTE Command ) FillMemory(Data, 32, 0x84); break; case 0xB: // if ((dwAddress >= 0xB000) && (dwAddress <= 0xBFFF)) - if (tPak->iEnableState == true) { + if (tPak->iEnableState == true) + { DebugWriteA( "Query Cart. State:" ); - if (tPak->bPakInserted) { - if (tPak->iCurrentAccessMode == 1) { + if (tPak->bPakInserted) + { + if (tPak->iCurrentAccessMode == 1) + { FillMemory(Data, 32, 0x89); DebugWriteA( " Inserted, Access Mode 1\n" ); - } else { + } + else + { FillMemory(Data, 32, 0x80); DebugWriteA( " Inserted, Access Mode 0\n" ); } Data[0] = Data[0] | tPak->iAccessModeChanged; - } else { + } + else + { FillMemory(Data, 32, 0x40); // Cart not inserted. DebugWriteA( " Not Inserted\n" ); } @@ -391,7 +395,8 @@ BYTE ReadControllerPak( const int iControl, LPBYTE Command ) case 0xD: case 0xE: case 0xF: // if ((dwAddress >= 0xC000)) - if (tPak->iEnableState == true) { + if (tPak->iEnableState == true) + { DebugWriteA( "Cart Read: Bank:%i\n", tPak->iCurrentBankNo ); DebugWriteA( " Address:%04X\n", ((dwAddress & 0xFFE0) - 0xC000) + ((tPak->iCurrentBankNo & 3) * 0x4000) ); @@ -406,10 +411,12 @@ BYTE ReadControllerPak( const int iControl, LPBYTE Command ) #ifdef ENABLE_RAWPAK_DEBUG DebugWriteA( "TPak Data: " ); - for (int i = 0; i < 32; i ++) { + for (int i = 0; i < 32; i ++) + { if ((i < 31) && ((i & 7) == 0)) DebugWriteA( "\n " ); DebugWriteByteA(Data[i]); - if (i < 31) { + if (i < 31) + { DebugWriteA( ", "); } } @@ -421,16 +428,14 @@ BYTE ReadControllerPak( const int iControl, LPBYTE Command ) bReturn = RD_OK; } break; - /*case PAK_VOICE: break;*/ - case PAK_ADAPTOID: if( ReadAdaptoidPak( iControl, dwAddress, Data ) == DI_OK ) { Data[32] = DataCRC( Data, 32 ); bReturn = RD_OK; - + if( ((ADAPTOIDPAK*)g_pcControllers[iControl].pPakData)->fRumblePak ) { BYTE bId = ((ADAPTOIDPAK*)g_pcControllers[iControl].pPakData)->bIdentifier; @@ -444,7 +449,7 @@ BYTE ReadControllerPak( const int iControl, LPBYTE Command ) } } break; - + /*case PAK_NONE: break;*/ } @@ -480,7 +485,7 @@ BYTE WriteControllerPak( const int iControl, LPBYTE Command ) // Switched to memory-mapped file // That way, if the computer dies due to power loss or something mid-play, the savegame is still there. MEMPAK *mPak = (MEMPAK*)g_pcControllers[iControl].pPakData; - + if( dwAddress < 0x8000 ) { CopyMemory( &mPak->aMemPakData[dwAddress], Data, 32 ); @@ -552,7 +557,6 @@ end_rumble: // added so after xinput controller rumbles, gets here --tecnicors Data[32] = DataCRC( Data, 32 ); bReturn = RD_OK; break; - case PAK_TRANSFER: { LPTRANSFERPAK tPak = (LPTRANSFERPAK)g_pcControllers[iControl].pPakData; @@ -563,10 +567,15 @@ end_rumble: // added so after xinput controller rumbles, gets here --tecnicors #ifdef ENABLE_RAWPAK_DEBUG DebugWriteA( " Data: "); - for (int i = 0; i < 32; i++) { - if ((i < 31) && ((i & 7) == 0)) DebugWriteA( "\n " ); + for (int i = 0; i < 32; i++) + { + if ((i < 31) && ((i & 7) == 0)) + { + DebugWriteA( "\n " ); + } DebugWriteByteA( Data[i]); - if (i < 31) { + if (i < 31) + { DebugWriteA( ", " ); } } @@ -577,15 +586,18 @@ end_rumble: // added so after xinput controller rumbles, gets here --tecnicors switch (dwAddress >> 12) { case 0x8: // if ((dwAddress >= 0x8000) && (dwAddress <= 0x8FFF)) - if (Data[0] == 0xFE) { + if (Data[0] == 0xFE) + { DebugWriteA("Cart Disable\n" ); tPak->iEnableState = false; } - else if (Data[0] == 0x84) { + else if (Data[0] == 0x84) + { DebugWriteA("Cart Enable\n" ); tPak->iEnableState = true; } - else { + else + { DebugWriteA("WARNING: Unusual Cart Enable/Disable\n" ); DebugWriteA(" Address: " ); DebugWriteWordA(dwAddress); @@ -596,17 +608,20 @@ end_rumble: // added so after xinput controller rumbles, gets here --tecnicors } break; case 0xA: // if ((dwAddress >= 0xA000) && (dwAddress <= 0xAFFF)) - if (tPak->iEnableState == true) { + if (tPak->iEnableState == true) + { tPak->iCurrentBankNo = Data[0]; DebugWriteA("Set TPak Bank No:%02X\n", Data[0] ); } break; case 0xB: // if ((dwAddress >= 0xB000) && (dwAddress <= 0xBFFF)) - if (tPak->iEnableState == true) { + if (tPak->iEnableState == true) + { tPak->iCurrentAccessMode = Data[0] & 1; tPak->iAccessModeChanged = 4; DebugWriteA("Set TPak Access Mode: %04X\n", tPak->iCurrentAccessMode); - if ((Data[0] != 1) && (Data[0] != 0)) { + if ((Data[0] != 1) && (Data[0] != 0)) + { DebugWriteA("WARNING: Unusual Access Mode Change\n" ); DebugWriteA(" Address: " ); DebugWriteWordA(dwAddress); @@ -634,10 +649,8 @@ end_rumble: // added so after xinput controller rumbles, gets here --tecnicors bReturn = RD_OK; } break; - /*case PAK_VOICE: break;*/ - case PAK_ADAPTOID: if(( dwAddress == PAK_IO_RUMBLE ) && ((ADAPTOIDPAK*)g_pcControllers[iControl].pPakData)->fRumblePak ) { @@ -659,7 +672,6 @@ end_rumble: // added so after xinput controller rumbles, gets here --tecnicors } } break; - /*case PAK_NONE: break;*/ } @@ -700,7 +712,6 @@ void SaveControllerPak( const int iControl ) break; case PAK_ADAPTOID: break; - /*case PAK_NONE: break;*/ } @@ -750,10 +761,8 @@ void CloseControllerPak( const int iControl ) break; case PAK_VOICE: break; - case PAK_ADAPTOID: break; - /*case PAK_NONE: break;*/ } @@ -789,12 +798,10 @@ inline WORD CountBlocks( const unsigned char * bMemPakBinary, LPBYTE aNoteSizes return wRemainingBlocks; } - - void FormatMemPak( LPBYTE aMemPak ) { FillMemory( aMemPak, 0x100, 0xFF ); - + aMemPak[0] = 0x81; // generate a valid code( i hope i can calculate it one day) @@ -825,8 +832,6 @@ void FormatMemPak( LPBYTE aMemPak ) aMemPak[0x30+14] = aMemPak[0x70+14] = aMemPak[0x90+14] = aMemPak[0xD0+14] = aCode[6]; aMemPak[0x30+15] = aMemPak[0x70+15] = aMemPak[0x90+15] = aMemPak[0xD0+15] = aCode[7]; - - // Index ZeroMemory( &aMemPak[0x100], 0x400 ); @@ -834,9 +839,7 @@ void FormatMemPak( LPBYTE aMemPak ) for( int i = 0x00b; i < 0x100; i += 2 ) aMemPak[0x100+i] = aMemPak[0x200+i] = 03; - FillMemory( &aMemPak[0x500], 0x7B00, 0xFF ); - } // Translates a mempak header into a real Unicode string, for display in the Mempaks window @@ -1404,21 +1407,17 @@ bool RemoveNote( LPBYTE aMemPak, const int iNote ) bBlock = aMemPak[iPos]; aMemPak[iPos] = 0x03; } + int i = 0, iSum = 0; for( i = 0x10A; i < 0x200; i++ ) iSum += aMemPak[i]; aMemPak[0x101] = iSum % 256; - CopyMemory( &aMemPak[0x200], &aMemPak[0x100], 0x100 ); - ZeroMemory( &aMemPak[0x300 + iNote*32], 32 ); - return true; } - - BYTE AddressCRC( const unsigned char * Address ) { bool HighBit; @@ -1433,7 +1432,6 @@ BYTE AddressCRC( const unsigned char * Address ) Remainder = (Remainder << 1) & 0x1E; Remainder += ( bBit < 11 && Data & (0x8000 >> bBit )) ? 1 : 0; - Remainder ^= (HighBit) ? 0x15 : 0; bBit++; diff --git a/Source/nragev20/Version.h b/Source/nragev20/Version.h index 9e55cb382..082b821b8 100644 --- a/Source/nragev20/Version.h +++ b/Source/nragev20/Version.h @@ -26,7 +26,7 @@ #define VERSION_MAJOR 2 #define VERSION_MINOR 4 #define VERSION_REVISION 0 -#define VERSION_BUILD 2 +#define VERSION_BUILD 4 #define VER_FILE_DESCRIPTION_STR "N-Rage for Project64" #define VER_FILE_VERSION VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION, VERSION_BUILD diff --git a/Source/nragev20/XInputController.cpp b/Source/nragev20/XInputController.cpp index 64480c2e6..1e2c9daa2 100644 --- a/Source/nragev20/XInputController.cpp +++ b/Source/nragev20/XInputController.cpp @@ -418,7 +418,7 @@ TCHAR * GetN64ButtonFromXInputControl( LPXCONTROLLER gController, int XInputButt N64ButtonCode |= gController->stButtons.iR & XInputButton ? R : 0; N64ButtonCode |= gController->stButtons.iStart & XInputButton ? Start : 0; N64ButtonCode |= gController->stButtons.iZ & XInputButton ? Z : 0; - + return GetN64ButtonNameFromButtonCode( N64ButtonCode ); } diff --git a/Source/nragev20/configs/Controller1.cpf b/Source/nragev20/configs/Controller1.cpf index 2a6024a42..441313e1d 100644 --- a/Source/nragev20/configs/Controller1.cpf +++ b/Source/nragev20/configs/Controller1.cpf @@ -1,6 +1,6 @@ Plugged=1 RawData=1 -PakType=0 +PakType=1 RealN64Range=1 RapidFireEnabled=0 RapidFireRate=3