summaryrefslogtreecommitdiff
path: root/Source/Core/DiscIO/Src/VolumeGC.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DiscIO/Src/VolumeGC.cpp')
-rw-r--r--Source/Core/DiscIO/Src/VolumeGC.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/Source/Core/DiscIO/Src/VolumeGC.cpp b/Source/Core/DiscIO/Src/VolumeGC.cpp
index 6e9579571a..6210172790 100644
--- a/Source/Core/DiscIO/Src/VolumeGC.cpp
+++ b/Source/Core/DiscIO/Src/VolumeGC.cpp
@@ -94,10 +94,12 @@ std::string CVolumeGC::GetMakerID() const
std::vector<std::string> CVolumeGC::GetNames() const
{
std::vector<std::string> names;
+
+ auto const string_decoder = GetStringDecoder(GetCountry());
- char name[128] = {};
- if (m_pReader != NULL && Read(0x20, 0x60, (u8*)&name))
- names.push_back(name);
+ char name[0x60 + 1] = {};
+ if (m_pReader != NULL && Read(0x20, 0x60, (u8*)name))
+ names.push_back(string_decoder(name));
return names;
}
@@ -143,4 +145,10 @@ bool CVolumeGC::IsDiscTwo() const
return discTwo;
}
+auto CVolumeGC::GetStringDecoder(ECountry country) -> StringDecoder
+{
+ return (COUNTRY_JAPAN == country || COUNTRY_TAIWAN == country) ?
+ SHIFTJISToUTF8 : CP1252ToUTF8;
+}
+
} // namespace