kernal/xam/xam_info: base game region on user_country
It is debatable whether this is correct in the general case. There's nothing really wrong with 0xFFFF logically. Burnout Paradise however bases its in-game language on this and does not recognise 0xFFFF. The game uses Japanese in the default case. I've avoided the "rest of Asia" code since Burnout Paradise seems to use a different value (0x01F8) for that than what I expected (0x01FC).
This commit is contained in:
parent
2a77ed7246
commit
422ee1fbdc
|
@ -26,6 +26,7 @@
|
|||
#include "third_party/fmt/include/fmt/format.h"
|
||||
|
||||
DEFINE_int32(avpack, 8, "Video modes", "Video");
|
||||
DECLARE_int32(user_country);
|
||||
DECLARE_int32(user_language);
|
||||
|
||||
namespace xe {
|
||||
|
@ -206,7 +207,25 @@ dword_result_t XGetAVPack_entry() {
|
|||
}
|
||||
DECLARE_XAM_EXPORT1(XGetAVPack, kNone, kStub);
|
||||
|
||||
uint32_t xeXGetGameRegion() { return 0xFFFFu; }
|
||||
uint32_t xeXGetGameRegion() {
|
||||
static uint32_t const table[] = {
|
||||
0xFFFFu, 0x03FFu, 0x02FEu, 0x02FEu, 0x03FFu, 0x02FEu, 0x0201u, 0x03FFu,
|
||||
0x02FEu, 0x02FEu, 0x03FFu, 0x03FFu, 0x03FFu, 0x03FFu, 0x02FEu, 0x03FFu,
|
||||
0x00FFu, 0xFFFFu, 0x02FEu, 0x03FFu, 0x0102u, 0x03FFu, 0x03FFu, 0x02FEu,
|
||||
0x02FEu, 0x02FEu, 0x03FFu, 0x03FFu, 0x03FFu, 0x02FEu, 0x03FFu, 0x02FEu,
|
||||
0x02FEu, 0x02FEu, 0x02FEu, 0x02FEu, 0x02FEu, 0x02FEu, 0x03FFu, 0x03FFu,
|
||||
0x03FFu, 0x02FEu, 0x02FEu, 0x03FFu, 0x02FEu, 0x02FEu, 0x03FFu, 0x03FFu,
|
||||
0x03FFu, 0x02FEu, 0x02FEu, 0x03FFu, 0x03FFu, 0x0101u, 0x03FFu, 0x03FFu,
|
||||
0x03FFu, 0x03FFu, 0x03FFu, 0x03FFu, 0x02FEu, 0x02FEu, 0x02FEu, 0x02FEu,
|
||||
0x03FFu, 0x03FFu, 0x02FEu, 0x02FEu, 0x03FFu, 0x0102u, 0x03FFu, 0x00FFu,
|
||||
0x03FFu, 0x03FFu, 0x02FEu, 0x02FEu, 0x0201u, 0x03FFu, 0x03FFu, 0x03FFu,
|
||||
0x03FFu, 0x03FFu, 0x02FEu, 0x03FFu, 0x02FEu, 0x03FFu, 0x03FFu, 0x02FEu,
|
||||
0x02FEu, 0x03FFu, 0x02FEu, 0x03FFu, 0x02FEu, 0x02FEu, 0xFFFFu, 0x03FFu,
|
||||
0x03FFu, 0x03FFu, 0x03FFu, 0x02FEu, 0x03FFu, 0x03FFu, 0x02FEu, 0x00FFu,
|
||||
0x03FFu, 0x03FFu, 0x03FFu, 0x03FFu, 0x03FFu, 0x03FFu, 0x03FFu};
|
||||
auto country = static_cast<uint8_t>(cvars::user_country);
|
||||
return country < xe::countof(table) ? table[country] : 0xFFFFu;
|
||||
}
|
||||
|
||||
dword_result_t XGetGameRegion_entry() { return xeXGetGameRegion(); }
|
||||
DECLARE_XAM_EXPORT1(XGetGameRegion, kNone, kStub);
|
||||
|
|
Loading…
Reference in New Issue