summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/GraphicsModSystem
diff options
context:
space:
mode:
authorcristian64 <cristian64@gmail.com>2026-03-15 18:14:43 +0000
committercristian64 <cristian64@gmail.com>2026-03-15 18:43:00 +0000
commit3eea3a90b5a6c3f337f1eb951c63b5ca3ab9b06d (patch)
treee52414831e572d36ab93dcc5b2c1dff12574a450 /Source/Core/VideoCommon/GraphicsModSystem
parentb6027da5db00abd73041d794fbb7b8d7887725dc (diff)
Triforce: Check only first byte in region flag.
In some Triforce games (e.g. _F-Zero AX_), the bytes that follow the region flag in the `boot.id` file (at `0x38`) happen to be `0x00`. However, in other games (e.g _Mario Kart Arcade GP 2_), it seems the region flag is padded with `0xFF`. _Mario Kart Arcade GP 2_ (`boot.id` in the USA version): ``` 00000 0000: 42 54 49 44 00 00 01 E0 00 00 00 01 00 00 00 01 BTID.... ........ 00000 0010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ........ ........ 00000 0020: 47 43 41 4D 00 00 01 C0 07 D3 05 0F 00 00 00 07 GCAM.... ........ 00000 0030: 53 42 4E 4C 00 00 00 00 0E FF FF FF FF FF FF FF SBNL.... ........ ----------- ^ | region flag ``` When the region flag was tested in `switch` statements (where a single byte was expected in the `case`s), the test would fail, depending on the game. This issue would lead to the wrong calculation of the country in `VolumeDisc::GetCountry()`, which was then used to build the game ID in `VolumeDisc::GetGameID()`. The solution is to test using only the least meaningful byte in the region flag. Unexpected game IDs were first noticed with USA version of _Mario Kart Arcade GP 2_, which was wrongly assigned the same game ID that is given to the Japan version (i.e. `GNLJ82`). The correct game ID for the USA version is `GNLE82`.
Diffstat (limited to 'Source/Core/VideoCommon/GraphicsModSystem')
0 files changed, 0 insertions, 0 deletions