switch back to original GC versioning convention

This commit is contained in:
Martin Michelsen
2024-01-30 13:57:46 -08:00
parent 34f05e5162
commit 5e2cc6f07f
9 changed files with 31 additions and 29 deletions
+6 -6
View File
@@ -91,9 +91,9 @@ void Client::Config::set_flags_for_version(Version version, int64_t sub_version)
this->set_flag(Flag::SEND_FUNCTION_CALL_CHECKSUM_ONLY);
this->set_flag(Flag::SEND_FUNCTION_CALL_NO_CACHE_PATCH);
break;
case 0x30: // GC Ep1&2 GameJam demo, GC Ep1&2 Trial Edition, GC Ep1&2 JP v1.02, at least one version of XB
case 0x31: // GC Ep1&2 US v1.00, GC US v1.01, XB US
case 0x34: // GC Ep1&2 JP v1.03
case 0x30: // GC Ep1&2 GameJam demo, GC Ep1&2 Trial Edition, GC Ep1&2 JP v1.2, at least one version of XB
case 0x31: // GC Ep1&2 US v1.0, GC US v1.1, XB US
case 0x34: // GC Ep1&2 JP v1.3
// In the case of GC Trial Edition, the IS_GC_TRIAL_EDITION flag is
// already set when we get here (because the client has used V2 encryption
// instead of V3)
@@ -102,13 +102,13 @@ void Client::Config::set_flags_for_version(Version version, int64_t sub_version)
case 0x33: // GC Ep1&2 EU 60Hz
this->set_flag(Flag::NO_D6_AFTER_LOBBY);
break;
case 0x35: // GC Ep1&2 JP v1.04 (Plus)
case 0x35: // GC Ep1&2 JP v1.4 (Plus)
this->set_flag(Flag::NO_D6_AFTER_LOBBY);
this->set_flag(Flag::ENCRYPTED_SEND_FUNCTION_CALL);
this->set_flag(Flag::SEND_FUNCTION_CALL_NO_CACHE_PATCH);
break;
case 0x36: // GC Ep1&2 US v1.02 (Plus)
case 0x39: // GC Ep1&2 JP v1.05 (Plus)
case 0x36: // GC Ep1&2 US v1.2 (Plus)
case 0x39: // GC Ep1&2 JP v1.5 (Plus)
this->set_flag(Flag::NO_D6_AFTER_LOBBY);
this->set_flag(Flag::NO_SEND_FUNCTION_CALL);
break;
+6 -6
View File
@@ -2168,10 +2168,10 @@ struct S_ServerTime_B1 {
// resulting B3 command is always 0. The checksum functionality does work on PSO
// PC, just like the other versions.
// This command doesn't work on some PSO GC versions, namely the later JP PSO
// Plus (v1.05), US PSO Plus (v1.02), or US/EU Episode 3. Sega presumably
// removed it after taking heat from Nintendo about enabling homebrew on the
// GameCube. On the earlier JP PSO Plus (v1.04) and JP Episode 3, this command
// is implemented as described here, with some additional compression and
// Plus (v1.5), US PSO Plus (v1.2), or US/EU Episode 3. Sega presumably removed
// it after taking heat from Nintendo about enabling homebrew on the GameCube.
// On the earlier JP PSO Plus (v1.4) and JP Episode 3, this command is
// implemented as described here, with some additional compression and
// encryption steps added, similarly to how download quests are encoded. See
// send_function_call in SendCommands.cc for more details on how this works.
@@ -2656,8 +2656,8 @@ struct SC_TradeItems_D0_D3 { // D0 when sent by client, D3 when sent by server
// D6 (C->S): Large message box closed (V3)
// No arguments
// DC, PC, and BB do not send this command at all. GC US v1.00 and v1.01 will
// send this command when any large message box (1A/D5) is closed; GC Plus and
// DC, PC, and BB do not send this command at all. GC US v1.0 and v1.1 will send
// this command when any large message box (1A/D5) is closed; GC Plus and
// Episode 3 will send D6 only for large message boxes that occur before the
// client has joined a lobby. (After joining a lobby, large message boxes will
// still be displayed if sent by the server, but the client won't send a D6 when
+1 -1
View File
@@ -1326,7 +1326,7 @@ Action a_assemble_all_patches(
assemble-all-patches\n\
Assemble all patches in the system/client-functions directory, and produce\n\
two compiled .bin files for each patch (one unencrypted, for most PSO\n\
versions, and one encrypted, for PSO GC JP v1.04, JP Ep3, and Ep3 Trial\n\
versions, and one encrypted, for PSO GC JP v1.4, JP Ep3, and Ep3 Trial\n\
Edition). The output files are saved in system/client-functions.\n",
+[](Arguments&) {
ServerState s;
+6 -6
View File
@@ -213,17 +213,17 @@ uint32_t default_specific_version_for_version(Version version, int64_t sub_versi
case 0x32: // GC Ep1&2 EU 50Hz
case 0x33: // GC Ep1&2 EU 60Hz
return 0x334F5030; // 3OP0
case 0x36: // GC Ep1&2 US v1.02 (Plus)
case 0x36: // GC Ep1&2 US v1.2 (Plus)
return 0x334F4532; // 3OE2
case 0x39: // GC Ep1&2 JP v1.05 (Plus)
case 0x39: // GC Ep1&2 JP v1.5 (Plus)
return 0x334F4A35; // 3OJ5
case 0x34: // GC Ep1&2 JP v1.03
case 0x34: // GC Ep1&2 JP v1.3
return 0x334F4A33; // 3OJ3
case 0x35: // GC Ep1&2 JP v1.04 (Plus)
case 0x35: // GC Ep1&2 JP v1.4 (Plus)
return 0x334F4A34; // 3OJ4
case -1: // Initial check (before sub_version recognition)
case 0x30: // GC Ep1&2 GameJam demo, GC Ep1&2 Trial Edition, GC Ep1&2 JP v1.02, at least one version of PSO XB
case 0x31: // GC Ep1&2 US v1.00, GC US v1.01, XB US
case 0x30: // GC Ep1&2 GameJam demo, GC Ep1&2 Trial Edition, GC Ep1&2 JP v1.2, at least one version of PSO XB
case 0x31: // GC Ep1&2 US v1.0, GC US v1.1, XB US
default:
return 0x33000000;
}