fix flags for JP Plus subversion
This commit is contained in:
+37
-10
@@ -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;
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user