refine option_flags notes
This commit is contained in:
+9
-9
@@ -1281,15 +1281,15 @@ string bc0_decompress(const void* data, size_t size) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Control bit 0 means to perform a backreference copy. The offset and
|
|
||||||
// size are stored in two bytes in the input stream, laid out as follows:
|
|
||||||
// a1 = 0bBBBBBBBB
|
|
||||||
// a2 = 0bAAAACCCC
|
|
||||||
// The offset is the concatenation of bits AAAABBBBBBBB, which refers to a
|
|
||||||
// position in the memo; the number of bytes to copy is (CCCC + 3). The
|
|
||||||
// decompressor copies that many bytes from that offset in the memo, and
|
|
||||||
// writes them to the output and to the current position in the memo.
|
|
||||||
if ((control_stream_bits & 1) == 0) {
|
if ((control_stream_bits & 1) == 0) {
|
||||||
|
// Control bit 0 means to perform a backreference copy. The offset and
|
||||||
|
// size are stored in two bytes in the input stream, laid out as follows:
|
||||||
|
// a1 = 0bBBBBBBBB
|
||||||
|
// a2 = 0bAAAACCCC
|
||||||
|
// The offset is the concatenation of bits AAAABBBBBBBB, which refers to
|
||||||
|
// a position in the memo; the number of bytes to copy is (CCCC + 3). The
|
||||||
|
// decompressor copies that many bytes from that offset in the memo, and
|
||||||
|
// writes them to the output and to the current position in the memo.
|
||||||
uint8_t a1 = r.get_u8();
|
uint8_t a1 = r.get_u8();
|
||||||
if (r.eof()) {
|
if (r.eof()) {
|
||||||
break;
|
break;
|
||||||
@@ -1304,9 +1304,9 @@ string bc0_decompress(const void* data, size_t size) {
|
|||||||
memo_offset = (memo_offset + 1) & 0x0FFF;
|
memo_offset = (memo_offset + 1) & 0x0FFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
// Control bit 1 means to write a byte directly from the input to the
|
// Control bit 1 means to write a byte directly from the input to the
|
||||||
// output. As above, the byte is also written to the memo.
|
// output. As above, the byte is also written to the memo.
|
||||||
} else {
|
|
||||||
uint8_t v = r.get_u8();
|
uint8_t v = r.get_u8();
|
||||||
w.put_u8(v);
|
w.put_u8(v);
|
||||||
memo[memo_offset] = v;
|
memo[memo_offset] = v;
|
||||||
|
|||||||
+4
-3
@@ -1053,7 +1053,7 @@ static const QuestScriptOpcodeDefinition opcode_defs[] = {
|
|||||||
// 15: Wave but not room cleared (set event triggered by another set)
|
// 15: Wave but not room cleared (set event triggered by another set)
|
||||||
// 16: NPC casting Resta or Anti
|
// 16: NPC casting Resta or Anti
|
||||||
// 17: NPC casting Foie, Zonde, or Barta
|
// 17: NPC casting Foie, Zonde, or Barta
|
||||||
// 18: NPC regained sight of player
|
// 18: NPC regained sight of player (not valid on 11/2000)
|
||||||
// strB = string for NPC to say (up to 52 characters)
|
// strB = string for NPC to say (up to 52 characters)
|
||||||
{0xC1, "npc_text", nullptr, {INT32, CSTRING}, F_V05_V4 | F_ARGS},
|
{0xC1, "npc_text", nullptr, {INT32, CSTRING}, F_V05_V4 | F_ARGS},
|
||||||
|
|
||||||
@@ -1064,8 +1064,9 @@ static const QuestScriptOpcodeDefinition opcode_defs[] = {
|
|||||||
// Disables PK mode (battle mode) for a specific player. Sends 6x1C.
|
// Disables PK mode (battle mode) for a specific player. Sends 6x1C.
|
||||||
{0xC3, "pl_pkoff", nullptr, {}, F_V05_V4},
|
{0xC3, "pl_pkoff", nullptr, {}, F_V05_V4},
|
||||||
|
|
||||||
// Specifies which area should be used for a specific floor, and how
|
// Specifies how objects and enemies should be populated for a floor. On
|
||||||
// objects and enemies should be populated on that floor.
|
// v2, the ability to reassign areas was added, which can be done with
|
||||||
|
// map_designate_ex (F80D).
|
||||||
// regsA[0] = floor number
|
// regsA[0] = floor number
|
||||||
// regsA[1] = type (0: use layout, 1: use offline template, 2: use online
|
// regsA[1] = type (0: use layout, 1: use offline template, 2: use online
|
||||||
// template, 3: nothing)
|
// template, 3: nothing)
|
||||||
|
|||||||
+15
-10
@@ -529,6 +529,7 @@ struct PSOGCCharacterFile {
|
|||||||
// ItemPMT.prs, itemrt.gsl, itempt.gsl, and PlyLevelTbl.cpt). For files
|
// ItemPMT.prs, itemrt.gsl, itempt.gsl, and PlyLevelTbl.cpt). For files
|
||||||
// larger than 1000000 bytes (decimal), the game only checks the file's
|
// larger than 1000000 bytes (decimal), the game only checks the file's
|
||||||
// size and skips checksumming its contents.
|
// size and skips checksumming its contents.
|
||||||
|
// It seems that v3 and BB only use flag 00000001 and ignore the rest.
|
||||||
/* 041C:0000 */ be_uint32_t validation_flags = 0;
|
/* 041C:0000 */ be_uint32_t validation_flags = 0;
|
||||||
/* 0420:0004 */ be_uint32_t creation_timestamp = 0;
|
/* 0420:0004 */ be_uint32_t creation_timestamp = 0;
|
||||||
// The signature field holds the value 0xA205B064, which is 2718281828 in
|
// The signature field holds the value 0xA205B064, which is 2718281828 in
|
||||||
@@ -539,21 +540,25 @@ struct PSOGCCharacterFile {
|
|||||||
/* 0428:000C */ be_uint32_t play_time_seconds = 0;
|
/* 0428:000C */ be_uint32_t play_time_seconds = 0;
|
||||||
// This field is a collection of several flags and small values. The known
|
// This field is a collection of several flags and small values. The known
|
||||||
// fields are:
|
// fields are:
|
||||||
// ------zA BCDEFG-- HHHIIIJJ KLMNOPQR
|
// ------AB -----CDD EEEFFFGG HIJKLMNO
|
||||||
// z = Function key setting (BB; 0 = menu shortcuts; 1 = chat shortcuts).
|
// A = Function key setting (BB; 0 = menu shortcuts; 1 = chat shortcuts).
|
||||||
// This bit is unused by PSO GC.
|
// This bit is unused by PSO GC.
|
||||||
// A = Keyboard controls (BB; 0 = on; 1 = off). This field is also used
|
// B = Keyboard controls (BB; 0 = on; 1 = off). This field is also used
|
||||||
// by PSO GC, but its function is currently unknown.
|
// by PSO GC, but its function is currently unknown.
|
||||||
// G = Choice search setting (0 = enabled; 1 = disabled)
|
// C = Choice search setting (0 = enabled; 1 = disabled)
|
||||||
// H = Player lobby labels (0 = name; 1 = name, language, and level;
|
// D = Which pane of the shortcut menu was last used
|
||||||
|
// E = Player lobby labels (0 = name; 1 = name, language, and level;
|
||||||
// 2 = W/D counts; 3 = challenge rank; 4 = nothing)
|
// 2 = W/D counts; 3 = challenge rank; 4 = nothing)
|
||||||
// I = Idle disconnect time (0 = 15 mins; 1 = 30 mins; 2 = 45 mins;
|
// F = Idle disconnect time (0 = 15 mins; 1 = 30 mins; 2 = 45 mins;
|
||||||
// 3 = 60 mins; 4: never; 5-7: undefined behavior due to a missing
|
// 3 = 60 mins; 4: never; 5-7: undefined behavior due to a missing
|
||||||
// bounds check).
|
// bounds check).
|
||||||
// J = Message speed (0 = slow; 1 = normal; 2 = fast; 3 = very fast)
|
// G = Message speed (0 = slow; 1 = normal; 2 = fast; 3 = very fast)
|
||||||
// P = Cursor position (0 = saved; 1 = non-saved)
|
// H, I, J, K = unknown; these appear to be used only during Japanese
|
||||||
// Q = Button config (0 = normal; 1 = L/R reversed)
|
// text input. See TWindowKeyBoardBase_read_option_flags
|
||||||
// R = Map direction (0 = non-fixed; 1 = fixed)
|
// L = Rumble enabled
|
||||||
|
// M = Cursor position (0 = saved; 1 = non-saved)
|
||||||
|
// N = Button config (0 = normal; 1 = L/R reversed)
|
||||||
|
// O = Map direction (0 = non-fixed; 1 = fixed)
|
||||||
/* 042C:0010 */ be_uint32_t option_flags = 0x00040058;
|
/* 042C:0010 */ be_uint32_t option_flags = 0x00040058;
|
||||||
/* 0430:0014 */ be_uint32_t save_count = 1;
|
/* 0430:0014 */ be_uint32_t save_count = 1;
|
||||||
/* 0434:0018 */ pstring<TextEncoding::ASCII, 0x1C> ppp_username;
|
/* 0434:0018 */ pstring<TextEncoding::ASCII, 0x1C> ppp_username;
|
||||||
|
|||||||
Reference in New Issue
Block a user