Improve ROM markets Enumeration (#39)

<!--- Provide a general summary of your changes in the Title above -->

## Description
<!--- Describe your changes in detail -->
Based on research and trial and error, this makes the information more
appropriate.

## Motivation and Context
<!--- What does this sample do? What problem does it solve? -->
<!--- If it fixes/closes/resolves an open issue, please link to the
issue here -->

## How Has This Been Tested?
<!-- (if applicable) -->
<!--- Please describe in detail how you tested your sample/changes. -->
<!--- Include details of your testing environment, and the tests you ran
to -->
<!--- see how your change affects other areas of the code, etc. -->

## Screenshots
<!-- (if appropriate): -->

## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [x] Improvement (non-breaking change that adds a new feature)
- [ ] Bug fix (fixes an issue)
- [ ] Breaking change (breaking change)
- [ ] Config and build (change in the configuration and build system,
has no impact on code or features)

## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes
that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
- [ ] My code follows the code style of this project.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have added tests to cover my changes.
- [ ] All new and existing tests passed.

<!--- It would be nice if you could sign off your contribution by
replacing the name with your GitHub user name and GitHub email contact.
-->
Signed-off-by: GITHUB_USER <GITHUB_USER_EMAIL>
This commit is contained in:
Robin Jones 2023-08-17 21:15:13 +01:00 committed by GitHub
parent ed1fef88be
commit 887d83ae5f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 77 additions and 80 deletions

View File

@ -224,7 +224,7 @@ uint8_t rom_db_match_expansion_pak(rom_header_t rom_header) {
// Space Station Silicon Valley has known issues on NTSC.
// We only check for the known working market here.
if ( (rom_header.metadata.unique_identifier == *(uint16_t *) "SV") && (rom_header.metadata.destination_market != MARKET_PAL_GENERIC)) {
if ( (rom_header.metadata.unique_identifier == *(uint16_t *) "SV") && (rom_header.metadata.destination_market != MARKET_EUROPEAN_BASIC)) {
return DB_MEMORY_EXPANSION_FAULTY;
}

View File

@ -114,54 +114,48 @@ typedef enum {
N64_ALECK64 = 'Z'
} rom_media_type_t;
/** @brief ROM market type enumeration. */
/** @brief ROM market region & language type enumeration. */
typedef enum {
/** @brief The ROM is designed for all regions. */
MARKET_ALL = 'A',
/** @brief The ROM is designed for Brazil (probably PAL-M). */
MARKET_BRAZIL = 'B',
/** @brief The ROM is designed for China (probably PAL-D). */
MARKET_CHINA = 'C',
/** @brief The ROM is designed for Germany (probably PAL). */
MARKET_GERMANY = 'D',
/** @brief The ROM is designed for USA. (probably NTSC-M) */
MARKET_USA = 'E',
/** @brief The ROM is designed for France (probably PAL). */
MARKET_FRANCE = 'F',
/** @brief The ROM is designed for Japanese and "English" languages. */
MARKET_JAPANESE_MULTI = 'A', // 1080 Snowboarding JPN is the only ROM that uses this? possibily a mistake, or the fact it also includes American English!.
/** @brief The ROM is designed for Brazil (Portuguese) language. */
MARKET_BRAZILIAN = 'B',
/** @brief The ROM is designed for Chinese language. */
MARKET_CHINESE = 'C',
/** @brief The ROM is designed for German language. */
MARKET_GERMAN = 'D',
/** @brief The ROM is designed for North American "English" language. */
MARKET_NORTH_AMERICA = 'E',
/** @brief The ROM is designed for French language. */
MARKET_FRENCH = 'F',
/** @brief The ROM is designed for a NTSC Gateway 64. */
MARKET_GATEWAY64_NTSC = 'G',
/** @brief The ROM is designed for Netherlands (probably PAL). */
MARKET_NETHERLANDS = 'H',
/** @brief The ROM is designed for Italy (probably PAL). */
MARKET_ITALY = 'I',
/** @brief The ROM is designed for Japan. (probably NTSC-J) */
MARKET_JAPAN = 'J',
/** @brief The ROM is designed for Korea. */
MARKET_KOREA = 'K',
/** @brief The ROM is designed for Dutch language. */
MARKET_DUTCH = 'H',
/** @brief The ROM is designed for Italian language. */
MARKET_ITALIAN = 'I',
/** @brief The ROM is designed for Japanese language. */
MARKET_JAPANESE = 'J',
/** @brief The ROM is designed for Korean language. */
MARKET_KOREAN = 'K',
/** @brief The ROM is designed for a PAL Gateway 64. */
MARKET_GATEWAY64_PAL = 'L',
// MARKET_UNKNOWN_M = 'M',
/** @brief The ROM is designed for Canada. */
MARKET_CANADA = 'N',
// MARKET_UNKNOWN_O = 'O',
/** @brief The ROM is designed for all PAL regions. */
MARKET_PAL_GENERIC = 'P',
// MARKET_UNKNOWN_Q = 'Q',
// MARKET_UNKNOWN_R = 'R',
/** @brief The ROM is designed for Spain (probably PAL). */
MARKET_SPAIN = 'S',
// MARKET_UNKNOWN_T = 'T',
/** @brief The ROM is designed for Australia (probably PAL). */
MARKET_AUSTRAILA = 'U',
// MARKET_UNKNOWN_V = 'V',
/** @brief The ROM is designed for Scandinavia. */
MARKET_SCANDINAVAIA = 'W',
/** @brief The ROM is designed for a PAL market (just unsure which and why). */
MARKET_PAL_X = 'X',
/** @brief The ROM is designed for a PAL market (just unsure which and why). */
MARKET_PAL_Y = 'Y',
/** @brief The ROM is designed for a PAL market (just unsure which and why). */
MARKET_PAL_Z = 'Z'
/** @brief The ROM is designed for Canada region (English and French) language. */
MARKET_CANADIAN = 'N',
/** @brief The ROM is designed for European market and languages (must at minimum include English). */
MARKET_EUROPEAN_BASIC = 'P', // Sometimes used for Australian region ROMs as well.
/** @brief The ROM is designed for Spanish language */
MARKET_SPANISH = 'S',
/** @brief The ROM is designed for Australia (English) language. */
MARKET_AUSTRALIAN = 'U',
/** @brief The ROM is designed for Scandinavian (Swedish, Norwegian, Finnish, etc.) languages. */
MARKET_SCANDINAVIAN = 'W',
/** @brief The ROM is designed for an undefined region and TBD language(s). */
MARKET_OTHER_X = 'X', // many EU ROM's, Top Gear Rally (Asia) and HSV Racing (AUS) ROM uses this.
/** @brief The ROM is designed for a European region and language(s). */
MARKET_OTHER_Y = 'Y', // many EU ROM's uses this.
/** @brief The ROM is designed for an undefined region and TBD language(s). */
MARKET_OTHER_Z = 'Z' // no known ROM's use this.
} rom_destination_market_t;

View File

@ -42,45 +42,48 @@ static char *format_rom_media_type (rom_media_type_t media_type) {
static char *format_rom_destination_market (rom_destination_market_t market_type) {
// TODO: These are all assumptions and should be corrected if required.
// From http://n64devkit.square7.ch/info/submission/pal/01-01.html
switch (market_type) {
case MARKET_ALL:
return "All";
case MARKET_BRAZIL:
return "Brazil (MPAL)";
case MARKET_CHINA:
return "China";
case MARKET_GERMANY:
return "Germany (PAL)";
case MARKET_USA:
return "USA (NTSC)";
case MARKET_FRANCE:
return "France (PAL)";
case MARKET_NETHERLANDS:
return "Netherlands (PAL)";
case MARKET_ITALY:
return "Italy (PAL)";
case MARKET_JAPAN:
return "Japan (NTSC)";
case MARKET_KOREA:
return "Korea";
case MARKET_CANADA:
return "Canada";
case MARKET_SPAIN:
return "Spain (PAL)";
case MARKET_AUSTRAILA:
return "Austraila (PAL)";
case MARKET_SCANDINAVAIA:
return "Scandinavaia";
case MARKET_JAPANESE_MULTI:
return "Japanese & English"; // 1080 Snowboarding JPN
case MARKET_BRAZILIAN:
return "Brazilian (Portuguese)";
case MARKET_CHINESE:
return "Chinese";
case MARKET_GERMAN:
return "German";
case MARKET_NORTH_AMERICA:
return "American English";
case MARKET_FRENCH:
return "French";
case MARKET_DUTCH:
return "Dutch";
case MARKET_ITALIAN:
return "Italian";
case MARKET_JAPANESE:
return "Japanese";
case MARKET_KOREAN:
return "Korean";
case MARKET_CANADIAN:
return "Canadaian (English & French)";
case MARKET_SPANISH:
return "Spanish";
case MARKET_AUSTRALIAN:
return "Australian (English)";
case MARKET_SCANDINAVIAN:
return "Scandinavian";
case MARKET_GATEWAY64_NTSC:
return "Gateway (NTSC)";
return "LodgeNet/Gateway (NTSC)";
case MARKET_GATEWAY64_PAL:
return "Gateway (PAL)";
case MARKET_PAL_GENERIC:
return "Generic (PAL)";
case MARKET_PAL_X: // FIXME: some AUS ROM's use this so not only EUR
case MARKET_PAL_Y:
case MARKET_PAL_Z:
return "Unknown (PAL)";
return "LodgeNet/Gateway (PAL)";
case MARKET_EUROPEAN_BASIC:
return "PAL (includes English)"; // Mostly EU but is used on some Australian ROMs
case MARKET_OTHER_X: // FIXME: AUS HSV Racing ROM's and Asia Top Gear Rally use this so not only EUR
return "Regional (non specific)";
case MARKET_OTHER_Y:
return "European (non specific)";
case MARKET_OTHER_Z:
return "Regional (unknown)";
default:
return "Unknown";
}