fix flags for JP Plus subversion

This commit is contained in:
Martin Michelsen
2022-07-21 14:23:47 -07:00
parent 0d57bee368
commit 309a347312
4 changed files with 59 additions and 30 deletions
+37 -10
View File
@@ -48,17 +48,44 @@ struct Client {
SAVE_ENABLED = 0x0400,
// Client requires doubly-encrypted code section in send_function_call
ENCRYPTED_SEND_FUNCTION_CALL = 0x0800,
// Client supports send_function_call but does not actually run the code
SEND_FUNCTION_CALL_CHECKSUM_ONLY = 0x1000,
// TODO: Do DCv1 and PC support send_function_call? Here we assume they don't
DEFAULT_V1 = DCV1 | NO_MESSAGE_BOX_CLOSE_CONFIRMATION | DOES_NOT_SUPPORT_SEND_FUNCTION_CALL,
DEFAULT_V2_DC = NO_MESSAGE_BOX_CLOSE_CONFIRMATION,
DEFAULT_V2_PC = NO_MESSAGE_BOX_CLOSE_CONFIRMATION | DOES_NOT_SUPPORT_SEND_FUNCTION_CALL,
DEFAULT_V3_GC = 0x0000,
DEFAULT_V3_GC_PLUS = NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | ENCRYPTED_SEND_FUNCTION_CALL,
DEFAULT_V3_GC_PLUS_NO_SFC = DEFAULT_V3_GC_PLUS | DOES_NOT_SUPPORT_SEND_FUNCTION_CALL,
DEFAULT_V3_GC_EP3 = NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | EPISODE_3 | ENCRYPTED_SEND_FUNCTION_CALL,
DEFAULT_V3_GC_EP3_NO_SFC = DEFAULT_V3_GC_EP3 | DOES_NOT_SUPPORT_SEND_FUNCTION_CALL,
DEFAULT_V4_BB = NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN | NO_MESSAGE_BOX_CLOSE_CONFIRMATION | SAVE_ENABLED,
DEFAULT_V1_DC =
DCV1 |
NO_MESSAGE_BOX_CLOSE_CONFIRMATION |
DOES_NOT_SUPPORT_SEND_FUNCTION_CALL,
DEFAULT_V2_DC =
NO_MESSAGE_BOX_CLOSE_CONFIRMATION,
DEFAULT_V2_PC =
NO_MESSAGE_BOX_CLOSE_CONFIRMATION |
SEND_FUNCTION_CALL_CHECKSUM_ONLY,
DEFAULT_V3_GC = 0,
DEFAULT_V3_GC_PLUS =
NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN |
ENCRYPTED_SEND_FUNCTION_CALL,
DEFAULT_V3_GC_PLUS_NO_SFC =
DEFAULT_V3_GC_PLUS |
DOES_NOT_SUPPORT_SEND_FUNCTION_CALL,
DEFAULT_V3_GC_EP3 =
NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN |
EPISODE_3 |
ENCRYPTED_SEND_FUNCTION_CALL,
DEFAULT_V3_GC_EP3_NO_SFC =
DEFAULT_V3_GC_EP3 |
DOES_NOT_SUPPORT_SEND_FUNCTION_CALL,
DEFAULT_V4_BB =
NO_MESSAGE_BOX_CLOSE_CONFIRMATION_AFTER_LOBBY_JOIN |
NO_MESSAGE_BOX_CLOSE_CONFIRMATION |
SAVE_ENABLED,
};
uint64_t id;
+3
View File
@@ -229,6 +229,9 @@ void send_function_call(
if (c->flags & Client::Flag::DOES_NOT_SUPPORT_SEND_FUNCTION_CALL) {
throw logic_error("client does not support function calls");
}
if (code.get() && (c->flags & Client::Flag::SEND_FUNCTION_CALL_CHECKSUM_ONLY)) {
throw logic_error("client only supports checksums in send_function_call");
}
string data;
uint32_t index = 0;
+15 -16
View File
@@ -29,24 +29,23 @@ uint16_t flags_for_version(GameVersion version, uint8_t sub_version) {
case 0x29: // PSO PC
return Client::Flag::DEFAULT_V2_PC;
case 0x30: // ???
case 0x31: // PSO Ep1&2 US10, US11, EU10, JP10
case 0x33: // PSO Ep1&2 EU50HZ
case 0x34: // PSO Ep1&2 JP11
case 0x31: // PSO Ep1&2 US v1.00, US v1.01, EU v1.00, JP v1.00
case 0x33: // PSO Ep1&2 EU 50Hz
case 0x34: // PSO Ep1&2 JP v1.01
return Client::Flag::DEFAULT_V3_GC;
// TODO: Which of these is the first version of JP PSO Plus? That version
// supports encrypted send_function_call; we should set the appropriate flag
// here.
case 0x32: // PSO Ep1&2 US12, JP12
case 0x35: // PSO Ep1&2 US12, JP12
case 0x36: // PSO Ep1&2 US12, JP12
case 0x39: // PSO Ep1&2 US12, JP12
return Client::Flag::DEFAULT_V3_GC_PLUS_NO_SFC;
case 0x40: // PSO Ep3 trial
case 0x41: // PSO Ep3 US
case 0x43: // PSO Ep3 UK
return Client::Flag::DEFAULT_V3_GC_EP3_NO_SFC;
case 0x42: // PSO Ep3 JP
case 0x35: // PSO Ep1&2 JP Plus (1.04)
return Client::Flag::DEFAULT_V3_GC_PLUS;
// TODO: Figure out which of the below is which and update the comments
case 0x32: // PSO Ep1&2 US v1.02, JP v1.02
case 0x36: // PSO Ep1&2 US v1.02, JP v1.02
case 0x39: // PSO Ep1&2 US v1.02, JP v1.02
return Client::Flag::DEFAULT_V3_GC_PLUS_NO_SFC;
case 0x42: // PSO Ep3 JP
return Client::Flag::DEFAULT_V3_GC_EP3;
case 0x40: // PSO Ep3 trial (TODO: Does this support send_function_call?)
case 0x41: // PSO Ep3 US
case 0x43: // PSO Ep3 EU
return Client::Flag::DEFAULT_V3_GC_EP3_NO_SFC;
}
return 0;
}
+4 -4
View File
@@ -128,7 +128,7 @@ I 80820 2022-07-07 23:34:04 - [Commands] Received from C-2 (version=PC command=9
0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 80820 2022-07-07 23:34:04 - [Commands] Sending to C-2 (version=PC command=04 flag=00)
0000000000000000 | 2C 00 04 00 00 00 01 00 78 62 F8 10 39 98 AC 82 | , xb 9
0000000000000010 | 0E 89 2A 49 04 02 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000010 | 0E 89 2A 49 04 10 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000020 | FF FF FF FF FF FF FF FF FF FF FF FF |
I 80820 2022-07-07 23:34:04 - [Commands] Sending to C-2 (version=PC command=07 flag=05)
0000000000000000 | 0C 01 07 05 11 00 00 11 FF FF FF FF 04 00 41 00 | A
@@ -161,7 +161,7 @@ I 80820 2022-07-07 23:34:09 - [Commands] Sending to C-2 (version=PC command=97 f
0000000000000000 | 04 00 97 01 |
I 80820 2022-07-07 23:34:09 - [Commands] Sending to C-2 (version=PC command=04 flag=00)
0000000000000000 | 2C 00 04 00 00 00 01 00 78 62 F8 10 39 98 AC 82 | , xb 9
0000000000000010 | 0E 89 2A 49 04 06 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000010 | 0E 89 2A 49 04 14 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000020 | FF FF FF FF FF FF FF FF FF FF FF FF |
I 80820 2022-07-07 23:34:10 - [Commands] Received from C-2 (version=PC command=B1 flag=00)
0000000000000000 | 04 00 B1 00 |
@@ -208,7 +208,7 @@ I 80820 2022-07-07 23:34:10 - [Commands] Received from C-3 (version=PC command=9
00000000000000C0 | 65 61 00 00 00 00 00 00 00 00 00 00 | ea
I 80820 2022-07-07 23:34:10 - [Commands] Sending to C-3 (version=PC command=04 flag=00)
0000000000000000 | 2C 00 04 00 00 00 01 00 78 62 F8 10 39 98 AC 82 | , xb 9
0000000000000010 | 0E 89 2A 49 04 02 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000010 | 0E 89 2A 49 04 10 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000020 | FF FF FF FF FF FF FF FF FF FF FF FF |
I 80820 2022-07-07 23:34:10 - [Commands] Sending to C-3 (version=PC command=83 flag=0F)
0000000000000000 | B8 00 83 0F 33 00 00 33 01 00 00 00 00 00 00 00 | 3 3
@@ -2130,7 +2130,7 @@ I 80820 2022-07-07 23:37:10 - [Commands] Received from C-4 (version=PC command=9
0000000000000140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
I 80820 2022-07-07 23:37:10 - [Commands] Sending to C-4 (version=PC command=04 flag=00)
0000000000000000 | 2C 00 04 00 00 00 01 00 78 62 F8 10 39 98 AC 82 | , xb 9
0000000000000010 | 0E 89 2A 49 04 02 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000010 | 0E 89 2A 49 04 10 00 00 00 00 00 00 FF FF FF FF | *I
0000000000000020 | FF FF FF FF FF FF FF FF FF FF FF FF |
I 80820 2022-07-07 23:37:10 - [Commands] Sending to C-4 (version=PC command=07 flag=05)
0000000000000000 | 0C 01 07 05 11 00 00 11 FF FF FF FF 04 00 41 00 | A