diff --git a/Data/User/GameConfig/G2ME01.ini b/Data/User/GameConfig/G2ME01.ini index d8807fcf07..0ecd587a67 100644 --- a/Data/User/GameConfig/G2ME01.ini +++ b/Data/User/GameConfig/G2ME01.ini @@ -2,8 +2,7 @@ [EmuState] #The Emulation State. EmulationStateId = 4 -Issues="Scanner does not work, music is buggy, scanner mode is buggy" -EmulationIssues = +EmulationIssues = EFB to RAM is needed for the scanner/visors to work properly. [Speedhacks] 0x803758bc=400 [OnFrame] @@ -131,6 +130,20 @@ $Have Ing Hive Temple Key 2 4241FD80 011B0001 $Have Ing Hive Temple Key 3 4241FD80 011F0001 +$One Hit Kill +0403DB68 4BFC539C +04002F04 FFC00090 +04002F08 7C1BE050 +04002F0C 2C000010 +04002F10 41820008 +04002F14 EFDEF028 +04002F18 4803AC54 +$Full Logbook +0421166C 4BDF18CC +04002F38 3BE000FF +04002F3C 9BE50004 +04002F40 88050004 +04002F44 4820E72C [Video] ProjectionHack = 0 PH_SZNear = 0 diff --git a/Data/User/GameConfig/G2MP01.ini b/Data/User/GameConfig/G2MP01.ini index ca94aac829..c3fb1fdac5 100644 --- a/Data/User/GameConfig/G2MP01.ini +++ b/Data/User/GameConfig/G2MP01.ini @@ -1,15 +1,147 @@ -# G2MP01 - Metroid Prime 2 Echoes[EmuState] +# G2MP01 - Metroid Prime 2 Echoes +[EmuState] #The Emulation State. -EmulationStateId = 2 -Issues="Scanner does not work, music is buggy, scanner mode is buggy" +EmulationStateId = 4 +EmulationIssues = EFB to RAM is needed for the scanner/visors to work properly. [Speedhacks] #Patch OSYieldThread to take more time - MP2's idle loop is really stupid. 0x80375c68=400 [OnFrame] [ActionReplay] -[EmuState] -EmulationStateId = 4 -EmulationIssues = needs safe texture cache and EFB to Ram +$(M) +C43552C8 0000FF01 +C436F41C 0000FF02 +0D30294C 4E800020 +C530294C 0000FF03 +$Infinite Health +423DDE0C 000A44BB +423DDE0C 000B6000 +$Max Energy Tanks +423DDE0C 012B000E +423DDE0C 012D000E +$Maximum Missiles +423DDE0C 013900FA +$Infinite Missiles +423DDE0C 013700FA +$Moon Jump (Hold B) +3A705F24 00000200 +423DDDFC 00D84101 +$Have Charge Beam +423DDE0C 00310001 +423DDE0C 00330001 +$Have Dark Beam +423DDE0C 00370001 +423DDE0C 00390001 +$Have Light Beam +423DDE0C 003D0001 +423DDE0C 003F0001 +$Have Annihilator +423DDE0C 00430001 +423DDE0C 00450001 +$Have Super Missile +423DDE0C 00470001 +423DDE0C 00490001 +$Have Darkburst +423DDE0C 004D0001 +423DDE0C 004F0001 +$Have Sunburst +423DDE0C 00530001 +423DDE0C 00550001 +$Have Sonic Boom +423DDE0C 00590001 +423DDE0C 005B0001 +$Have Combat Visor +423DDE0C 005F0001 +423DDE0C 00610001 +$Have Scan Visor +423DDE0C 00650001 +423DDE0C 00670001 +$Have Dark Visor +423DDE0C 006B0001 +423DDE0C 006D0001 +$Have Echo Visor +423DDE0C 00710001 +423DDE0C 00730001 +$Have Varia Suit +423DDE0C 00770001 +423DDE0C 00790001 +$Have Dark Suit +423DDE0C 007D0001 +423DDE0C 007F0001 +$Have Light Suit +423DDE0C 00830001 +423DDE0C 00850001 +$Have Space Jump Boots +423DDE0C 00BF0001 +423DDE0C 00C10001 +$Have Grapple Beam +423DDE0C 00B90001 +423DDE0C 00BB0001 +$Have Gravity Boost +423DDE0C 00C50001 +423DDE0C 00C70001 +$Have Screw Attack +423DDE0C 00D10001 +423DDE0C 00D30001 +$Have Seeker Missile +423DDE0C 00CB0001 +423DDE0C 00CD0001 +$Have Morph Ball Power Bomb +423DDE0C 01310001 +423DDE0C 01330001 +$Have Beam Ammo Expansion +423DDE0C 013D000F +423DDE0C 013F000F +$Have Sky Temple Key 1 +423DDE0C 00DD0001 +423DDE0C 00DF0001 +$Have Sky Temple Key 2 +423DDE0C 00E30001 +423DDE0C 00E50001 +$Have Sky Temple Key 3 +423DDE0C 00E90001 +423DDE0C 00EB0001 +$Have Agon Temple Key 1 +423DDE0C 00EF0001 +423DDE0C 00F10001 +$Have Agon Temple Key 2 +423DDE0C 00F50001 +423DDE0C 00F70001 +$Have Agon Temple Key 3 +423DDE0C 00FB0001 +423DDE0C 00FD0001 +$Have Torvus Temple Key 1 +423DDE0C 01010001 +423DDE0C 01030001 +$Have Torvus Temple Key 2 +423DDE0C 01070001 +423DDE0C 01090001 +$Have Torvus Temple Key 3 +423DDE0C 010D0001 +423DDE0C 010F0001 +$Have Ing Hive Temple Key 1 +423DDE0C 01130001 +423DDE0C 01150001 +$Have Ing Hive Temple Key 2 +423DDE0C 01190001 +423DDE0C 011B0001 +$Have Ing Hive Temple Key 3 +423DDE0C 011F0001 +423DDE0C 01210001 +$One Hit Kill +0403DCB8 4BFC524C +04002F04 FFC00090 +04002F08 7C1BE050 +04002F0C 2C000010 +04002F10 41820008 +04002F14 EFDEF028 +04002F18 4803ADA4 +$Full Logbook +04211974 4BDF15C4 +04002F38 3BE000FF +04002F3C 9BE50004 +04002F40 88050004 +04002F44 4820EA34 [Video] ProjectionHack = 0 PH_SZNear = 0 diff --git a/Data/User/GameConfig/G2XE8P.ini b/Data/User/GameConfig/G2XE8P.ini index 9f5533b5f2..be2e404a17 100644 --- a/Data/User/GameConfig/G2XE8P.ini +++ b/Data/User/GameConfig/G2XE8P.ini @@ -1,8 +1,9 @@ # G2XE8P - SONIC GEMS COLLECTION [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = Everything playable with minor glitches, except Sonic the Fighters. +EmulationIssues = Everything playable with minor glitches. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] @@ -13,3 +14,8 @@ PH_ExtraParam = 0 PH_ZNear = PH_ZFar = [Gecko] +[Video_Settings] +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/G2XP8P.ini b/Data/User/GameConfig/G2XP8P.ini index 820688756d..091b1b318a 100644 --- a/Data/User/GameConfig/G2XP8P.ini +++ b/Data/User/GameConfig/G2XP8P.ini @@ -1,8 +1,9 @@ # G2XP8P - SONIC GEMS COLLECTION [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = Everything playable with minor glitches, except Sonic the Fighters. +EmulationIssues = Everything playable with minor glitches. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] @@ -13,3 +14,8 @@ PH_ExtraParam = 0 PH_ZNear = PH_ZFar = [Gecko] +[Video_Settings] +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/GAVP78.ini b/Data/User/GameConfig/GAVP78.ini new file mode 100644 index 0000000000..97b105e31f --- /dev/null +++ b/Data/User/GameConfig/GAVP78.ini @@ -0,0 +1,19 @@ +# GAVP78 - Avatar: The Legend of Aang +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 3 +EmulationIssues = +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 diff --git a/Data/User/GameConfig/GAVY78.ini b/Data/User/GameConfig/GAVY78.ini new file mode 100644 index 0000000000..fe7c2c8ce7 --- /dev/null +++ b/Data/User/GameConfig/GAVY78.ini @@ -0,0 +1,19 @@ +# GAVE78 - Avatar: The Legend of Aang +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 3 +EmulationIssues = +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 diff --git a/Data/User/GameConfig/GBWD64.ini b/Data/User/GameConfig/GBWD64.ini new file mode 100644 index 0000000000..993175d5c9 --- /dev/null +++ b/Data/User/GameConfig/GBWD64.ini @@ -0,0 +1,19 @@ +# GBWD64 - Star Wars Bounty Hunter +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GBWE64.ini b/Data/User/GameConfig/GBWE64.ini index 4ee318e208..914770f161 100644 --- a/Data/User/GameConfig/GBWE64.ini +++ b/Data/User/GameConfig/GBWE64.ini @@ -2,11 +2,18 @@ [Core] Values set here will override the main dolphin settings. TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationStateId = 0 -EmulationIssues = +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = [Gecko] - +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GBWF64.ini b/Data/User/GameConfig/GBWF64.ini new file mode 100644 index 0000000000..40e3ed43af --- /dev/null +++ b/Data/User/GameConfig/GBWF64.ini @@ -0,0 +1,19 @@ +# GBWF64 - Star Wars Bounty Hunter +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GBWP64.ini b/Data/User/GameConfig/GBWP64.ini new file mode 100644 index 0000000000..671a618a66 --- /dev/null +++ b/Data/User/GameConfig/GBWP64.ini @@ -0,0 +1,19 @@ +# GBWP64 - Star Wars Bounty Hunter +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GEAE8P.ini b/Data/User/GameConfig/GEAE8P.ini index c032bc3e73..9b6bdd2f3a 100644 --- a/Data/User/GameConfig/GEAE8P.ini +++ b/Data/User/GameConfig/GEAE8P.ini @@ -2,7 +2,7 @@ [Core] Values set here will override the main dolphin settings. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = +EmulationIssues = LLE audio is needed to fix sound issues. Gfx glitches. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] @@ -16,4 +16,3 @@ PH_ZFar = 1.99998 [Video_Settings] SafeTextureCache = True SafeTextureCacheColorSamples = 512 - diff --git a/Data/User/GameConfig/GEAP8P.ini b/Data/User/GameConfig/GEAP8P.ini index ff88026d45..2d7aef6141 100644 --- a/Data/User/GameConfig/GEAP8P.ini +++ b/Data/User/GameConfig/GEAP8P.ini @@ -2,7 +2,7 @@ [Core] Values set here will override the main dolphin settings. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = +EmulationIssues = LLE audio is needed to fix sound issues. Gfx glitches. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] @@ -15,3 +15,4 @@ PH_ZFar = 1.99998 [Gecko] [Video_Settings] SafeTextureCache = True +SafeTextureCacheColorSamples = 512 diff --git a/Data/User/GameConfig/GEND69.ini b/Data/User/GameConfig/GEND69.ini new file mode 100644 index 0000000000..43cb8e86e1 --- /dev/null +++ b/Data/User/GameConfig/GEND69.ini @@ -0,0 +1,16 @@ +# GEND69 - 007: Everything or Nothing +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationIssues = Needs LLE audio for proper sound. +EmulationStateId = 4 +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GENE69.ini b/Data/User/GameConfig/GENE69.ini index b30dad3b14..6307e0268f 100644 --- a/Data/User/GameConfig/GENE69.ini +++ b/Data/User/GameConfig/GENE69.ini @@ -2,11 +2,15 @@ [Core] Values set here will override the main dolphin settings. TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationIssues = Missing Textures,3D Models Broken cutscenes -EmulationStateId = 2 +EmulationIssues = Needs LLE audio for proper sound. +EmulationStateId = 4 [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = [Gecko] - diff --git a/Data/User/GameConfig/GENP69.ini b/Data/User/GameConfig/GENP69.ini new file mode 100644 index 0000000000..be23957d70 --- /dev/null +++ b/Data/User/GameConfig/GENP69.ini @@ -0,0 +1,16 @@ +# GENP69 - 007: Everything or Nothing +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationIssues = Needs LLE audio for proper sound. +EmulationStateId = 4 +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GENS69.ini b/Data/User/GameConfig/GENS69.ini index 8f89df5ec1..c0645ed29a 100644 --- a/Data/User/GameConfig/GENS69.ini +++ b/Data/User/GameConfig/GENS69.ini @@ -2,10 +2,15 @@ [Core] Values set here will override the main dolphin settings. TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationIssues = Missing Textures,3D Models Broken cutscenes -EmulationStateId = 2 +EmulationIssues = Needs LLE audio for proper sound. +EmulationStateId = 4 [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = [Gecko] diff --git a/Data/User/GameConfig/GG5E52.ini b/Data/User/GameConfig/GG5E52.ini index b6807f49e9..32174bc73d 100644 --- a/Data/User/GameConfig/GG5E52.ini +++ b/Data/User/GameConfig/GG5E52.ini @@ -1,7 +1,16 @@ # GG5E52 - Cabela's(R) BGH 2005 Adv. [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationIssues = Black screen -EmulationStateId = 1 +EmulationIssues = Needs Jitil to run. LLE audio fixes sound issues. +EmulationStateId = 4 [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GJBE5G.ini b/Data/User/GameConfig/GJBE5G.ini index 680342055a..25b06784f0 100644 --- a/Data/User/GameConfig/GJBE5G.ini +++ b/Data/User/GameConfig/GJBE5G.ini @@ -1,7 +1,20 @@ # GJBE5G - Bomberman Jetters [Core] Values set here will override the main dolphin settings. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationStateId = 1 -Issues="Does Nothing" +EmulationStateId = 3 +EmulationIssues = Use D3D9 for less problems. Videos need Real XFB to show up. Graphic glitches / unstable during videos. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 1 +PH_SZNear = 1 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = 0.1 +[Gecko] +[Video_Settings] +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GJZE52.ini b/Data/User/GameConfig/GJZE52.ini new file mode 100644 index 0000000000..b37df81b13 --- /dev/null +++ b/Data/User/GameConfig/GJZE52.ini @@ -0,0 +1,16 @@ +# GJZE52 - Shamu's Deep Sea Adventures +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Needs Jitil to run. LLE audio fixes some sound issues. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GM6EE9.ini b/Data/User/GameConfig/GM6EE9.ini index 37fa68e57c..e0554fbf76 100644 --- a/Data/User/GameConfig/GM6EE9.ini +++ b/Data/User/GameConfig/GM6EE9.ini @@ -1,8 +1,9 @@ # GM6EE9 - Medabots Infinity 4th Submission [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = Use LLE plugin for proper ingame sound.(r7483). +EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] diff --git a/Data/User/GameConfig/GM6PE9.ini b/Data/User/GameConfig/GM6PE9.ini index 2a8664ebbb..44849b73fb 100644 --- a/Data/User/GameConfig/GM6PE9.ini +++ b/Data/User/GameConfig/GM6PE9.ini @@ -1,8 +1,9 @@ # GM6PE9 - Medabots Infinity 4th Submission [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = Use LLE plugin for proper ingame sound.(r7483). +EmulationIssues = Use LLE plugin for proper ingame sound. MMU speed hack is needed for balloon bombs or the game crashes. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] diff --git a/Data/User/GameConfig/GOAE52.ini b/Data/User/GameConfig/GOAE52.ini new file mode 100644 index 0000000000..8a3da2eb71 --- /dev/null +++ b/Data/User/GameConfig/GOAE52.ini @@ -0,0 +1,16 @@ +# GOAE52 - Cabela's Outdoor Adventures +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Needs Jitil to run. LLE audio fixes sound issues. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GOSE41.ini b/Data/User/GameConfig/GOSE41.ini new file mode 100644 index 0000000000..4682f2275c --- /dev/null +++ b/Data/User/GameConfig/GOSE41.ini @@ -0,0 +1,16 @@ +# GOSE41 - Open Season +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 2 +EmulationIssues = Severe graphic issues. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GOSP41.ini b/Data/User/GameConfig/GOSP41.ini new file mode 100644 index 0000000000..40fc6ad1f1 --- /dev/null +++ b/Data/User/GameConfig/GOSP41.ini @@ -0,0 +1,16 @@ +# GOSP41 - Open Season +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 2 +EmulationIssues = Severe graphic issues. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GOSX41.ini b/Data/User/GameConfig/GOSX41.ini new file mode 100644 index 0000000000..92662f0a4c --- /dev/null +++ b/Data/User/GameConfig/GOSX41.ini @@ -0,0 +1,16 @@ +# GOSX41 - Open Season +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 2 +EmulationIssues = Severe graphic issues. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GP6E01.ini b/Data/User/GameConfig/GP6E01.ini index 3663c09d52..69596e46ce 100644 --- a/Data/User/GameConfig/GP6E01.ini +++ b/Data/User/GameConfig/GP6E01.ini @@ -2,5 +2,17 @@ [Core] Values set here will override the main dolphin settings. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 +EmulationIssues = Mini games tour bus needs emulate format changes to preview the mini games. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Hacks] +EFBEmulateFormatChanges = True + diff --git a/Data/User/GameConfig/GP6J01.ini b/Data/User/GameConfig/GP6J01.ini new file mode 100644 index 0000000000..d7b9ff310f --- /dev/null +++ b/Data/User/GameConfig/GP6J01.ini @@ -0,0 +1,17 @@ +# GP6J01 - Mario Party 6 +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Mini games tour bus needs emulate format changes to preview the mini games. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Hacks] +EFBEmulateFormatChanges = True diff --git a/Data/User/GameConfig/GP6P01.ini b/Data/User/GameConfig/GP6P01.ini index 1657242141..fbc068ca72 100644 --- a/Data/User/GameConfig/GP6P01.ini +++ b/Data/User/GameConfig/GP6P01.ini @@ -1,11 +1,19 @@ # GP6P01 - Mario Party 6 -[Core] -#Values set here will override the main dolphin settings. -[EmuState] -#The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationStateId = 0 -Issues="uses the mic attachment" -[OnLoad] -#Add memory patches to be loaded once on boot here. -[OnFrame] -[ActionReplay] +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Mini games tour bus needs emulate format changes to preview the mini games. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Hacks] +EFBEmulateFormatChanges = True + + diff --git a/Data/User/GameConfig/GPKE41.ini b/Data/User/GameConfig/GPKE41.ini index 7fe27f49a4..282217dc84 100644 --- a/Data/User/GameConfig/GPKE41.ini +++ b/Data/User/GameConfig/GPKE41.ini @@ -2,6 +2,17 @@ [Core] Values set here will override the main dolphin settings. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = Videos Not seen +EmulationIssues = Needs Real Xfb for videos to display. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GQSDAF.ini b/Data/User/GameConfig/GQSDAF.ini index b2ca3063f2..650f6ffd2a 100644 --- a/Data/User/GameConfig/GQSDAF.ini +++ b/Data/User/GameConfig/GQSDAF.ini @@ -17,4 +17,7 @@ PH_ZNear = 0.5 PH_ZFar = 1 [Gecko] [Video_Settings] -SafeTextureCache = True \ No newline at end of file +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/GQSEAF.ini b/Data/User/GameConfig/GQSEAF.ini index c190a0f463..7cb18083db 100644 --- a/Data/User/GameConfig/GQSEAF.ini +++ b/Data/User/GameConfig/GQSEAF.ini @@ -561,7 +561,7 @@ $COLETTE Super Quick Level Up 045B6CA8 0098967F $COLETTE Have All Titles 05A0DBC7 08000000 -045B6CB0 FFFFFFFF +045B6CB0 08000000 $GENIS Full HP 05A0DBC9 08000000 025B6DBA 0000270F @@ -609,7 +609,7 @@ $RAINE Super Quick Level Up 045B6ED8 0098967F $RAINE Have All Titles 05A0DBD9 08000000 -045B6EE0 FFFFFFFF +045B6EE0 08000000 $KRATOS Full HP 05A0DBDB 08000000 025B744A 0000270F @@ -657,7 +657,7 @@ $SHEENA Super Quick Level Up 045B6FF0 0098967F $SHEENA Have All Titles 05A0DC18 08000000 -045B6FF8 FFFFFFFF +045B6FF8 08000000 $ZELOS Full HP 05A0DC1A 08000000 025B7102 0000270F @@ -681,7 +681,7 @@ $ZELOS Super Quick Level Up 045B7108 0098967F $ZELOS Have All Titles 05A0DC21 08000000 -045B7110 FFFFFFFF +045B7110 08000000 $PRESEA Full HP 05A0DC23 08000000 025B721A 0000270F @@ -705,7 +705,7 @@ $PRESEA Super Quick Level Up 045B7220 0098967F $PRESEA Have All Titles 05A0DC2A 08000000 -045B7228 FFFFFFFF +045B7228 08000000 $Equipment Modifier-Lloyd - READ INSTRUCTIONS 025B6BC2 0000009B 045B6BC4 0122014A @@ -789,5 +789,6 @@ PH_ZFar = 1 [Video_Settings] SafeTextureCache = True SafeTextureCacheColorSamples = 512 -[Video_Enhancements] -PostProcessingShader = +[Video_Hacks] +DlistCachingEnable = False + diff --git a/Data/User/GameConfig/GQSFAF.ini b/Data/User/GameConfig/GQSFAF.ini index 901cba8f92..3395be24bb 100644 --- a/Data/User/GameConfig/GQSFAF.ini +++ b/Data/User/GameConfig/GQSFAF.ini @@ -17,4 +17,7 @@ PH_ZNear = 0.5 PH_ZFar = 1 [Gecko] [Video_Settings] -SafeTextureCache = True \ No newline at end of file +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/GQSPAF.ini b/Data/User/GameConfig/GQSPAF.ini index df727db8b2..e6ddfab0a8 100644 --- a/Data/User/GameConfig/GQSPAF.ini +++ b/Data/User/GameConfig/GQSPAF.ini @@ -17,4 +17,7 @@ PH_ZNear = 0.5 PH_ZFar = 1 [Gecko] [Video_Settings] -SafeTextureCache = True \ No newline at end of file +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/GRUE78.ini b/Data/User/GameConfig/GRUE78.ini index 53b240f6b0..3b0bb35f75 100644 --- a/Data/User/GameConfig/GRUE78.ini +++ b/Data/User/GameConfig/GRUE78.ini @@ -1,7 +1,8 @@ # GRUE78 - Power Rangers Dino Thunder [Core] Values set here will override the main dolphin settings. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationIssues = +EmulationIssues = Needs LLE audio for proper sound and Real XFB to display videos. +EmulationStateId = 4 [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. $(M) @@ -16,3 +17,14 @@ $Max Turbo Charges 00318047 00000063 $Infinite Health 04069830 38000004 +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GT3D52.ini b/Data/User/GameConfig/GT3D52.ini new file mode 100644 index 0000000000..f50771d9b3 --- /dev/null +++ b/Data/User/GameConfig/GT3D52.ini @@ -0,0 +1,18 @@ +# GT3D52 - Tony Hawk's Pro Skater 3 +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Neads real xfb for videos to display. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GT3E52.ini b/Data/User/GameConfig/GT3E52.ini new file mode 100644 index 0000000000..dbfe35663e --- /dev/null +++ b/Data/User/GameConfig/GT3E52.ini @@ -0,0 +1,18 @@ +# GT3E52 - Tony Hawk's Pro Skater 3 +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Neads real xfb for videos to display. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GT3F52.ini b/Data/User/GameConfig/GT3F52.ini new file mode 100644 index 0000000000..24d932371a --- /dev/null +++ b/Data/User/GameConfig/GT3F52.ini @@ -0,0 +1,18 @@ +# GT3F52 - Tony Hawk's Pro Skater 3 +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Neads real xfb for videos to display. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GT3P52.ini b/Data/User/GameConfig/GT3P52.ini new file mode 100644 index 0000000000..aa644f6659 --- /dev/null +++ b/Data/User/GameConfig/GT3P52.ini @@ -0,0 +1,18 @@ +# GT3P52 - Tony Hawk's Pro Skater 3 +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Neads real xfb for videos to display. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GTYE69.ini b/Data/User/GameConfig/GTYE69.ini new file mode 100644 index 0000000000..268b84cb93 --- /dev/null +++ b/Data/User/GameConfig/GTYE69.ini @@ -0,0 +1,15 @@ +# GTYE69 - TY the Tasmanian Tiger +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GTYP69.ini b/Data/User/GameConfig/GTYP69.ini new file mode 100644 index 0000000000..91ee039579 --- /dev/null +++ b/Data/User/GameConfig/GTYP69.ini @@ -0,0 +1,15 @@ +# GTYP69 - TY the Tasmanian Tiger +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] diff --git a/Data/User/GameConfig/GVCE08.ini b/Data/User/GameConfig/GVCE08.ini new file mode 100644 index 0000000000..4f7ece130f --- /dev/null +++ b/Data/User/GameConfig/GVCE08.ini @@ -0,0 +1,18 @@ +# GVCE08 - Viewtiful Joe Red Hot Rumble +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GVCP08.ini b/Data/User/GameConfig/GVCP08.ini index fb766c6e32..3b98757de5 100644 --- a/Data/User/GameConfig/GVCP08.ini +++ b/Data/User/GameConfig/GVCP08.ini @@ -2,8 +2,17 @@ [Core] Values set here will override the main dolphin settings. [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 -EmulationIssues = Intro (and likely other) video blacked out. +EmulationIssues = Needs real xfb for videos to show up. [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] -ProjectionHack = 0 \ No newline at end of file +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Settings] +UseXFB = True +UseRealXFB = True diff --git a/Data/User/GameConfig/GVJE08.ini b/Data/User/GameConfig/GVJE08.ini index eca3a4cf5a..58c49806bc 100644 --- a/Data/User/GameConfig/GVJE08.ini +++ b/Data/User/GameConfig/GVJE08.ini @@ -1,7 +1,7 @@ # GVJE08 - VIEWTIFUL JOE [EmuState] -EmulationStateId = 0 -EmulationIssues = +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. [OnFrame] [ActionReplay] [Gecko] @@ -15,4 +15,3 @@ PH_ZFar = [Video_Settings] UseXFB = True UseRealXFB = True - diff --git a/Data/User/GameConfig/GVJJ08.ini b/Data/User/GameConfig/GVJJ08.ini index bacabfab6d..da0a34a4bd 100644 --- a/Data/User/GameConfig/GVJJ08.ini +++ b/Data/User/GameConfig/GVJJ08.ini @@ -1,7 +1,7 @@ # GVJJ08 - VIEWTIFUL JOE [EmuState] -EmulationStateId = 0 -EmulationIssues = +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. [OnFrame] [ActionReplay] [Gecko] diff --git a/Data/User/GameConfig/GVJP08.ini b/Data/User/GameConfig/GVJP08.ini index 6f749f2947..c159fac154 100644 --- a/Data/User/GameConfig/GVJP08.ini +++ b/Data/User/GameConfig/GVJP08.ini @@ -1,7 +1,7 @@ # GVJP08 - VIEWTIFUL JOE [EmuState] -EmulationStateId = 0 -EmulationIssues = +EmulationStateId = 4 +EmulationIssues = Needs real xfb for videos to show up. [OnFrame] [ActionReplay] [Gecko] diff --git a/Data/User/GameConfig/RCJE8P.ini b/Data/User/GameConfig/RCJE8P.ini index bb7568cc0a..845f08de77 100644 --- a/Data/User/GameConfig/RCJE8P.ini +++ b/Data/User/GameConfig/RCJE8P.ini @@ -23,4 +23,7 @@ PH_ZFar = [Gecko] [Video_Enhancements] ForceFiltering = False - +[Wii] +DisableWiimoteSpeaker = 1 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/RCJP8P.ini b/Data/User/GameConfig/RCJP8P.ini index b64f4ad713..6d82c897e5 100644 --- a/Data/User/GameConfig/RCJP8P.ini +++ b/Data/User/GameConfig/RCJP8P.ini @@ -1,8 +1,9 @@ # RCJP8P - The Conduit [Core] Values set here will override the main dolphin settings. +BlockMerging = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. -EmulationIssues = random crashes -EmulationStateId = 2 +EmulationIssues = +EmulationStateId = 4 [OnFrame] Add memory patches to be applied every frame here. [ActionReplay] Add action replay cheats here. [Video] @@ -15,4 +16,8 @@ PH_ZNear = PH_ZFar = [Gecko] [Video_Enhancements] -ForceFiltering = False \ No newline at end of file +ForceFiltering = False +[Wii] +DisableWiimoteSpeaker = 1 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/RM3E01.ini b/Data/User/GameConfig/RM3E01.ini index 5ef96b0d77..cee3c4e962 100644 --- a/Data/User/GameConfig/RM3E01.ini +++ b/Data/User/GameConfig/RM3E01.ini @@ -21,5 +21,7 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] EFBToTextureEnable = False EFBCopyEnable = True -[Video_Enhancements] -PostProcessingShader = +[Wii] +DisableWiimoteSpeaker = 1 +[Video_Hacks] +EFBEmulateFormatChanges = True diff --git a/Data/User/GameConfig/RM3J01.ini b/Data/User/GameConfig/RM3J01.ini index f27e1e111d..3a3292be12 100644 --- a/Data/User/GameConfig/RM3J01.ini +++ b/Data/User/GameConfig/RM3J01.ini @@ -21,5 +21,7 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] EFBToTextureEnable = False EFBCopyEnable = True -[Video_Enhancements] -PostProcessingShader = +[Wii] +DisableWiimoteSpeaker = 1 +[Video_Hacks] +EFBEmulateFormatChanges = True diff --git a/Data/User/GameConfig/RM3P01.ini b/Data/User/GameConfig/RM3P01.ini index 42dc04ed9d..18164dc78a 100644 --- a/Data/User/GameConfig/RM3P01.ini +++ b/Data/User/GameConfig/RM3P01.ini @@ -23,3 +23,7 @@ SafeTextureCacheColorSamples = 512 [Video_Hacks] EFBToTextureEnable = False EFBCopyEnable = True +[Wii] +DisableWiimoteSpeaker = 1 +[Video_Hacks] +EFBEmulateFormatChanges = True diff --git a/Data/User/GameConfig/RWSE8P.ini b/Data/User/GameConfig/RWSE8P.ini index b745ea0226..b8f2398dfa 100644 --- a/Data/User/GameConfig/RWSE8P.ini +++ b/Data/User/GameConfig/RWSE8P.ini @@ -1,5 +1,6 @@ # RWSE8P - MARIO & SONIC At The OlympicGames [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 EmulationIssues = Needs emulating format changes (r6871) @@ -15,4 +16,3 @@ PH_ZFar = [Gecko] [Video_Hacks] EFBEmulateFormatChanges = True - diff --git a/Data/User/GameConfig/RWSJ01.ini b/Data/User/GameConfig/RWSJ01.ini index 9599041d62..ad32d2e869 100644 --- a/Data/User/GameConfig/RWSJ01.ini +++ b/Data/User/GameConfig/RWSJ01.ini @@ -1,5 +1,6 @@ # RWSJ01 - MARIO & SONIC At The OlympicGames [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 EmulationIssues = Needs emulating format changes (r6871) @@ -7,6 +8,11 @@ EmulationIssues = Needs emulating format changes (r6871) [ActionReplay] Add action replay cheats here. [Video] ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = [Gecko] [Video_Hacks] -EFBEmulateFormatChanges = True \ No newline at end of file +EFBEmulateFormatChanges = True diff --git a/Data/User/GameConfig/RWSK01.ini b/Data/User/GameConfig/RWSK01.ini index 2d3b334a44..818bb671b0 100644 --- a/Data/User/GameConfig/RWSK01.ini +++ b/Data/User/GameConfig/RWSK01.ini @@ -1,5 +1,6 @@ # RWSK01 - MARIO & SONIC At The OlympicGames [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 EmulationIssues = Needs emulating format changes (r6871) @@ -7,6 +8,11 @@ EmulationIssues = Needs emulating format changes (r6871) [ActionReplay] Add action replay cheats here. [Video] ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = [Gecko] [Video_Hacks] -EFBEmulateFormatChanges = True \ No newline at end of file +EFBEmulateFormatChanges = True diff --git a/Data/User/GameConfig/RWSP8P.ini b/Data/User/GameConfig/RWSP8P.ini index 041c227b97..6793b10d3a 100644 --- a/Data/User/GameConfig/RWSP8P.ini +++ b/Data/User/GameConfig/RWSP8P.ini @@ -1,5 +1,6 @@ # RWSP8P - MARIO & SONIC At The OlympicGames [Core] Values set here will override the main dolphin settings. +TLBHack = 1 [EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. EmulationStateId = 4 EmulationIssues = Needs emulating format changes (r6871) @@ -7,6 +8,11 @@ EmulationIssues = Needs emulating format changes (r6871) [ActionReplay] Add action replay cheats here. [Video] ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = [Gecko] [Video_Hacks] -EFBEmulateFormatChanges = True \ No newline at end of file +EFBEmulateFormatChanges = True diff --git a/Data/User/GameConfig/SC2E8P.ini b/Data/User/GameConfig/SC2E8P.ini index 61746b7162..ff46b91be8 100644 --- a/Data/User/GameConfig/SC2E8P.ini +++ b/Data/User/GameConfig/SC2E8P.ini @@ -16,4 +16,6 @@ EmulationIssues = [Gecko] [Video_Hacks] DlistCachingEnable = False -[Video_Settings] \ No newline at end of file +[Video_Settings] +[Wii] +DisableWiimoteSpeaker = 1 diff --git a/Data/User/GameConfig/SC2P8P.ini b/Data/User/GameConfig/SC2P8P.ini index 5ddb0fe59e..a065f8a096 100644 --- a/Data/User/GameConfig/SC2P8P.ini +++ b/Data/User/GameConfig/SC2P8P.ini @@ -66,4 +66,5 @@ $Profile Three Name Changer Jedi Hack & [Mitch] [Video_Hacks] DlistCachingEnable = False [Video_Settings] - +[Wii] +DisableWiimoteSpeaker = 1 diff --git a/Data/User/GameConfig/SC7D52.ini b/Data/User/GameConfig/SC7D52.ini index ab8c361ab2..07aac1180a 100644 --- a/Data/User/GameConfig/SC7D52.ini +++ b/Data/User/GameConfig/SC7D52.ini @@ -9,7 +9,7 @@ PH_ExtraParam = 0 PH_ZNear = 0. 01 PH_ZFar = [EmuState] -EmulationStateId = 0 +EmulationStateId = 4 EmulationIssues = [OnFrame] [ActionReplay] diff --git a/Data/User/GameConfig/SC7E52.ini b/Data/User/GameConfig/SC7E52.ini index fa15a58e5f..17e7dbf3e1 100644 --- a/Data/User/GameConfig/SC7E52.ini +++ b/Data/User/GameConfig/SC7E52.ini @@ -9,7 +9,7 @@ PH_ExtraParam = 0 PH_ZNear = 0. 01 PH_ZFar = [EmuState] -EmulationStateId = 0 +EmulationStateId = 4 EmulationIssues = [OnFrame] [ActionReplay] diff --git a/Data/User/GameConfig/SC7F52.ini b/Data/User/GameConfig/SC7F52.ini index 6a90a7ba0c..efa2e74bd4 100644 --- a/Data/User/GameConfig/SC7F52.ini +++ b/Data/User/GameConfig/SC7F52.ini @@ -9,7 +9,7 @@ PH_ExtraParam = 0 PH_ZNear = 0. 01 PH_ZFar = [EmuState] -EmulationStateId = 0 +EmulationStateId = 4 EmulationIssues = [OnFrame] [ActionReplay] diff --git a/Data/User/GameConfig/SC7I52.ini b/Data/User/GameConfig/SC7I52.ini index 18e1853d3e..804a02a547 100644 --- a/Data/User/GameConfig/SC7I52.ini +++ b/Data/User/GameConfig/SC7I52.ini @@ -9,7 +9,7 @@ PH_ExtraParam = 0 PH_ZNear = 0. 01 PH_ZFar = [EmuState] -EmulationStateId = 0 +EmulationStateId = 4 EmulationIssues = [OnFrame] [ActionReplay] diff --git a/Data/User/GameConfig/SC7P52.ini b/Data/User/GameConfig/SC7P52.ini index 160cbd1b27..95e09c5053 100644 --- a/Data/User/GameConfig/SC7P52.ini +++ b/Data/User/GameConfig/SC7P52.ini @@ -9,7 +9,7 @@ PH_ExtraParam = 0 PH_ZNear = 0. 01 PH_ZFar = [EmuState] -EmulationStateId = 0 +EmulationStateId = 4 EmulationIssues = [OnFrame] [ActionReplay] diff --git a/Data/User/GameConfig/SC7S52.ini b/Data/User/GameConfig/SC7S52.ini index fa15a58e5f..76f6efb914 100644 --- a/Data/User/GameConfig/SC7S52.ini +++ b/Data/User/GameConfig/SC7S52.ini @@ -1,4 +1,4 @@ -# SC7E52 - Call of Duty: Black Ops +# SC7S52 - Call of Duty: Black Ops [Video_Enhancements] MaxAnisotropy = 0 [Video] @@ -9,7 +9,7 @@ PH_ExtraParam = 0 PH_ZNear = 0. 01 PH_ZFar = [EmuState] -EmulationStateId = 0 +EmulationStateId = 4 EmulationIssues = [OnFrame] [ActionReplay] diff --git a/Data/User/GameConfig/SD2J01.ini b/Data/User/GameConfig/SD2J01.ini new file mode 100644 index 0000000000..a5d922d877 --- /dev/null +++ b/Data/User/GameConfig/SD2J01.ini @@ -0,0 +1,21 @@ +# SD2J01 - Just Dance 2 +[Video_Settings] +SafeTextureCache = True +SafeTextureCacheColorSamples = 512 +[Video_Enhancements] +MaxAnisotropy = 0 +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[EmuState] +EmulationStateId = 4 +EmulationIssues = +[OnFrame] +[ActionReplay] +[Gecko] +[Wii] +DisableWiimoteSpeaker = 1 \ No newline at end of file diff --git a/Data/User/GameConfig/SH6E52.ini b/Data/User/GameConfig/SH6E52.ini new file mode 100644 index 0000000000..286d4c8a8a --- /dev/null +++ b/Data/User/GameConfig/SH6E52.ini @@ -0,0 +1,20 @@ +# SH6E52 - Cabela's Big Game Hunter 2012 +[Core] Values set here will override the main dolphin settings. +TLBHack = 1 +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = MMU hack is needed or the game crashes during loading. EFB to RAM prevents glitches. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Video_Hacks] +EFBToTextureEnable = False +EFBCopyEnable = True +EFBCopyCacheEnable = True diff --git a/Data/User/GameConfig/SPDE52.ini b/Data/User/GameConfig/SPDE52.ini new file mode 100644 index 0000000000..e9698d8952 --- /dev/null +++ b/Data/User/GameConfig/SPDE52.ini @@ -0,0 +1,20 @@ +# SPDE52 - Spider-Man™: SD +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 3 +EmulationIssues = Needs LLE audio for sound ingame. Graphic glitches. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 1 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = 0.7 +[Gecko] +[Video_Hacks] +EFBToTextureEnable = False +EFBCopyEnable = True +[Video_Enhancements] +MaxAnisotropy = 0 diff --git a/Data/User/GameConfig/SPDP52.ini b/Data/User/GameConfig/SPDP52.ini new file mode 100644 index 0000000000..0a19aeb06b --- /dev/null +++ b/Data/User/GameConfig/SPDP52.ini @@ -0,0 +1,20 @@ +# SPDP52 - Spider-Man™: SD +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 3 +EmulationIssues = Needs LLE audio for sound ingame. Graphic glitches. +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 1 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = 0.7 +[Gecko] +[Video_Hacks] +EFBToTextureEnable = False +EFBCopyEnable = True +[Video_Enhancements] +MaxAnisotropy = 0 diff --git a/Data/User/GameConfig/SRQE41.ini b/Data/User/GameConfig/SRQE41.ini new file mode 100644 index 0000000000..5060189327 --- /dev/null +++ b/Data/User/GameConfig/SRQE41.ini @@ -0,0 +1,19 @@ +# SRQE41 - Racquet Sports +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Wii] +DisableWiimoteSpeaker = 1 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Data/User/GameConfig/SRQP41.ini b/Data/User/GameConfig/SRQP41.ini new file mode 100644 index 0000000000..f360aef050 --- /dev/null +++ b/Data/User/GameConfig/SRQP41.ini @@ -0,0 +1,19 @@ +# SRQP41 - Racquet Sports +[Core] Values set here will override the main dolphin settings. +[EmuState] The Emulation State. 1 is worst, 5 is best, 0 is not set. +EmulationStateId = 4 +EmulationIssues = +[OnFrame] Add memory patches to be applied every frame here. +[ActionReplay] Add action replay cheats here. +[Video] +ProjectionHack = 0 +PH_SZNear = 0 +PH_SZFar = 0 +PH_ExtraParam = 0 +PH_ZNear = +PH_ZFar = +[Gecko] +[Wii] +DisableWiimoteSpeaker = 1 +[Video_Hacks] +DlistCachingEnable = False diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index b5e731ce15..734d966781 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -101,6 +101,7 @@ set(SRCS Src/ActionReplay.cpp Src/HW/EXI_DeviceIPL.cpp Src/HW/EXI_DeviceMemoryCard.cpp Src/HW/EXI_DeviceMic.cpp + Src/HW/GCMemcard.cpp Src/HW/GCPad.cpp Src/HW/GCPadEmu.cpp Src/HW/GPFifo.cpp diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index 289d741852..1e0561bc23 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -287,6 +287,7 @@ + @@ -483,6 +484,7 @@ + diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters index e51098f2ec..66b25af176 100644 --- a/Source/Core/Core/Core.vcxproj.filters +++ b/Source/Core/Core/Core.vcxproj.filters @@ -553,6 +553,9 @@ FifoPlayer + + HW %28Flipper/Hollywood%29\GCMemcard + @@ -1027,6 +1030,9 @@ FifoPlayer + + HW %28Flipper/Hollywood%29\GCMemcard + @@ -1165,5 +1171,8 @@ {ca7d56f7-4e84-4d15-9aea-7ae6fa7d6586} + + {3e9e6e83-c1bf-45f9-aeff-231f98f60d29} + \ No newline at end of file diff --git a/Source/Core/Core/SConscript b/Source/Core/Core/SConscript index 2f350557ec..3dafad8a62 100644 --- a/Source/Core/Core/SConscript +++ b/Source/Core/Core/SConscript @@ -97,6 +97,7 @@ files = [ 'Src/HW/EXI_DeviceIPL.cpp', 'Src/HW/EXI_DeviceMemoryCard.cpp', 'Src/HW/EXI_DeviceMic.cpp', + 'Src/HW/GCMemcard.cpp', 'Src/HW/GCPad.cpp', 'Src/HW/GCPadEmu.cpp', 'Src/HW/GPFifo.cpp', diff --git a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp index b5ca14b305..a1b2301caf 100644 --- a/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp +++ b/Source/Core/Core/Src/HW/EXI_DeviceMemoryCard.cpp @@ -26,6 +26,7 @@ #include "EXI_Device.h" #include "EXI_DeviceMemoryCard.h" #include "Sram.h" +#include "GCMemcard.h" #define MC_STATUS_BUSY 0x80 #define MC_STATUS_UNLOCKED 0x40 @@ -34,6 +35,7 @@ #define MC_STATUS_PROGRAMEERROR 0x08 #define MC_STATUS_READY 0x01 #define SIZE_TO_Mb (1024 * 8 * 16) +#define MC_HDR_SIZE 0xA000 static CEXIMemoryCard *cards[2]; @@ -84,7 +86,6 @@ CEXIMemoryCard::CEXIMemoryCard(const int index) INFO_LOG(EXPANSIONINTERFACE, "Reading memory card %s", m_strFilename.c_str()); pFile.ReadBytes(memory_card_content, memory_card_size); - SetCardFlashID(memory_card_content, card_index); } else @@ -94,11 +95,11 @@ CEXIMemoryCard::CEXIMemoryCard(const int index) memory_card_size = nintendo_card_id * SIZE_TO_Mb; memory_card_content = new u8[memory_card_size]; - memset(memory_card_content, 0xFF, memory_card_size); - + GCMemcard::Format(memory_card_content, m_strFilename.find(".JAP.raw") != std::string::npos, nintendo_card_id); + memset(memory_card_content+MC_HDR_SIZE, 0xFF, memory_card_size-MC_HDR_SIZE); WARN_LOG(EXPANSIONINTERFACE, "No memory card found. Will create new."); - Flush(); } + SetCardFlashID(memory_card_content, card_index); } void innerFlush(FlushData* data) diff --git a/Source/Core/DolphinWX/Src/MemoryCards/GCMemcard.cpp b/Source/Core/Core/Src/HW/GCMemcard.cpp similarity index 81% rename from Source/Core/DolphinWX/Src/MemoryCards/GCMemcard.cpp rename to Source/Core/Core/Src/HW/GCMemcard.cpp index df79e001f2..2471e76599 100644 --- a/Source/Core/DolphinWX/Src/MemoryCards/GCMemcard.cpp +++ b/Source/Core/Core/Src/HW/GCMemcard.cpp @@ -61,7 +61,10 @@ void decodeCI8image(u32* dst, u8* src, u16* pal, int width, int height) } } -GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) : m_valid(false), m_fileName(filename) +GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) + : m_valid(false) + , m_fileName(filename) + , mc_data(NULL) { File::IOFile mcdFile(m_fileName, "r+b"); if (!mcdFile.IsOpen()) @@ -71,10 +74,7 @@ GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) : m_va return; } Format(forceCreation ? sjis : !AskYesNoT("Format as ascii (NTSC\\PAL)?\nChoose no for sjis (NTSC-J)")); - if (!mcdFile.Open(m_fileName, "r+b")) - { - return; - } + return; } else { @@ -227,7 +227,7 @@ GCMemcard::GCMemcard(const char *filename, bool forceCreation, bool sjis) : m_va bool GCMemcard::IsAsciiEncoding() { - return hdr.Encoding[1] == 0; + return hdr.Encoding == 0; } bool GCMemcard::Save() @@ -245,51 +245,49 @@ bool GCMemcard::Save() return mcdFile.Close(); } -void GCMemcard::calc_checksumsBE(u16 *buf, u32 num, u16 *c1, u16 *c2) +void GCMemcard::calc_checksumsBE(u16 *buf, u32 length, u16 *csum, u16 *inv_csum) { - *c1 = 0;*c2 = 0; - for (u32 i = 0; i < num; ++i) + *csum = *inv_csum = 0; + + for (u32 i = 0; i < length; ++i) { //weird warnings here - *c1 += Common::swap16(buf[i]); - *c2 += Common::swap16((u16)(buf[i] ^ 0xffff)); + *csum += BE16(buf[i]); + *inv_csum += BE16((u16)(buf[i] ^ 0xffff)); } - if (*c1 == 0xffff) + *csum = BE16(*csum); + *inv_csum = BE16(*inv_csum); + if (*csum == 0xffff) { - *c1 = 0; + *csum = 0; } - if (*c2 == 0xffff) + if (*inv_csum == 0xffff) { - *c2 = 0; + *inv_csum = 0; } } u32 GCMemcard::TestChecksums() { - u16 csum1=0, - csum2=0; + u16 csum=0, + csum_inv=0; u32 results = 0; - calc_checksumsBE((u16*)&hdr, 0xFE , &csum1, &csum2); - if (BE16(hdr.CheckSum1) != csum1) results |= 1; - if (BE16(hdr.CheckSum2) != csum2) results |= 1; + calc_checksumsBE((u16*)&hdr, 0xFE , &csum, &csum_inv); + if ((hdr.Checksum != csum) || (hdr.Checksum_Inv != csum_inv)) results |= 1; - calc_checksumsBE((u16*)&dir, 0xFFE, &csum1, &csum2); - if (BE16(dir.CheckSum1) != csum1) results |= 2; - if (BE16(dir.CheckSum2) != csum2) results |= 2; + calc_checksumsBE((u16*)&dir, 0xFFE, &csum, &csum_inv); + if ((dir.Checksum != csum) || (dir.Checksum_Inv != csum_inv)) results |= 2; - calc_checksumsBE((u16*)&dir_backup, 0xFFE, &csum1, &csum2); - if (BE16(dir_backup.CheckSum1) != csum1) results |= 4; - if (BE16(dir_backup.CheckSum2) != csum2) results |= 4; + calc_checksumsBE((u16*)&dir_backup, 0xFFE, &csum, &csum_inv); + if ((dir_backup.Checksum != csum) || (dir_backup.Checksum_Inv != csum_inv)) results |= 4; - calc_checksumsBE((u16*)(((u8*)&bat)+4), 0xFFE, &csum1, &csum2); - if (BE16(bat.CheckSum1) != csum1) results |= 8; - if (BE16(bat.CheckSum2) != csum2) results |= 8; + calc_checksumsBE((u16*)(((u8*)&bat)+4), 0xFFE, &csum, &csum_inv); + if ((bat.Checksum != csum) || (bat.Checksum_Inv != csum_inv)) results |= 8; - calc_checksumsBE((u16*)(((u8*)&bat_backup)+4), 0xFFE, &csum1, &csum2); - if (BE16(bat_backup.CheckSum1) != csum1) results |= 16; - if (BE16(bat_backup.CheckSum2) != csum2) results |= 16; + calc_checksumsBE((u16*)(((u8*)&bat_backup)+4), 0xFFE, &csum, &csum_inv); + if ((bat_backup.Checksum != csum) || (bat_backup.Checksum_Inv != csum_inv)) results |= 16; return results; } @@ -298,39 +296,12 @@ bool GCMemcard::FixChecksums() { if (!m_valid) return false; - - u16 csum1=0, - csum2=0; - - calc_checksumsBE((u16*)&hdr, 0xFE, &csum1, &csum2); - hdr.CheckSum1[0] = u8(csum1 >> 8); - hdr.CheckSum1[1] = u8(csum1); - hdr.CheckSum2[0] = u8(csum2 >> 8); - hdr.CheckSum2[1] = u8(csum2); - - calc_checksumsBE((u16*)&dir, 0xFFE, &csum1, &csum2); - dir.CheckSum1[0] = u8(csum1 >> 8); - dir.CheckSum1[1] = u8(csum1); - dir.CheckSum2[0] = u8(csum2 >> 8); - dir.CheckSum2[1] = u8(csum2); - - calc_checksumsBE((u16*)&dir_backup, 0xFFE, &csum1, &csum2); - dir_backup.CheckSum1[0] = u8(csum1 >> 8); - dir_backup.CheckSum1[1] = u8(csum1); - dir_backup.CheckSum2[0] = u8(csum2 >> 8); - dir_backup.CheckSum2[1] = u8(csum2); - - calc_checksumsBE((u16*)(((u8*)&bat)+4), 0xFFE, &csum1, &csum2); - bat.CheckSum1[0] = u8(csum1 >> 8); - bat.CheckSum1[1] = u8(csum1); - bat.CheckSum2[0] = u8(csum2 >> 8); - bat.CheckSum2[1] = u8(csum2); - - calc_checksumsBE((u16*)(((u8*)&bat_backup)+4), 0xFFE, &csum1, &csum2); - bat_backup.CheckSum1[0] = u8(csum1 >> 8); - bat_backup.CheckSum1[1] = u8(csum1); - bat_backup.CheckSum2[0] = u8(csum2 >> 8); - bat_backup.CheckSum2[1] = u8(csum2); + + calc_checksumsBE((u16*)&hdr, 0xFE, &hdr.Checksum, &hdr.Checksum_Inv); + calc_checksumsBE((u16*)&dir, 0xFFE, &dir.Checksum, &dir.Checksum_Inv); + calc_checksumsBE((u16*)&dir_backup, 0xFFE, &dir_backup.Checksum, &dir_backup.Checksum_Inv); + calc_checksumsBE((u16*)&bat+2, 0xFFE, &bat.Checksum, &bat.Checksum_Inv); + calc_checksumsBE((u16*)&bat_backup+2, 0xFFE, &bat_backup.Checksum, &bat_backup.Checksum_Inv); return true; } @@ -620,8 +591,7 @@ u32 GCMemcard::ImportFile(DEntry& direntry, u8* contents, int remove) { index = i; dir.Dir[i] = direntry; - dir.Dir[i].FirstBlock[0] = u8(firstFree1 >> 8); - dir.Dir[i].FirstBlock[1] = u8(firstFree1); + *(u16*)&dir.Dir[i].FirstBlock = BE16(firstFree1); if (!remove) { dir.Dir[i].CopyCounter = dir.Dir[i].CopyCounter+1; @@ -642,7 +612,7 @@ u32 GCMemcard::ImportFile(DEntry& direntry, u8* contents, int remove) int j = 2; while(j < BE16(direntry.BlockCount) + 1) { - bat_backup.Map[i] = Common::swap16(last + (u16)j); + bat_backup.Map[i] = BE16(last + (u16)j); i++; j++; } @@ -654,25 +624,16 @@ u32 GCMemcard::ImportFile(DEntry& direntry, u8* contents, int remove) } //update last allocated block - int lastallocated = BE16(bat_backup.LastAllocated) + j - 1; - bat_backup.LastAllocated[0] = u8(lastallocated >> 8); - bat_backup.LastAllocated[1] = u8(lastallocated); - + *(u16*)&bat_backup.LastAllocated = BE16(BE16(bat_backup.LastAllocated) + j - 1); //update freespace counter - int freespace1 = totalspace - firstFree1 - fileBlocks + MC_FST_BLOCKS; - bat_backup.FreeBlocks[0] = u8(freespace1 >> 8); - bat_backup.FreeBlocks[1] = u8(freespace1); + *(u16*)&bat_backup.FreeBlocks = BE16(totalspace - firstFree1 - fileBlocks + MC_FST_BLOCKS); if (!remove) { // ... and dir update counter - int updateCtr = BE16(dir_backup.UpdateCounter) + 1; - dir_backup.UpdateCounter[0] = u8(updateCtr >> 8); - dir_backup.UpdateCounter[1] = u8(updateCtr); + *(u16*)&dir_backup.UpdateCounter = BE16(BE16(dir_backup.UpdateCounter) + 1); // ... and bat update counter - updateCtr = BE16(bat_backup.UpdateCounter) + 1; - bat_backup.UpdateCounter[0] = u8(updateCtr >> 8); - bat_backup.UpdateCounter[1] = u8(updateCtr); + *(u16*)&bat_backup.UpdateCounter = BE16(BE16(bat_backup.UpdateCounter) + 1); } bat = bat_backup; return SUCCESS; @@ -698,9 +659,7 @@ u32 GCMemcard::RemoveFile(u8 index) //index in the directory array //free the blocks int blocks_left = BE16(dir.Dir[index].BlockCount); - int block = BE16(dir.Dir[index].FirstBlock) - 1; - bat.LastAllocated[0] = (u8)(block >> 8); - bat.LastAllocated[1] = (u8)block; + *(u16*)&bat.LastAllocated = BE16(BE16(dir.Dir[index].FirstBlock) - 1); u8 nextIndex = index + 1; memset(&(dir.Dir[index]), 0xFF, DENTRY_SIZE); @@ -713,9 +672,7 @@ u32 GCMemcard::RemoveFile(u8 index) //index in the directory array //Only get file data if it is a valid dir entry if (BE16(tempDEntry->FirstBlock) != 0xFFFF) { - u16 freeBlock= BE16(bat.FreeBlocks) - BE16(tempDEntry->BlockCount); - bat.FreeBlocks[0] = u8(freeBlock >> 8); - bat.FreeBlocks[1] = u8(freeBlock); + *(u16*)&bat.FreeBlocks = BE16(BE16(bat.FreeBlocks) - BE16(tempDEntry->BlockCount)); u16 size = DEntry_BlockCount(nextIndex); if (size != 0xFFFF) @@ -754,9 +711,7 @@ u32 GCMemcard::RemoveFile(u8 index) //index in the directory array } } // increment update counter - int updateCtr = BE16(dir.UpdateCounter) + 1; - dir.UpdateCounter[0] = u8(updateCtr >> 8); - dir.UpdateCounter[1] = u8(updateCtr); + *(u16*)&dir.UpdateCounter = BE16(BE16(dir.UpdateCounter) + 1); return SUCCESS; } @@ -989,9 +944,7 @@ void GCMemcard::Gcs_SavConvert(DEntry* tempDEntry, int saveType, int length) // It is stored only within the corresponding GSV file. // If the GCS file is added without using the GameSaves software, // the value stored is always "1" - int blockCount = length / BLOCK_SIZE; - tempDEntry->BlockCount[0] = u8(blockCount >> 8); - tempDEntry->BlockCount[1] = u8(blockCount); + *(u16*)&tempDEntry->BlockCount = BE16(length / BLOCK_SIZE); } break; case SAV: @@ -1157,70 +1110,97 @@ u32 GCMemcard::ReadAnimRGBA8(u8 index, u32* buffer, u8 *delays) return frames; } -bool GCMemcard::Format(bool sjis, bool New, int slot, u16 SizeMb, bool hdrOnly) + +bool GCMemcard::Format(u8 * card_data, bool sjis, u16 SizeMb) { - // Currently only formats cards for slot A - const u32 data_size = BLOCK_SIZE * (SizeMb * MBIT_TO_BLOCKS - MC_FST_BLOCKS); + if (!card_data) + return false; + memset(card_data, 0xFF, BLOCK_SIZE*3); + memset(card_data + BLOCK_SIZE*3, 0, BLOCK_SIZE*2); - SRAM m_SRAM; + GCMC_Header gcp; + gcp.hdr = (Header*)card_data; + gcp.dir = (Directory *)(card_data + BLOCK_SIZE); + gcp.dir_backup = (Directory *)(card_data + BLOCK_SIZE*2); + gcp.bat = (BlockAlloc *)(card_data + BLOCK_SIZE*3); + gcp.bat_backup = (BlockAlloc *)(card_data + BLOCK_SIZE*4); - if (New) - { - mc_data_size = data_size; - mc_data = new u8[mc_data_size]; - } - // Only Format 16MB memcards for now - if ((SizeMb != MemCard2043Mb) || (data_size != mc_data_size)) return false; + *(u16*)gcp.hdr->SizeMb = BE16(SizeMb); + *(u16*)gcp.hdr->Encoding = BE16(sjis ? 1 : 0); - File::IOFile pStream(File::GetUserPath(F_GCSRAM_IDX), "rb"); - if (pStream) - { - pStream.ReadBytes(&m_SRAM, 64); - pStream.Close(); - } - else - { - m_SRAM = sram_dump; - } - - const u64 time = CEXIIPL::GetGCTime(); - u64 rand = Common::swap64(time); + FormatInternal(gcp); + return true; +} +bool GCMemcard::Format(bool sjis, u16 SizeMb) +{ memset(&hdr, 0xFF, BLOCK_SIZE); + memset(&dir, 0xFF, BLOCK_SIZE); + memset(&dir_backup, 0xFF, BLOCK_SIZE); + memset(&bat, 0, BLOCK_SIZE); + memset(&bat_backup, 0, BLOCK_SIZE); + + GCMC_Header gcp; + gcp.hdr = &hdr; + gcp.dir = &dir; + gcp.dir_backup = &dir_backup; + gcp.bat = &bat; + gcp.bat_backup = &bat_backup; + + *(u16*)hdr.SizeMb = BE16(SizeMb); + *(u16*)hdr.Encoding = BE16(sjis ? 1 : 0); + FormatInternal(gcp); + + m_sizeMb = SizeMb; + maxBlock = (u32)m_sizeMb * MBIT_TO_BLOCKS; + if (mc_data) + { + delete mc_data; + mc_data = NULL; + } + mc_data_size = BLOCK_SIZE * (m_sizeMb * MBIT_TO_BLOCKS - MC_FST_BLOCKS); + mc_data = new u8[mc_data_size]; + if (!mc_data) + return false; + + memset(mc_data, 0xFF, mc_data_size); + m_valid = true; + + return Save(); +} + +void GCMemcard::FormatInternal(GCMC_Header &GCP) +{ + Header *p_hdr = GCP.hdr; + u64 rand = CEXIIPL::GetGCTime(); + p_hdr->formatTime = Common::swap64(rand); + for(int i = 0; i < 12; i++) { rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); - hdr.serial[i] = (u8)(m_SRAM.flash_id[slot][i] + (u32)rand); + p_hdr->serial[i] = (u8)(g_SRAM.flash_id[0][i] + (u32)rand); rand = (((rand * (u64)0x0000000041c64e6dULL) + (u64)0x0000000000003039ULL) >> 16); rand &= (u64)0x0000000000007fffULL; } + *(u32*)&p_hdr->SramBias = g_SRAM.counter_bias; + *(u32*)&p_hdr->SramLang = g_SRAM.lang; + // TODO: determine the purpose of Unk2 1 works for slot A, 0 works for both slot A and slot B + *(u32*)&p_hdr->Unk2 = 0; // = _viReg[55]; static vu16* const _viReg = (u16*)0xCC002000; + *(u16*)&p_hdr->deviceID = 0; + calc_checksumsBE((u16*)p_hdr, 0xFE, &p_hdr->Checksum, &p_hdr->Checksum_Inv); - hdr.fmtTime.high = (time >> 32) & 0xFFFFFFFF; - hdr.fmtTime.low = time & 0xFFFFFFFF; - *(u32*)&(hdr.SramBias) = m_SRAM.counter_bias; - *(u32*)&(hdr.SramLang) = m_SRAM.lang; - *(u32*)&(hdr.Unk2) = Common::swap32(1); // = _viReg[55]; static vu16* const _viReg = (u16*)0xCC002000; - // TODO: find out why memcard cares if component cable used for now set to one like main app - *(u16*)&(hdr.deviceID) = 0; - *(u16*)&(hdr.SizeMb) = Common::swap16(SizeMb); - *(u16*)&(hdr.Encoding) = Common::swap16(sjis ? 1 : 0); - - if (!hdrOnly) - { - memset(&dir, 0xFF, BLOCK_SIZE); - memset(&dir_backup, 0xFF, BLOCK_SIZE); - *(u16*)&dir.UpdateCounter = 0; - *(u16*)&dir_backup.UpdateCounter = Common::swap16(1); - memset(&bat, 0, BLOCK_SIZE); - memset(&bat_backup, 0, BLOCK_SIZE); - *(u16*)&bat.UpdateCounter = 0; - *(u16*)&bat_backup.UpdateCounter = Common::swap16(1); - *(u16*)&bat.FreeBlocks = *(u16*)&bat_backup.FreeBlocks = Common::swap16(SizeMb * MBIT_TO_BLOCKS - MC_FST_BLOCKS); - *(u16*)&bat.LastAllocated = *(u16*)&bat_backup.LastAllocated = Common::swap16(4); - memset(mc_data, 0xFF, mc_data_size); - } + Directory *p_dir = GCP.dir, + *p_dir_backup = GCP.dir_backup; + *(u16*)&p_dir->UpdateCounter = 0; + *(u16*)&p_dir_backup->UpdateCounter = BE16(1); + calc_checksumsBE((u16*)p_dir, 0xFFE, &p_dir->Checksum, &p_dir->Checksum_Inv); + calc_checksumsBE((u16*)p_dir_backup, 0xFFE, &p_dir_backup->Checksum, &p_dir_backup->Checksum_Inv); - FixChecksums(); - Save(); - return true; + BlockAlloc *p_bat = GCP.bat, + *p_bat_backup = GCP.bat_backup; + *(u16*)&p_bat_backup->UpdateCounter = BE16(1); + *(u16*)&p_bat->FreeBlocks = *(u16*)&p_bat_backup->FreeBlocks = BE16(( BE16(p_hdr->SizeMb) * MBIT_TO_BLOCKS) - MC_FST_BLOCKS); + *(u16*)&p_bat->LastAllocated = *(u16*)&p_bat_backup->LastAllocated = BE16(4); + calc_checksumsBE((u16*)p_bat+2, 0xFFE, &p_bat->Checksum, &p_bat->Checksum_Inv); + calc_checksumsBE((u16*)p_bat_backup+2, 0xFFE, &p_bat_backup->Checksum, &p_bat_backup->Checksum_Inv); } diff --git a/Source/Core/DolphinWX/Src/MemoryCards/GCMemcard.h b/Source/Core/Core/Src/HW/GCMemcard.h similarity index 89% rename from Source/Core/DolphinWX/Src/MemoryCards/GCMemcard.h rename to Source/Core/Core/Src/HW/GCMemcard.h index 07ce5656f8..5aa0a3c97f 100644 --- a/Source/Core/DolphinWX/Src/MemoryCards/GCMemcard.h +++ b/Source/Core/Core/Src/HW/GCMemcard.h @@ -19,12 +19,12 @@ #define __GCMEMCARD_h__ #include "Common.h" -#include "../../../Core/Src/HW/Sram.h" +#include "Sram.h" #include "StringUtil.h" -#include "../../../Core/Src/HW/EXI_DeviceIPL.h" +#include "EXI_DeviceIPL.h" -#define BE32(x) ((u32((x)[0])<<24) | (u32((x)[1])<<16) | (u32((x)[2])<<8) | u32((x)[3])) -#define BE16(x) ((u16((x)[0])<<8) | u16((x)[1])) +#define BE32(x) (Common::swap32(x)) +#define BE16(x) (Common::swap16(x)) #define ArrayByteSwap(a) (ByteSwap(a, a+sizeof(u8))); enum @@ -67,7 +67,7 @@ enum CI8, }; -class GCMemcard +class GCMemcard : NonCopyable { private: friend class CMemcardManagerDebug; @@ -81,15 +81,10 @@ private: u16 m_sizeMb; #pragma pack(push,1) - struct OSTime { - u32 low; - u32 high; - }; - struct Header { //Offset Size Description // Serial in libogc u8 serial[12]; //0x0000 12 ? - OSTime fmtTime; //0x000c 8 time of format (OSTime value) + u64 formatTime; //0x000c 8 time of format (OSTime value) u8 SramBias[4]; //0x0014 4 sram bias at time of format u8 SramLang[4]; //0x0018 4 sram language u8 Unk2[4]; //0x001c 4 ? almost always 0 @@ -99,8 +94,8 @@ private: u8 Encoding[2]; //0x0024 2 encoding (ASCII or japanese) u8 Unused1[468]; //0x0026 468 unused (0xff) u8 UpdateCounter[2];//0x01fa 2 update Counter (?, probably unused) - u8 CheckSum1[2]; //0x01fc 2 Checksum 1 (?) - u8 CheckSum2[2]; //0x01fe 2 Checksum 2 (?) + u16 Checksum; //0x01fc 2 Additive Checksum + u16 Checksum_Inv; //0x01fe 2 Inverse Checksum u8 Unused2[7680]; //0x0200 0x1e00 unused (0xff) } hdr; @@ -153,31 +148,38 @@ private: DEntry Dir[DIRLEN]; //0x0000 Directory Entries (max 127) u8 Padding[0x3a]; u8 UpdateCounter[2];//0x1ffa 2 update Counter - u8 CheckSum1[2]; //0x1ffc 2 Checksum 1 - u8 CheckSum2[2]; //0x1ffe 2 Checksum 2 + u16 Checksum; //0x1ffc 2 Additive Checksum + u16 Checksum_Inv; //0x1ffe 2 Inverse Checksum } dir, dir_backup; struct BlockAlloc { - u8 CheckSum1[2]; //0x0000 2 Checksum 1 - u8 CheckSum2[2]; //0x0002 2 Checksum 2 + u16 Checksum; //0x0000 2 Additive Checksum + u16 Checksum_Inv; //0x0002 2 Inverse Checksum u8 UpdateCounter[2];//0x0004 2 update Counter u8 FreeBlocks[2]; //0x0006 2 free Blocks u8 LastAllocated[2];//0x0008 2 last allocated Block u16 Map[0xFFB]; //0x000a 0x1ff8 Map of allocated Blocks } bat,bat_backup; + struct GCMC_Header + { + Header *hdr; + Directory *dir, *dir_backup; + BlockAlloc *bat, *bat_backup; + }; #pragma pack(pop) u32 ImportGciInternal(FILE* gcih, const char *inputFile, std::string outputFile); - + static void FormatInternal(GCMC_Header &GCP); public: GCMemcard(const char* fileName, bool forceCreation=false, bool sjis=false); bool IsValid() { return m_valid; } bool IsAsciiEncoding(); bool Save(); - bool Format(bool sjis = false, bool New = true, int slot = 0, u16 SizeMb = MemCard2043Mb, bool hdrOnly = false); + bool Format(bool sjis = false, u16 SizeMb = MemCard2043Mb); + static bool Format(u8 * card_data, bool sjis = false, u16 SizeMb = MemCard2043Mb); - void calc_checksumsBE(u16 *buf, u32 num, u16 *c1, u16 *c2); + static void calc_checksumsBE(u16 *buf, u32 length, u16 *csum, u16 *inv_csum); u32 TestChecksums(); bool FixChecksums(); diff --git a/Source/Core/Core/Src/HW/SystemTimers.cpp b/Source/Core/Core/Src/HW/SystemTimers.cpp index d7bbfc331b..bfc2b61af6 100644 --- a/Source/Core/Core/Src/HW/SystemTimers.cpp +++ b/Source/Core/Core/Src/HW/SystemTimers.cpp @@ -246,7 +246,7 @@ void Init() // FIXME: does Wiimote Speaker support really require a different interval? (issue 4608) const int interval = SConfig::GetInstance().m_LocalCoreStartupParameter. - bDisableWiimoteSpeaker ? 1250 : 1500; + bDisableWiimoteSpeaker ? 15000 : 4000; const int fields = SConfig::GetInstance().m_LocalCoreStartupParameter. bVBeam ? 2 : 1; IPC_HLE_PERIOD = GetTicksPerSecond() / (interval * fields); diff --git a/Source/Core/Core/Src/PowerPC/PPCCache.cpp b/Source/Core/Core/Src/PowerPC/PPCCache.cpp index 33ecc0ee88..540d4940f7 100644 --- a/Source/Core/Core/Src/PowerPC/PPCCache.cpp +++ b/Source/Core/Core/Src/PowerPC/PPCCache.cpp @@ -134,6 +134,8 @@ namespace PowerPC #endif if (t == 0xff) // load to the cache { + if (jit) + jit->GetBlockCache()->InvalidateICache(addr); if (HID0.ILOCK) // instruction cache is locked return Memory::ReadUnchecked_U32(addr); // select a way diff --git a/Source/Core/DolphinWX/CMakeLists.txt b/Source/Core/DolphinWX/CMakeLists.txt index f38e791cd0..438ee9ce82 100644 --- a/Source/Core/DolphinWX/CMakeLists.txt +++ b/Source/Core/DolphinWX/CMakeLists.txt @@ -52,7 +52,6 @@ if(wxWidgets_FOUND) Src/LogWindow.cpp Src/Main.cpp Src/MemcardManager.cpp - Src/MemoryCards/GCMemcard.cpp Src/MemoryCards/WiiSaveCrypted.cpp Src/NetWindow.cpp Src/PHackSettings.cpp diff --git a/Source/Core/DolphinWX/Dolphin.vcxproj b/Source/Core/DolphinWX/Dolphin.vcxproj index d6b854d075..942bd41f4e 100644 --- a/Source/Core/DolphinWX/Dolphin.vcxproj +++ b/Source/Core/DolphinWX/Dolphin.vcxproj @@ -256,7 +256,6 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / true - @@ -311,7 +310,6 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / - diff --git a/Source/Core/DolphinWX/Dolphin.vcxproj.filters b/Source/Core/DolphinWX/Dolphin.vcxproj.filters index d3ab073527..ec7d68798b 100644 --- a/Source/Core/DolphinWX/Dolphin.vcxproj.filters +++ b/Source/Core/DolphinWX/Dolphin.vcxproj.filters @@ -6,9 +6,6 @@ - - GUI\Saves - GUI\Saves @@ -144,9 +141,6 @@ - - GUI\Saves - GUI\Saves diff --git a/Source/Core/DolphinWX/SConscript b/Source/Core/DolphinWX/SConscript index 3d3d1e56c2..92ca4f9f62 100644 --- a/Source/Core/DolphinWX/SConscript +++ b/Source/Core/DolphinWX/SConscript @@ -43,7 +43,6 @@ else: 'Src/LogWindow.cpp', 'Src/Main.cpp', 'Src/MemcardManager.cpp', - 'Src/MemoryCards/GCMemcard.cpp', 'Src/MemoryCards/WiiSaveCrypted.cpp', 'Src/NetWindow.cpp', 'Src/PHackSettings.cpp', diff --git a/Source/Core/DolphinWX/Src/ConfigMain.cpp b/Source/Core/DolphinWX/Src/ConfigMain.cpp index cc0a391d10..31000173ae 100644 --- a/Source/Core/DolphinWX/Src/ConfigMain.cpp +++ b/Source/Core/DolphinWX/Src/ConfigMain.cpp @@ -27,6 +27,7 @@ #include "HW/SI.h" #include "HW/DSPHLE/DSPHLE.h" #include "HW/DSPLLE/DSPLLE.h" +#include "HW/GCMemcard.h" #include "IPC_HLE/WII_IPC_HLE.h" #include "NANDContentLoader.h" @@ -37,7 +38,6 @@ #include "Frame.h" #include "HotkeyDlg.h" #include "Main.h" -#include "MemoryCards/GCMemcard.h" #include "VideoBackendBase.h" #define TEXT_BOX(page, text) new wxStaticText(page, wxID_ANY, text, wxDefaultPosition, wxDefaultSize) diff --git a/Source/Core/DolphinWX/Src/ISOProperties.cpp b/Source/Core/DolphinWX/Src/ISOProperties.cpp index a6977727dc..4618e739ae 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.cpp +++ b/Source/Core/DolphinWX/Src/ISOProperties.cpp @@ -321,7 +321,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) // Wii Console EnableProgressiveScan = new wxCheckBox(m_GameConfig, ID_ENABLEPROGRESSIVESCAN, _("Enable Progressive Scan"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); EnableWideScreen = new wxCheckBox(m_GameConfig, ID_ENABLEWIDESCREEN, _("Enable WideScreen"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); - DisableWiimoteSpeaker = new wxCheckBox(m_GameConfig, ID_DISABLEWIIMOTESPEAKER, _("Disable Wiimote Speaker"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); + DisableWiimoteSpeaker = new wxCheckBox(m_GameConfig, ID_DISABLEWIIMOTESPEAKER, _("Alternate Wiimote Timing"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE|wxCHK_ALLOW_3RD_STATE_FOR_USER, wxDefaultValidator); DisableWiimoteSpeaker->SetToolTip(_("Mutes the Wiimote speaker. Fixes random disconnections on real wiimotes. No effect on emulated wiimotes.")); // Video diff --git a/Source/Core/DolphinWX/Src/MemcardManager.h b/Source/Core/DolphinWX/Src/MemcardManager.h index e3707f6414..beff71b671 100644 --- a/Source/Core/DolphinWX/Src/MemcardManager.h +++ b/Source/Core/DolphinWX/Src/MemcardManager.h @@ -29,7 +29,7 @@ #include "IniFile.h" #include "FileUtil.h" -#include "MemoryCards/GCMemcard.h" +#include "HW/GCMemcard.h" #undef MEMCARD_MANAGER_STYLE #define MEMCARD_MANAGER_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX | wxRESIZE_BORDER | wxMAXIMIZE_BOX diff --git a/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp b/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp index b8483b119c..06481f9ddf 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp +++ b/Source/Core/VideoCommon/Src/VertexLoader_Position.cpp @@ -179,8 +179,8 @@ void Pos_ReadIndex_Float_SSSE3(int Index) if(Index < MaxSize) { const u32* pData = (const u32 *)(cached_arraybases[ARRAY_POSITION] + (Index * arraystrides[ARRAY_POSITION])); - const __m128i a = _mm_loadu_si128((__m128i*)pData); - __m128i b = _mm_shuffle_epi8(a, three ? kMaskSwap32_3 : kMaskSwap32_2); + GC_ALIGNED128(const __m128i a = _mm_loadu_si128((__m128i*)pData)); + GC_ALIGNED128(__m128i b = _mm_shuffle_epi8(a, three ? kMaskSwap32_3 : kMaskSwap32_2)); _mm_storeu_si128((__m128i*)VertexManager::s_pCurBufferPointer, b); LOG_VTX(); VertexManager::s_pCurBufferPointer += 12; diff --git a/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp b/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp index de853081ed..ba3bb73f43 100644 --- a/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp +++ b/Source/Core/VideoCommon/Src/VertexLoader_TextCoord.cpp @@ -353,8 +353,8 @@ void LOADERDECL TexCoord_ReadIndex16_Float2_SSSE3() { u16 Index = DataReadU16(); const u32 *pData = (const u32 *)(cached_arraybases[ARRAY_TEXCOORD0+tcIndex] + (Index * arraystrides[ARRAY_TEXCOORD0+tcIndex])); - const __m128i a = _mm_loadl_epi64((__m128i*)pData); - const __m128i b = _mm_shuffle_epi8(a, kMaskSwap32); + GC_ALIGNED128(const __m128i a = _mm_loadl_epi64((__m128i*)pData)); + GC_ALIGNED128(const __m128i b = _mm_shuffle_epi8(a, kMaskSwap32)); u8* p = VertexManager::s_pCurBufferPointer; _mm_storel_epi64((__m128i*)p, b); LOG_TEX2(); diff --git a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp index de610eab39..ff3f68a6cd 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp +++ b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.cpp @@ -28,7 +28,8 @@ D3DXCOMPILESHADERTYPE PD3DXCompileShader = NULL; namespace DX9 { - +static char vsVersions[5][7] = {"ERROR", "vs_1_4", "vs_2_a", "vs_3_0", "vs_4_0"}; +static char psVersions[5][7] = {"ERROR", "ps_1_4", "ps_2_a", "ps_3_0", "ps_4_0"}; // D3DX HINSTANCE hD3DXDll = NULL; int d3dx_dll_ref = 0; @@ -55,6 +56,7 @@ static bool auto_depth_stencil = false; #define VENDOR_NVIDIA 4318 #define VENDOR_ATI 4098 +#define VENDOR_INTEL 32902 bool bFrameInProgress = false; @@ -112,6 +114,10 @@ bool IsATIDevice() { return GetCurAdapter().ident.VendorId == VENDOR_ATI; } +bool IsIntelDevice() +{ + return GetCurAdapter().ident.VendorId == VENDOR_INTEL; +} HRESULT Init() @@ -139,6 +145,11 @@ HRESULT Init() int adapter = g_Config.iAdapter; D3D->GetDeviceCaps((adapter >= 0 && adapter < std::min(MAX_ADAPTERS, numAdapters)) ? adapter : D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps); Enumerate(); + if(IsIntelDevice()){ + // Murder the a because Intel doesn't support 2.0a because the 'a' part was a ATI and Nvidia war going on + psVersions[2][5] = '0'; + vsVersions[2][5] = '0'; + } return S_OK; } @@ -522,16 +533,14 @@ D3DFORMAT GetSupportedDepthSurfaceFormat(D3DFORMAT target_format) const char *VertexShaderVersionString() { - static const char *versions[5] = {"ERROR", "vs_1_4", "vs_2_a", "vs_3_0", "vs_4_0"}; int version = ((D3D::caps.VertexShaderVersion >> 8) & 0xFF); - return versions[std::min(4, version)]; + return vsVersions[std::min(4, version)]; } const char *PixelShaderVersionString() { - static const char *versions[5] = {"ERROR", "ps_1_4", "ps_2_a", "ps_3_0", "ps_4_0"}; int version = ((D3D::caps.PixelShaderVersion >> 8) & 0xFF); - return versions[std::min(4, version)]; + return psVersions[std::min(4, version)]; } LPDIRECT3DSURFACE9 GetBackBufferSurface() diff --git a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.h b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.h index f4a5244dbe..d1e7eeaa91 100644 --- a/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.h +++ b/Source/Plugins/Plugin_VideoDX9/Src/D3DBase.h @@ -47,6 +47,7 @@ namespace D3D #define FOURCC_NULL ((D3DFORMAT)(MAKEFOURCC('N','U','L','L'))) bool IsATIDevice(); +bool IsIntelDevice(); HRESULT Init(); HRESULT Create(int adapter, HWND wnd, int resolution, int aa_mode, bool auto_depth); void Close();