rewrite quest disassembler for better consistency with assembler

This commit is contained in:
Martin Michelsen
2025-11-25 23:27:34 -08:00
parent 9d42f849c5
commit a783177420
9 changed files with 521 additions and 456 deletions
+86 -3
View File
@@ -1692,10 +1692,11 @@ Action a_disassemble_set_data_table(
Action a_assemble_quest_script( Action a_assemble_quest_script(
"assemble-quest-script", "\ "assemble-quest-script", "\
assemble-quest-script [INPUT-FILENAME [OUTPUT-FILENAME]]\n\ assemble-quest-script [OPTIONS] [INPUT-FILENAME [OUTPUT-FILENAME]]\n\
Assemble the input quest script (.txt file) into a compressed .bin file\n\ Assemble the input quest script (.txt file) into a compressed .bin file\n\
usable as an online quest script. If --decompressed is given, produces an\n\ usable as an online quest script. If --decompressed is given, produces an\n\
uncompressed .bind file instead.\n", uncompressed .bind file instead. If --disable-strict is given, allows some\n\
invalid behaviors (e.g. calling an undefined label by number).",
+[](phosg::Arguments& args) { +[](phosg::Arguments& args) {
string text = read_input_data(args); string text = read_input_data(args);
@@ -1707,7 +1708,8 @@ Action a_assemble_quest_script(
auto result = assemble_quest_script( auto result = assemble_quest_script(
text, text,
{include_dir, "system/quests/includes"}, {include_dir, "system/quests/includes"},
{include_dir, "system/quests/includes", "system/client-functions/System"}); {include_dir, "system/quests/includes", "system/client-functions/System"},
!args.get<bool>("disable-strict"));
string result_data = std::move(result.data); string result_data = std::move(result.data);
bool compress = !args.get<bool>("decompressed"); bool compress = !args.get<bool>("decompressed");
if (compress) { if (compress) {
@@ -3135,6 +3137,87 @@ Action a_check_quests(
phosg::fwrite_fmt(stdout, "All quests indexed\n"); phosg::fwrite_fmt(stdout, "All quests indexed\n");
}); });
Action a_check_quest_reassembly(
"check-quest-reassembly", nullptr,
+[](phosg::Arguments& args) {
auto s = make_shared<ServerState>(get_config_filename(args));
s->is_debug = true;
s->load_config_early();
s->clear_file_caches();
s->load_patch_indexes();
s->load_set_data_tables();
s->load_maps();
s->load_quest_index(true);
for (const auto& [_, q] : s->quest_index->quests_by_number) {
for (const auto& [_, vq] : q->versions) {
auto decompressed_bin = prs_decompress(*vq->bin_contents);
auto disassembled = disassemble_quest_script(decompressed_bin.data(), decompressed_bin.size(), vq->version, vq->language, vq->map_file, false, false);
auto reassembly = disassemble_quest_script(decompressed_bin.data(), decompressed_bin.size(), vq->version, vq->language, vq->map_file, true, false);
string include_dir = phosg::dirname(vq->bin_filename());
AssembledQuestScript assembled;
try {
assembled = assemble_quest_script(
reassembly,
{"system/quests/includes"},
{"system/quests/includes", "system/client-functions/System"},
false);
if (assembled.data != decompressed_bin) {
throw std::runtime_error("Reassembled quest script does not match original");
}
if (assembled.quest_number != vq->meta.quest_number) {
throw std::runtime_error(std::format("Reassembled quest number {} does not match original ({})",
assembled.quest_number, vq->meta.quest_number));
}
if (assembled.version != vq->version) {
throw std::runtime_error(std::format("Reassembled quest version {} does not match original ({})",
phosg::name_for_enum(assembled.version), phosg::name_for_enum(vq->version)));
}
if (assembled.language != vq->language) {
throw std::runtime_error(std::format("Reassembled quest language {} does not match original ({})",
name_for_language(assembled.language), name_for_language(vq->language)));
}
if (assembled.episode != vq->meta.episode) {
throw std::runtime_error(std::format("Reassembled quest episode {} does not match original ({})",
name_for_episode(assembled.episode), name_for_episode(vq->meta.episode)));
}
if (assembled.joinable != vq->meta.joinable) {
throw std::runtime_error(std::format("Reassembled quest joinable {} does not match original ({})",
assembled.joinable, vq->meta.joinable));
}
if (assembled.max_players != vq->meta.max_players) {
throw std::runtime_error(std::format("Reassembled quest max_players {} does not match original ({})",
assembled.max_players, vq->meta.max_players));
}
if (assembled.name != vq->meta.name) {
throw std::runtime_error(std::format("Reassembled quest name \"{}\" does not match original (\"{}\")",
assembled.name, vq->meta.name));
}
if (assembled.short_description != vq->meta.short_description) {
throw std::runtime_error(std::format("Reassembled quest short description \"{}\" does not match original (\"{}\")",
assembled.short_description, vq->meta.short_description));
}
if (assembled.long_description != vq->meta.long_description) {
throw std::runtime_error(std::format("Reassembled quest long description \"{}\" does not match original (\"{}\")",
assembled.long_description, vq->meta.long_description));
}
} catch (const std::exception& e) {
phosg::log_error_f("================ DISASSEMBLY:");
phosg::fwritex(stderr, disassembled);
phosg::log_error_f("================ REASSEMBLY:");
phosg::fwritex(stderr, reassembly);
if (!assembled.data.empty()) {
phosg::log_error_f("================ BINDIFF:");
phosg::print_binary_diff(stderr, decompressed_bin.data(), decompressed_bin.size(), assembled.data.data(), assembled.data.size(), isatty(fileno(stderr)), 3, 0);
}
phosg::log_info_f("... {} {} {} ({}) FAILED", phosg::name_for_enum(vq->version), name_for_language(vq->language), vq->bin_filename(), vq->meta.name);
throw;
}
phosg::log_info_f("... {} {} {} ({}) OK", phosg::name_for_enum(vq->version), name_for_language(vq->language), vq->bin_filename(), vq->meta.name);
}
}
});
Action a_check_ep3_maps( Action a_check_ep3_maps(
"check-ep3-maps", nullptr, "check-ep3-maps", nullptr,
+[](phosg::Arguments& args) { +[](phosg::Arguments& args) {
+9 -2
View File
@@ -21,12 +21,14 @@ struct QuestMetadata {
// versions of the quest, except for the name and description strings. This // versions of the quest, except for the name and description strings. This
// is used in both the Quest and VersionedQuest structures; in Quest, the // is used in both the Quest and VersionedQuest structures; in Quest, the
// name and description are used only internally. // name and description are used only internally.
// Fields that must match across all quest versions
uint32_t category_id = 0xFFFFFFFF; uint32_t category_id = 0xFFFFFFFF;
uint32_t quest_number = 0xFFFFFFFF; uint32_t quest_number = 0xFFFFFFFF;
Episode episode = Episode::NONE; Episode episode = Episode::NONE;
std::array<uint8_t, 0x12> area_for_floor; std::array<uint8_t, 0x12> area_for_floor;
bool joinable = false; bool joinable = false;
uint8_t max_players = 0x00; uint8_t max_players = 4;
std::shared_ptr<const BattleRules> battle_rules; std::shared_ptr<const BattleRules> battle_rules;
ssize_t challenge_template_index = -1; ssize_t challenge_template_index = -1;
float challenge_exp_multiplier = -1.0f; float challenge_exp_multiplier = -1.0f;
@@ -44,7 +46,8 @@ struct QuestMetadata {
int16_t lock_status_register = -1; int16_t lock_status_register = -1;
std::unordered_map<uint32_t, uint32_t> enemy_exp_overrides; std::unordered_map<uint32_t, uint32_t> enemy_exp_overrides;
// Item create allowances (only used on BB) // Extra header fields (only used on BB)
std::shared_ptr<parray<uint8_t, 0x94>> bb_unknown_a5;
struct CreateItemMask { struct CreateItemMask {
struct Range { struct Range {
uint8_t min = 0x00; uint8_t min = 0x00;
@@ -71,9 +74,13 @@ struct QuestMetadata {
}; };
std::vector<CreateItemMask> create_item_mask_entries; std::vector<CreateItemMask> create_item_mask_entries;
// Fields that may be different across quest versions (and are only used on VersionedQuest, not Quest)
std::string name; std::string name;
std::string short_description; std::string short_description;
std::string long_description; std::string long_description;
size_t text_offset;
size_t label_table_offset;
Language language;
static std::unordered_map<uint32_t, uint32_t> parse_enemy_exp_overrides(const phosg::JSON& json); static std::unordered_map<uint32_t, uint32_t> parse_enemy_exp_overrides(const phosg::JSON& json);
static inline uint32_t exp_override_key(Difficulty difficulty, uint8_t floor, EnemyType enemy_type) { static inline uint32_t exp_override_key(Difficulty difficulty, uint8_t floor, EnemyType enemy_type) {
+140 -166
View File
@@ -62,15 +62,6 @@ using AttackData = BattleParamsIndex::AttackData;
using ResistData = BattleParamsIndex::ResistData; using ResistData = BattleParamsIndex::ResistData;
using MovementData = BattleParamsIndex::MovementData; using MovementData = BattleParamsIndex::MovementData;
static const char* name_for_header_episode_number(uint8_t episode) {
static const array<const char*, 3> names = {"Episode1", "Episode2", "Episode4"};
try {
return names.at(episode);
} catch (const out_of_range&) {
return "Episode1 # invalid value in header";
}
}
static TextEncoding encoding_for_language(Language language) { static TextEncoding encoding_for_language(Language language) {
return ((language == Language::JAPANESE) ? TextEncoding::SJIS : TextEncoding::ISO8859); return ((language == Language::JAPANESE) ? TextEncoding::SJIS : TextEncoding::ISO8859);
} }
@@ -2983,9 +2974,10 @@ CreateItemMaskEntry::CreateItemMaskEntry(const QuestMetadata::CreateItemMask& ma
} else if (r.min == 0x00 && r.max == 0xFF) { } else if (r.min == 0x00 && r.max == 0xFF) {
this->data1_fields[z] = -1; this->data1_fields[z] = -1;
} else { } else {
this->data1_fields[z] = (r.min * 1000000) + (r.max * 1000); this->data1_fields[z] = 1000000 + (r.max * 1000) + r.min;
} }
} }
this->present = this->is_valid();
} }
CreateItemMaskEntry::operator QuestMetadata::CreateItemMask() const { CreateItemMaskEntry::operator QuestMetadata::CreateItemMask() const {
@@ -3036,102 +3028,59 @@ std::string disassemble_quest_script(
// Phase 0: Parse the header and generate the metadata section // Phase 0: Parse the header and generate the metadata section
bool use_wstrs = false; QuestMetadata meta;
size_t code_offset = 0; populate_quest_metadata_from_script(meta, bin_data, bin_size, version, language);
size_t label_table_offset = 0;
switch (version) { switch (version) {
case Version::DC_NTE: { case Version::DC_NTE:
const auto& header = r.get<PSOQuestHeaderDCNTE>(); lines.emplace_back(".name " + escape_string(meta.name));
code_offset = header.code_offset;
label_table_offset = header.label_table_offset;
language = Language::JAPANESE;
lines.emplace_back(".name " + escape_string(header.name.decode(Language::JAPANESE)));
break; break;
}
case Version::DC_11_2000: case Version::DC_11_2000:
case Version::DC_V1: case Version::DC_V1:
case Version::DC_V2: { case Version::DC_V2:
const auto& header = r.get<PSOQuestHeaderDC>(); lines.emplace_back(std::format(".quest_num {}", meta.quest_number));
code_offset = header.code_offset; lines.emplace_back(std::format(".language {}", char_for_language(meta.language)));
label_table_offset = header.label_table_offset; lines.emplace_back(".name " + escape_string(meta.name));
if (language == Language::UNKNOWN) { lines.emplace_back(".short_desc " + escape_string(meta.short_description));
language = (static_cast<size_t>(header.language) < 5) ? header.language : Language::ENGLISH; lines.emplace_back(".long_desc " + escape_string(meta.long_description));
}
lines.emplace_back(std::format(".quest_num {}", header.quest_number));
lines.emplace_back(std::format(".language {}", char_for_language(header.language)));
lines.emplace_back(".name " + escape_string(header.name.decode(language)));
lines.emplace_back(".short_desc " + escape_string(header.short_description.decode(language)));
lines.emplace_back(".long_desc " + escape_string(header.long_description.decode(language)));
break; break;
}
case Version::PC_NTE: case Version::PC_NTE:
case Version::PC_V2: { case Version::PC_V2:
use_wstrs = true; lines.emplace_back(std::format(".quest_num {}", meta.quest_number));
const auto& header = r.get<PSOQuestHeaderPC>(); lines.emplace_back(std::format(".language {}", char_for_language(meta.language)));
code_offset = header.code_offset; lines.emplace_back(".name " + escape_string(meta.name));
label_table_offset = header.label_table_offset; lines.emplace_back(".short_desc " + escape_string(meta.short_description));
if (language == Language::UNKNOWN) { lines.emplace_back(".long_desc " + escape_string(meta.long_description));
language = (static_cast<size_t>(header.language) < 8) ? header.language : Language::ENGLISH;
}
lines.emplace_back(std::format(".quest_num {}", header.quest_number));
lines.emplace_back(std::format(".language {}", char_for_language(header.language)));
lines.emplace_back(".name " + escape_string(header.name.decode(language)));
lines.emplace_back(".short_desc " + escape_string(header.short_description.decode(language)));
lines.emplace_back(".long_desc " + escape_string(header.long_description.decode(language)));
break; break;
}
case Version::GC_NTE: case Version::GC_NTE:
case Version::GC_V3: case Version::GC_V3:
case Version::GC_EP3_NTE: case Version::GC_EP3_NTE:
case Version::GC_EP3: case Version::GC_EP3:
case Version::XB_V3: { case Version::XB_V3:
const auto& header = r.get<PSOQuestHeaderGC>(); lines.emplace_back(std::format(".quest_num {}", meta.quest_number));
code_offset = header.code_offset; lines.emplace_back(std::format(".episode {}", token_name_for_episode(meta.episode)));
label_table_offset = header.label_table_offset; lines.emplace_back(std::format(".language {}", char_for_language(meta.language)));
if (language == Language::UNKNOWN) { lines.emplace_back(".name " + escape_string(meta.name));
language = (static_cast<size_t>(header.language) < 5) ? header.language : Language::ENGLISH; lines.emplace_back(".short_desc " + escape_string(meta.short_description));
} lines.emplace_back(".long_desc " + escape_string(meta.long_description));
lines.emplace_back(std::format(".quest_num {}", header.quest_number));
lines.emplace_back(std::format(".language {}", char_for_language(header.language)));
lines.emplace_back(".name " + escape_string(header.name.decode(language)));
lines.emplace_back(".short_desc " + escape_string(header.short_description.decode(language)));
lines.emplace_back(".long_desc " + escape_string(header.long_description.decode(language)));
break; break;
} case Version::BB_V4:
case Version::BB_V4: { lines.emplace_back(std::format(".quest_num {}", meta.quest_number));
use_wstrs = true; lines.emplace_back(std::format(".episode {}", token_name_for_episode(meta.episode)));
const auto& header = r.get<PSOQuestHeaderBBBase>(); lines.emplace_back(std::format(".language {}", char_for_language(meta.language)));
code_offset = header.code_offset; lines.emplace_back(std::format(".max_players {}", meta.max_players));
label_table_offset = header.label_table_offset; if (meta.joinable) {
if (language == Language::UNKNOWN) {
language = Language::ENGLISH;
}
lines.emplace_back(std::format(".quest_num {}", header.quest_number));
lines.emplace_back(std::format(".episode {}", name_for_header_episode_number(header.episode)));
lines.emplace_back(std::format(".max_players {}", header.max_players ? header.max_players : 4));
if (header.joinable) {
lines.emplace_back(".joinable"); lines.emplace_back(".joinable");
} }
lines.emplace_back(std::format(".name {}", escape_string(header.name.decode(language)))); lines.emplace_back(std::format(".name {}", escape_string(meta.name)));
lines.emplace_back(std::format(".short_desc {}", escape_string(header.short_description.decode(language)))); lines.emplace_back(std::format(".short_desc {}", escape_string(meta.short_description)));
lines.emplace_back(std::format(".long_desc {}", escape_string(header.long_description.decode(language)))); lines.emplace_back(std::format(".long_desc {}", escape_string(meta.long_description)));
// Quests saved with Qedit may not have the full header, so only parse if (meta.bb_unknown_a5) {
// the full header if the code and function table offsets don't point to lines.emplace_back(std::format(".bb_unknown_a5 {}", phosg::format_data_string(meta.bb_unknown_a5->data(), meta.bb_unknown_a5->size())));
// space within it }
if ((header.code_offset >= sizeof(PSOQuestHeaderBB)) && (header.label_table_offset >= sizeof(PSOQuestHeaderBB))) { for (const auto& mask : meta.create_item_mask_entries) {
r.go(0); lines.emplace_back(std::format(".allow_create_item {}", mask.str()));
const auto& header = r.get<PSOQuestHeaderBB>();
for (size_t z = 0; z < header.create_item_mask_entries.size(); z++) {
const auto& qh_mask = header.create_item_mask_entries[z];
if (!qh_mask.is_valid()) {
break;
}
QuestMetadata::CreateItemMask qm_mask = qh_mask;
lines.emplace_back(std::format(".allow_create_item {}", qm_mask.str()));
}
} }
break; break;
}
default: default:
throw logic_error("invalid quest version"); throw logic_error("invalid quest version");
} }
@@ -3140,12 +3089,12 @@ std::string disassemble_quest_script(
// Phase 1: Parse label table // Phase 1: Parse label table
phosg::StringReader text_r, label_table_r; phosg::StringReader text_r, label_table_r;
if (code_offset < label_table_offset) { if (meta.text_offset < meta.label_table_offset) {
text_r = r.sub(code_offset, label_table_offset - code_offset); text_r = r.sub(meta.text_offset, meta.label_table_offset - meta.text_offset);
label_table_r = r.sub(label_table_offset); label_table_r = r.sub(meta.label_table_offset);
} else { } else {
text_r = r.sub(code_offset); text_r = r.sub(meta.text_offset);
label_table_r = r.sub(label_table_offset, code_offset - label_table_offset); label_table_r = r.sub(meta.label_table_offset, meta.text_offset - meta.label_table_offset);
} }
struct Label { struct Label {
@@ -3335,7 +3284,7 @@ std::string disassemble_quest_script(
string formatted; string formatted;
size_t extra_zero_bytes; size_t extra_zero_bytes;
if (use_wstrs) { if (uses_utf16(version)) {
if (str_data.size() & 1) { if (str_data.size() & 1) {
str_data.push_back(0); str_data.push_back(0);
} }
@@ -3353,11 +3302,14 @@ std::string disassemble_quest_script(
} }
if (reassembly_mode) { if (reassembly_mode) {
l->lines.emplace_back(std::format(" .cstr {}", formatted)); l->lines.emplace_back(std::format(" .cstr {}", formatted));
if (extra_zero_bytes) {
l->lines.emplace_back(std::format(" .data {}", string(extra_zero_bytes * 2, '0')));
}
} else { } else {
l->lines.emplace_back(std::format(" {:04X} {}", l->offset, formatted)); l->lines.emplace_back(std::format(" {:04X} .cstr {}", l->offset, formatted));
} if (extra_zero_bytes) {
if (extra_zero_bytes) { l->lines.emplace_back(std::format(" {:04X} .data {}", l->offset + l->size - extra_zero_bytes, string(extra_zero_bytes * 2, '0')));
l->lines.emplace_back(" .data " + string(extra_zero_bytes * 2, '0')); }
} }
}; };
@@ -3675,7 +3627,7 @@ std::string disassemble_quest_script(
break; break;
} }
case Type::CSTRING: case Type::CSTRING:
if (use_wstrs) { if (uses_utf16(version)) {
phosg::StringWriter w; phosg::StringWriter w;
for (uint16_t ch = label_r.get_u16l(); ch; ch = label_r.get_u16l()) { for (uint16_t ch = label_r.get_u16l(); ch; ch = label_r.get_u16l()) {
w.put_u16l(ch); w.put_u16l(ch);
@@ -4222,7 +4174,8 @@ struct RegisterAssigner {
AssembledQuestScript assemble_quest_script( AssembledQuestScript assemble_quest_script(
const std::string& text, const std::string& text,
const vector<string>& script_include_directories, const vector<string>& script_include_directories,
const vector<string>& native_include_directories) { const vector<string>& native_include_directories,
bool strict) {
struct Line { struct Line {
string filename; // Empty if this is the main file string filename; // Empty if this is the main file
@@ -4244,9 +4197,11 @@ AssembledQuestScript assemble_quest_script(
}; };
std::vector<Line> lines; std::vector<Line> lines;
auto include_file = [&](const std::string& filename, const std::string& text, ssize_t parent_index) { auto include_file = [&](const std::string& filename, const std::string& orig_text, ssize_t parent_index) {
// Inserts the new lines after the parent line and preprocesses them. The // Inserts the new lines after the parent line and preprocesses them. The parent line is not modified or deleted.
// parent line is not modified or deleted. std::string text = orig_text;
phosg::strip_comments_inplace(text);
vector<Line> new_lines; vector<Line> new_lines;
auto text_lines = phosg::split(text, '\n'); auto text_lines = phosg::split(text, '\n');
for (size_t z = 0; z < text_lines.size(); z++) { for (size_t z = 0; z < text_lines.size(); z++) {
@@ -4255,21 +4210,6 @@ AssembledQuestScript assemble_quest_script(
line.number = z + 1; line.number = z + 1;
line.text = std::move(text_lines[z]); line.text = std::move(text_lines[z]);
line.parent_index = parent_index; line.parent_index = parent_index;
// Strip comments and whitespace
size_t comment_start = line.text.find("/*");
while (comment_start != string::npos) {
size_t comment_end = line.text.find("*/", comment_start + 2);
if (comment_end == string::npos) {
throw runtime_error("unterminated inline comment");
}
line.text.erase(comment_start, comment_end + 2 - comment_start);
comment_start = line.text.find("/*");
}
comment_start = line.text.find("//");
if (comment_start != string::npos) {
line.text.resize(comment_start);
}
phosg::strip_trailing_whitespace(line.text); phosg::strip_trailing_whitespace(line.text);
phosg::strip_leading_whitespace(line.text); phosg::strip_leading_whitespace(line.text);
} }
@@ -4326,6 +4266,7 @@ AssembledQuestScript assemble_quest_script(
Episode quest_episode = Episode::EP1; Episode quest_episode = Episode::EP1;
uint8_t quest_max_players = 4; uint8_t quest_max_players = 4;
bool quest_joinable = false; bool quest_joinable = false;
std::shared_ptr<parray<uint8_t, 0x94>> bb_unknown_a5;
std::vector<QuestMetadata::CreateItemMask> create_item_mask_entries; std::vector<QuestMetadata::CreateItemMask> create_item_mask_entries;
for (const auto& line : lines) { for (const auto& line : lines) {
if (line.text.empty()) { if (line.text.empty()) {
@@ -4370,6 +4311,15 @@ AssembledQuestScript assemble_quest_script(
quest_max_players = stoul(line.text.substr(12), nullptr, 0); quest_max_players = stoul(line.text.substr(12), nullptr, 0);
} else if (line.text.starts_with(".joinable ")) { } else if (line.text.starts_with(".joinable ")) {
quest_joinable = true; quest_joinable = true;
} else if (line.text.starts_with(".bb_unknown_a5 ")) {
std::string data = phosg::parse_data_string(line.text.substr(15));
if (data.size() != 0x94) {
throw std::runtime_error(".bb_unknown_a5 directive must specify 0x94 bytes of data");
}
bb_unknown_a5 = std::make_shared<parray<uint8_t, 0x94>>();
for (size_t z = 0; z < 0x94; z++) {
bb_unknown_a5->at(z) = static_cast<uint8_t>(data[z]);
}
} }
} }
}); });
@@ -4563,7 +4513,7 @@ AssembledQuestScript assemble_quest_script(
code_w.write(tt_utf8_to_utf16(data)); code_w.write(tt_utf8_to_utf16(data));
code_w.put_u16l(0); code_w.put_u16l(0);
} else { } else {
code_w.write((quest_language == Language::JAPANESE) ? tt_utf8_to_sega_sjis(text) : tt_utf8_to_8859(text)); code_w.write((quest_language == Language::JAPANESE) ? tt_utf8_to_sega_sjis(data) : tt_utf8_to_8859(data));
code_w.put_u8(0); code_w.put_u8(0);
} }
} else if (line.text.starts_with(".zero ")) { } else if (line.text.starts_with(".zero ")) {
@@ -4762,13 +4712,26 @@ AssembledQuestScript assemble_quest_script(
} else { // Not use_args } else { // Not use_args
auto add_label = [&](const string& name, bool is32) -> void { auto add_label = [&](const string& name, bool is32) -> void {
if (!labels_by_name.count(name)) { size_t label_index;
throw runtime_error("label not defined: " + name); auto it = labels_by_name.find(name);
} if (it == labels_by_name.end()) {
if (is32) { if (strict) {
code_w.put_u32(labels_by_name.at(name)->index); throw runtime_error("label not defined: " + name);
} else if (name.starts_with("label")) {
size_t used_chars;
label_index = std::stoul(name.substr(5), &used_chars, 16);
if (used_chars != name.size() - 5) {
throw runtime_error("label not defined: " + name);
}
}
} else { } else {
code_w.put_u16(labels_by_name.at(name)->index); label_index = it->second->index;
}
if (is32) {
code_w.put_u32(label_index);
} else {
code_w.put_u16(label_index);
} }
}; };
auto add_reg = [&](shared_ptr<RegisterAssigner::Register> reg, bool is32) -> void { auto add_reg = [&](shared_ptr<RegisterAssigner::Register> reg, bool is32) -> void {
@@ -4912,7 +4875,7 @@ AssembledQuestScript assemble_quest_script(
switch (quest_version) { switch (quest_version) {
case Version::DC_NTE: { case Version::DC_NTE: {
PSOQuestHeaderDCNTE header; PSOQuestHeaderDCNTE header;
header.code_offset = sizeof(header); header.text_offset = sizeof(header);
header.label_table_offset = sizeof(header) + code_w.size(); header.label_table_offset = sizeof(header) + code_w.size();
header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]); header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]);
header.name.encode(quest_name, Language::JAPANESE); header.name.encode(quest_name, Language::JAPANESE);
@@ -4923,7 +4886,7 @@ AssembledQuestScript assemble_quest_script(
case Version::DC_V1: case Version::DC_V1:
case Version::DC_V2: { case Version::DC_V2: {
PSOQuestHeaderDC header; PSOQuestHeaderDC header;
header.code_offset = sizeof(header); header.text_offset = sizeof(header);
header.label_table_offset = sizeof(header) + code_w.size(); header.label_table_offset = sizeof(header) + code_w.size();
header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]); header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]);
header.language = quest_language; header.language = quest_language;
@@ -4937,7 +4900,7 @@ AssembledQuestScript assemble_quest_script(
case Version::PC_NTE: case Version::PC_NTE:
case Version::PC_V2: { case Version::PC_V2: {
PSOQuestHeaderPC header; PSOQuestHeaderPC header;
header.code_offset = sizeof(header); header.text_offset = sizeof(header);
header.label_table_offset = sizeof(header) + code_w.size(); header.label_table_offset = sizeof(header) + code_w.size();
header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]); header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]);
header.language = quest_language; header.language = quest_language;
@@ -4954,7 +4917,7 @@ AssembledQuestScript assemble_quest_script(
case Version::GC_EP3: case Version::GC_EP3:
case Version::XB_V3: { case Version::XB_V3: {
PSOQuestHeaderGC header; PSOQuestHeaderGC header;
header.code_offset = sizeof(header); header.text_offset = sizeof(header);
header.label_table_offset = sizeof(header) + code_w.size(); header.label_table_offset = sizeof(header) + code_w.size();
header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]); header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]);
header.language = quest_language; header.language = quest_language;
@@ -4967,7 +4930,7 @@ AssembledQuestScript assemble_quest_script(
} }
case Version::BB_V4: { case Version::BB_V4: {
PSOQuestHeaderBB header; PSOQuestHeaderBB header;
header.code_offset = sizeof(header); header.text_offset = sizeof(header);
header.label_table_offset = sizeof(header) + code_w.size(); header.label_table_offset = sizeof(header) + code_w.size();
header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]); header.size = header.label_table_offset + label_table.size() * sizeof(label_table[0]);
header.quest_number = quest_num; header.quest_number = quest_num;
@@ -4978,12 +4941,16 @@ AssembledQuestScript assemble_quest_script(
} else { } else {
header.episode = 0; header.episode = 0;
} }
header.max_players = quest_max_players; header.max_players = (quest_max_players == 4) ? 0 : quest_max_players;
header.joinable = quest_joinable ? 1 : 0; header.joinable = quest_joinable ? 1 : 0;
header.name.encode(quest_name, quest_language); header.name.encode(quest_name, quest_language);
header.short_description.encode(quest_short_desc, quest_language); header.short_description.encode(quest_short_desc, quest_language);
header.long_description.encode(quest_long_desc, quest_language); header.long_description.encode(quest_long_desc, quest_language);
header.unknown_a5.clear(0); if (bb_unknown_a5) {
header.unknown_a5 = *bb_unknown_a5;
} else {
header.unknown_a5.clear(0);
}
for (size_t z = 0; z < create_item_mask_entries.size(); z++) { for (size_t z = 0; z < create_item_mask_entries.size(); z++) {
header.create_item_mask_entries[z] = create_item_mask_entries[z]; header.create_item_mask_entries[z] = create_item_mask_entries[z];
} }
@@ -5011,9 +4978,9 @@ AssembledQuestScript assemble_quest_script(
void populate_quest_metadata_from_script( void populate_quest_metadata_from_script(
QuestMetadata& meta, const void* data, size_t size, Version version, Language language) { QuestMetadata& meta, const void* data, size_t size, Version version, Language language) {
meta.language = language;
phosg::StringReader r(data, size); phosg::StringReader r(data, size);
uint32_t code_offset = r.size();
uint32_t label_table_offset = r.size();
switch (version) { switch (version) {
case Version::DC_NTE: { case Version::DC_NTE: {
const auto& header = r.get<PSOQuestHeaderDCNTE>(); const auto& header = r.get<PSOQuestHeaderDCNTE>();
@@ -5023,22 +4990,24 @@ void populate_quest_metadata_from_script(
if (meta.quest_number == 0xFFFFFFFF) { if (meta.quest_number == 0xFFFFFFFF) {
meta.quest_number = phosg::fnv1a32(meta.name); meta.quest_number = phosg::fnv1a32(meta.name);
} }
code_offset = header.code_offset; meta.text_offset = header.text_offset;
label_table_offset = header.label_table_offset; meta.label_table_offset = header.label_table_offset;
meta.language = Language::JAPANESE;
break; break;
} }
case Version::DC_11_2000: { case Version::DC_11_2000: {
const auto& header = r.get<PSOQuestHeaderDC112000>(); const auto& header = r.get<PSOQuestHeaderDC112000>();
meta.episode = Episode::EP1; meta.episode = Episode::EP1;
meta.max_players = 4; meta.max_players = 4;
meta.name = header.name.decode(language); meta.language = (language == Language::UNKNOWN) ? Language::JAPANESE : language;
meta.short_description = header.short_description.decode(language); meta.name = header.name.decode(meta.language);
meta.long_description = header.long_description.decode(language); meta.short_description = header.short_description.decode(meta.language);
meta.long_description = header.long_description.decode(meta.language);
if (meta.quest_number == 0xFFFFFFFF) { if (meta.quest_number == 0xFFFFFFFF) {
meta.quest_number = phosg::fnv1a32(meta.name); meta.quest_number = phosg::fnv1a32(meta.name);
} }
code_offset = header.code_offset; meta.text_offset = header.text_offset;
label_table_offset = header.label_table_offset; meta.label_table_offset = header.label_table_offset;
break; break;
} }
case Version::DC_V1: case Version::DC_V1:
@@ -5046,14 +5015,15 @@ void populate_quest_metadata_from_script(
const auto& header = r.get<PSOQuestHeaderDC>(); const auto& header = r.get<PSOQuestHeaderDC>();
meta.episode = Episode::EP1; meta.episode = Episode::EP1;
meta.max_players = 4; meta.max_players = 4;
meta.name = header.name.decode(language); meta.language = (language != Language::UNKNOWN) ? language : ((static_cast<size_t>(header.language) < 5) ? header.language : Language::ENGLISH);
meta.short_description = header.short_description.decode(language); meta.name = header.name.decode(meta.language);
meta.long_description = header.long_description.decode(language); meta.short_description = header.short_description.decode(meta.language);
meta.long_description = header.long_description.decode(meta.language);
if (meta.quest_number == 0xFFFFFFFF) { if (meta.quest_number == 0xFFFFFFFF) {
meta.quest_number = header.quest_number; meta.quest_number = header.quest_number;
} }
code_offset = header.code_offset; meta.text_offset = header.text_offset;
label_table_offset = header.label_table_offset; meta.label_table_offset = header.label_table_offset;
break; break;
} }
case Version::PC_NTE: case Version::PC_NTE:
@@ -5064,11 +5034,12 @@ void populate_quest_metadata_from_script(
if (meta.quest_number == 0xFFFFFFFF) { if (meta.quest_number == 0xFFFFFFFF) {
meta.quest_number = header.quest_number; meta.quest_number = header.quest_number;
} }
meta.name = header.name.decode(language); meta.language = (language != Language::UNKNOWN) ? language : ((static_cast<size_t>(header.language) < 8) ? header.language : Language::ENGLISH);
meta.short_description = header.short_description.decode(language); meta.name = header.name.decode(meta.language);
meta.long_description = header.long_description.decode(language); meta.short_description = header.short_description.decode(meta.language);
code_offset = header.code_offset; meta.long_description = header.long_description.decode(meta.language);
label_table_offset = header.label_table_offset; meta.text_offset = header.text_offset;
meta.label_table_offset = header.label_table_offset;
break; break;
} }
case Version::GC_NTE: case Version::GC_NTE:
@@ -5086,31 +5057,34 @@ void populate_quest_metadata_from_script(
if (meta.quest_number == 0xFFFFFFFF) { if (meta.quest_number == 0xFFFFFFFF) {
meta.quest_number = header.quest_number; meta.quest_number = header.quest_number;
} }
meta.name = header.name.decode(language); meta.language = (language != Language::UNKNOWN) ? language : ((static_cast<size_t>(header.language) < 5) ? header.language : Language::ENGLISH);
meta.short_description = header.short_description.decode(language); meta.name = header.name.decode(meta.language);
meta.long_description = header.long_description.decode(language); meta.short_description = header.short_description.decode(meta.language);
code_offset = header.code_offset; meta.long_description = header.long_description.decode(meta.language);
label_table_offset = header.label_table_offset; meta.text_offset = header.text_offset;
meta.label_table_offset = header.label_table_offset;
break; break;
} }
case Version::BB_V4: { case Version::BB_V4: {
const auto& header = r.get<PSOQuestHeaderBBBase>(); const auto& header = r.get<PSOQuestHeaderBBBase>();
meta.episode = episode_for_quest_episode_number(header.episode); meta.episode = episode_for_quest_episode_number(header.episode);
meta.joinable |= header.joinable; meta.joinable |= header.joinable;
meta.max_players = 4; meta.max_players = header.max_players ? header.max_players : 4;
if (meta.quest_number == 0xFFFFFFFF) { if (meta.quest_number == 0xFFFFFFFF) {
meta.quest_number = header.quest_number; meta.quest_number = header.quest_number;
} }
meta.name = header.name.decode(language); meta.language = (language != Language::UNKNOWN) ? language : Language::ENGLISH;
meta.short_description = header.short_description.decode(language); meta.name = header.name.decode(meta.language);
meta.long_description = header.long_description.decode(language); meta.short_description = header.short_description.decode(meta.language);
meta.long_description = header.long_description.decode(meta.language);
// Quests saved with Qedit may not have the full header, so only parse // Quests saved with Qedit may not have the full header, so only parse
// the full header if the code and function table offsets don't point to // the full header if the code and function table offsets don't point to
// space within it // space within it
if ((header.code_offset >= sizeof(PSOQuestHeaderBB)) && if ((header.text_offset >= sizeof(PSOQuestHeaderBB)) &&
(header.label_table_offset >= sizeof(PSOQuestHeaderBB))) { (header.label_table_offset >= sizeof(PSOQuestHeaderBB))) {
r.go(0); r.go(0);
const auto& header = r.get<PSOQuestHeaderBB>(); const auto& header = r.get<PSOQuestHeaderBB>();
meta.bb_unknown_a5 = std::make_shared<parray<uint8_t, 0x94>>(header.unknown_a5);
for (size_t z = 0; z < header.create_item_mask_entries.size(); z++) { for (size_t z = 0; z < header.create_item_mask_entries.size(); z++) {
const auto& item = header.create_item_mask_entries[z]; const auto& item = header.create_item_mask_entries[z];
if (!item.is_valid()) { if (!item.is_valid()) {
@@ -5119,8 +5093,8 @@ void populate_quest_metadata_from_script(
meta.create_item_mask_entries.emplace_back(item); meta.create_item_mask_entries.emplace_back(item);
} }
} }
code_offset = header.code_offset; meta.text_offset = header.text_offset;
label_table_offset = header.label_table_offset; meta.label_table_offset = header.label_table_offset;
break; break;
} }
default: default:
@@ -5187,7 +5161,7 @@ void populate_quest_metadata_from_script(
}; };
auto get_label_offset = [&](size_t label) -> uint32_t { auto get_label_offset = [&](size_t label) -> uint32_t {
return code_offset + r.pget_u32l(label_table_offset + 4 * label); return meta.text_offset + r.pget_u32l(meta.label_table_offset + 4 * label);
}; };
// The set_episode opcode and floor remapping opcodes should always be in // The set_episode opcode and floor remapping opcodes should always be in
+22 -21
View File
@@ -11,21 +11,21 @@
#include "Version.hh" #include "Version.hh"
struct PSOQuestHeaderDCNTE { struct PSOQuestHeaderDCNTE {
/* 0000 */ le_uint32_t code_offset = 0; /* 0000 */ le_uint32_t text_offset = 0;
/* 0004 */ le_uint32_t label_table_offset = 0; /* 0004 */ le_uint32_t label_table_offset = 0;
/* 0008 */ le_uint32_t size = 0; /* 0008 */ le_uint32_t size = 0;
/* 000C */ le_uint16_t unknown_a1 = 0; /* 000C */ le_uint16_t unknown_a1 = 0xFFFF;
/* 000E */ le_uint16_t unknown_a2 = 0; /* 000E */ le_uint16_t unknown_a2 = 0xFFFF;
/* 0010 */ pstring<TextEncoding::SJIS, 0x10> name; /* 0010 */ pstring<TextEncoding::SJIS, 0x10> name;
/* 0020 */ /* 0020 */
} __packed_ws__(PSOQuestHeaderDCNTE, 0x20); } __packed_ws__(PSOQuestHeaderDCNTE, 0x20);
struct PSOQuestHeaderDC112000 { struct PSOQuestHeaderDC112000 {
/* 0000 */ le_uint32_t code_offset = 0; /* 0000 */ le_uint32_t text_offset = 0;
/* 0004 */ le_uint32_t label_table_offset = 0; /* 0004 */ le_uint32_t label_table_offset = 0;
/* 0008 */ le_uint32_t size = 0; /* 0008 */ le_uint32_t size = 0;
/* 000C */ le_uint16_t unknown_a1 = 0; /* 000C */ le_uint16_t unknown_a1 = 0xFFFF;
/* 000E */ le_uint16_t unknown_a2 = 0; /* 000E */ le_uint16_t unknown_a2 = 0xFFFF;
/* 0010 */ pstring<TextEncoding::MARKED, 0x20> name; /* 0010 */ pstring<TextEncoding::MARKED, 0x20> name;
/* 0030 */ pstring<TextEncoding::MARKED, 0x80> short_description; /* 0030 */ pstring<TextEncoding::MARKED, 0x80> short_description;
/* 00B0 */ pstring<TextEncoding::MARKED, 0x120> long_description; /* 00B0 */ pstring<TextEncoding::MARKED, 0x120> long_description;
@@ -33,11 +33,11 @@ struct PSOQuestHeaderDC112000 {
} __packed_ws__(PSOQuestHeaderDC112000, 0x1D0); } __packed_ws__(PSOQuestHeaderDC112000, 0x1D0);
struct PSOQuestHeaderDC { // Same format for DC v1 and v2 struct PSOQuestHeaderDC { // Same format for DC v1 and v2
/* 0000 */ le_uint32_t code_offset = 0; /* 0000 */ le_uint32_t text_offset = 0;
/* 0004 */ le_uint32_t label_table_offset = 0; /* 0004 */ le_uint32_t label_table_offset = 0;
/* 0008 */ le_uint32_t size = 0; /* 0008 */ le_uint32_t size = 0;
/* 000C */ le_uint16_t unknown_a1 = 0; /* 000C */ le_uint16_t unknown_a1 = 0xFFFF;
/* 000E */ le_uint16_t unknown_a2 = 0; /* 000E */ le_uint16_t unknown_a2 = 0xFFFF;
/* 0010 */ Language language = Language::JAPANESE; /* 0010 */ Language language = Language::JAPANESE;
/* 0011 */ uint8_t unknown_a3 = 0; /* 0011 */ uint8_t unknown_a3 = 0;
/* 0012 */ le_uint16_t quest_number = 0; // 0xFFFF for challenge quests /* 0012 */ le_uint16_t quest_number = 0; // 0xFFFF for challenge quests
@@ -48,11 +48,11 @@ struct PSOQuestHeaderDC { // Same format for DC v1 and v2
} __packed_ws__(PSOQuestHeaderDC, 0x1D4); } __packed_ws__(PSOQuestHeaderDC, 0x1D4);
struct PSOQuestHeaderPC { struct PSOQuestHeaderPC {
/* 0000 */ le_uint32_t code_offset; /* 0000 */ le_uint32_t text_offset;
/* 0004 */ le_uint32_t label_table_offset; /* 0004 */ le_uint32_t label_table_offset;
/* 0008 */ le_uint32_t size = 0; /* 0008 */ le_uint32_t size = 0;
/* 000C */ le_uint16_t unknown_a1 = 0; /* 000C */ le_uint16_t unknown_a1 = 0xFFFF;
/* 000E */ le_uint16_t unknown_a2 = 0; /* 000E */ le_uint16_t unknown_a2 = 0xFFFF;
/* 0010 */ Language language = Language::JAPANESE; /* 0010 */ Language language = Language::JAPANESE;
/* 0011 */ uint8_t unknown_a3 = 0; /* 0011 */ uint8_t unknown_a3 = 0;
/* 0012 */ le_uint16_t quest_number = 0; // 0xFFFF for challenge quests /* 0012 */ le_uint16_t quest_number = 0; // 0xFFFF for challenge quests
@@ -65,11 +65,11 @@ struct PSOQuestHeaderPC {
// TODO: Is the XB quest header format the same as on GC? If not, make a // TODO: Is the XB quest header format the same as on GC? If not, make a
// separate struct; if so, rename this struct to V3. // separate struct; if so, rename this struct to V3.
struct PSOQuestHeaderGC { struct PSOQuestHeaderGC {
/* 0000 */ le_uint32_t code_offset = 0; /* 0000 */ le_uint32_t text_offset = 0;
/* 0004 */ le_uint32_t label_table_offset = 0; /* 0004 */ le_uint32_t label_table_offset = 0;
/* 0008 */ le_uint32_t size = 0; /* 0008 */ le_uint32_t size = 0;
/* 000C */ le_uint16_t unknown_a1 = 0; /* 000C */ le_uint16_t unknown_a1 = 0xFFFF;
/* 000E */ le_uint16_t unknown_a2 = 0; /* 000E */ le_uint16_t unknown_a2 = 0xFFFF;
/* 0010 */ Language language = Language::JAPANESE; /* 0010 */ Language language = Language::JAPANESE;
/* 0011 */ uint8_t unknown_a3 = 0; /* 0011 */ uint8_t unknown_a3 = 0;
// Note: The GC client byteswaps this field, then loads it as a byte, so // Note: The GC client byteswaps this field, then loads it as a byte, so
@@ -98,15 +98,15 @@ struct CreateItemMaskEntry {
} __packed_ws__(CreateItemMaskEntry, 0x38); } __packed_ws__(CreateItemMaskEntry, 0x38);
struct PSOQuestHeaderBBBase { struct PSOQuestHeaderBBBase {
/* 0000 */ le_uint32_t code_offset = 0; /* 0000 */ le_uint32_t text_offset = 0;
/* 0004 */ le_uint32_t label_table_offset = 0; /* 0004 */ le_uint32_t label_table_offset = 0;
/* 0008 */ le_uint32_t size = 0; /* 0008 */ le_uint32_t size = 0;
/* 000C */ le_uint16_t unknown_a1 = 0; /* 000C */ le_uint16_t unknown_a1 = 0xFFFF;
/* 000E */ le_uint16_t unknown_a2 = 0; /* 000E */ le_uint16_t unknown_a2 = 0xFFFF;
/* 0010 */ le_uint16_t quest_number = 0; // 0xFFFF for challenge quests /* 0010 */ le_uint16_t quest_number = 0; // 0xFFFF for challenge quests
/* 0012 */ le_uint16_t unknown_a3 = 0; /* 0012 */ le_uint16_t unknown_a3 = 0;
/* 0014 */ uint8_t episode = 0; // 0 = Ep1, 1 = Ep2, 2 = Ep4 /* 0014 */ uint8_t episode = 0; // 0 = Ep1, 1 = Ep2, 2 = Ep4
/* 0015 */ uint8_t max_players = 0; /* 0015 */ uint8_t max_players = 0; // 0 means no limit (that is, 4)
/* 0016 */ uint8_t joinable = 0; /* 0016 */ uint8_t joinable = 0;
/* 0017 */ uint8_t unknown_a4 = 0; /* 0017 */ uint8_t unknown_a4 = 0;
/* 0018 */ pstring<TextEncoding::UTF16, 0x20> name; /* 0018 */ pstring<TextEncoding::UTF16, 0x20> name;
@@ -141,7 +141,7 @@ struct AssembledQuestScript {
Language language = Language::UNKNOWN; Language language = Language::UNKNOWN;
Episode episode = Episode::NONE; Episode episode = Episode::NONE;
bool joinable = false; bool joinable = false;
uint8_t max_players = 0x00; uint8_t max_players = 4;
std::string name; std::string name;
std::string short_description; std::string short_description;
std::string long_description; std::string long_description;
@@ -149,6 +149,7 @@ struct AssembledQuestScript {
AssembledQuestScript assemble_quest_script( AssembledQuestScript assemble_quest_script(
const std::string& text, const std::string& text,
const std::vector<std::string>& script_include_directories, const std::vector<std::string>& script_include_directories,
const std::vector<std::string>& native_include_directories); const std::vector<std::string>& native_include_directories,
bool strict = true);
void populate_quest_metadata_from_script(QuestMetadata& meta, const void* data, size_t size, Version version, Language language); void populate_quest_metadata_from_script(QuestMetadata& meta, const void* data, size_t size, Version version, Language language);
+44 -44
View File
@@ -298,52 +298,52 @@ I 99095 2025-05-20 21:09:19 - [Commands] Sending to C-5 @ ipss:N-1:127.0.0.1:547
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 30 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 30.bin 0010 | 33 30 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 30.bin
0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885 0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885
0030 | 33 30 2E 62 69 6E 00 00 96 02 00 00 | 30.bin 0030 | 33 30 2E 62 69 6E 00 00 97 02 00 00 | 30.bin
I 99095 2025-05-20 21:09:19 - [C-5] Sending quest file chunk quest88530.bin:0 I 99095 2025-05-20 21:09:19 - [C-5] Sending quest file chunk quest88530.bin:0
I 99095 2025-05-20 21:09:19 - [Commands] Sending to C-5 @ ipss:N-1:127.0.0.1:54703 (version=GC_V3 command=13 flag=00) I 99095 2025-05-20 21:09:19 - [Commands] Sending to C-5 @ ipss:N-1:127.0.0.1:54703 (version=GC_V3 command=13 flag=00)
0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 30 2E 62 | quest88530.b 0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 30 2E 62 | quest88530.b
0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 04 FC A0 FC 86 | in ? 0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 C4 FC A0 FC FF | in ?
0020 | FF F1 D2 FF 59 47 43 20 76 31 2E 32 FF 20 55 53 | YGC v1.2 US 0020 | 08 FF F1 FF D2 59 47 43 20 76 31 2E FF 32 20 55 | YGC v1. 2 U
0030 | 41 20 70 61 74 FF 63 68 20 65 6E 61 62 6C D7 65 | A pat ch enabl e 0030 | 53 41 20 70 61 FF 74 63 68 20 65 6E 61 62 AF 6C | SA pa tch enab l
0040 | 72 00 F8 FF A5 F8 FF FF 09 FF 03 00 40 00 80 49 | r @ I 0040 | 65 72 00 F8 FF A5 F8 FF FF FF 09 03 00 40 00 80 | er @
0050 | C8 81 E1 4C FB 14 2A 1F 9F 80 F8 B5 49 CC 4E F4 | L * I N 0050 | 49 C8 C3 81 4C FB 14 2A 3F 1F 80 F8 B5 49 CC 9D | I L *? I
0060 | 74 C2 00 F4 71 D0 E8 48 03 F8 F7 4A 00 49 70 5E | t q H J Ip^ 0060 | F4 74 C2 00 E2 F4 D0 E8 48 03 F0 F7 4A 00 49 70 | t H J Ip
0070 | E1 5D E2 B2 0D 04 3F 01 00 4A 04 48 04 FC F6 18 | ] ? J H 0070 | C3 5E 5D E2 B2 0D 7F 04 01 00 4A 04 48 04 F8 F6 | ^] J H
0080 | 04 00 0D 05 02 70 F3 05 48 05 FC F3 05 00 2C 04 | p H , 0080 | 18 04 00 0D 05 E1 02 F3 05 48 05 F8 F3 05 00 2C | H ,
0090 | 05 00 EE D8 18 E5 B0 FE CE 48 00 F8 B3 19 03 01 | H 0090 | 04 01 05 EE 30 D8 E5 B0 FC CE 48 00 F8 B3 19 03 | 0 H
00A0 | 38 9F 19 04 85 FA 28 99 F9 E9 FE 96 F9 FF 4A 3F | 8 ( J? 00A0 | 71 01 9F 19 04 0A FA 28 99 D3 F9 FE 96 F9 FF 7F | q (
00B0 | 11 F8 10 49 E8 5C 3C B3 4A 01 F8 B4 03 87 A3 33 | I \< J 3 00B0 | 4A 11 F8 10 49 E8 5C 78 B3 4A 01 F8 B4 06 87 A3 | J I \x J
00C0 | 8A F7 F3 8D F7 01 7D 87 68 02 A6 B8 01 87 79 7C | } h y| 00C0 | 66 8A F7 E6 8D F7 01 0F 7D 68 02 A6 B8 0F 01 79 | f }h y
00D0 | 08 F8 94 0F 21 FF C0 90 B7 FF 44 90 61 00 14 90 | ! D a 00D0 | 7C 08 F8 1F 94 21 FF C0 90 FE B7 44 90 61 00 14 | | ! D a
00E0 | 81 00 87 18 88 A4 E7 54 FF A5 82 1E 64 A5 B3 00 | T d 00E0 | 90 81 0F 00 18 88 A4 E7 FF 54 A5 82 1E 64 A5 B3 | T d
00F0 | 60 FF A5 0C 00 90 A1 00 08 38 7F C0 00 04 7C A4 | ` 8 | 00F0 | 00 FF 60 A5 0C 00 90 A1 00 08 FF 38 C0 00 04 7C | ` 8 |
0100 | 34 2C 3C F4 0C 28 05 FC 8C 41 82 00 78 38 C4 FF | 4,< ( A x8 0100 | A4 34 2C 78 F4 0C 28 05 F8 8C 41 82 00 78 38 FF | 4,x ( A x8
0110 | 00 10 7C E6 2A 14 38 E7 0F FF E0 81 07 E0 F3 28 | | * 8 ( 0110 | C4 00 10 7C E6 2A 14 38 1F E7 FF E0 81 07 E6 E0 | | * 8
0120 | 08 E8 34 7D 10 08 A6 FF F0 00 7D 08 32 14 39 08 | 4} } 2 9 0120 | 28 08 E8 34 21 7D 08 A6 FE F0 00 7D 08 32 14 39 | ( 4!} } 2 9
0130 | FF FF FE 7C CA 33 78 A5 28 FF 00 02 55 29 10 3A | | 3x ( U) : 0130 | FF 08 FF FE 7C CA 33 78 A5 FF 28 00 02 55 29 10 | | 3x ( U)
0140 | 7D 4A 8F 4A 14 81 2A E4 21 29 E4 91 7E F8 42 00 | }J J * !) ~ B 0140 | 3A 7D 1F 4A 4A 14 81 2A 43 E4 29 E4 91 FC F8 42 | :} JJ *C ) B
0150 | FF E8 3C 80 46 98 00 0F C2 74 7C C3 D8 70 9C 2B | < F t| p + 0150 | 00 FF E8 3C 00 46 98 1F 00 C2 74 7C C3 E0 D8 9C | < F t|
0160 | 78 48 88 E1 BD B0 61 10 C0 30 2E FA B4 4E 80 04 | xH a 0. N 0160 | 2B 78 48 10 E1 BD C3 B0 10 C0 30 2E F4 B4 4E 80 | +xH 0. N
0170 | 21 39 E1 00 88 7C 61 45 E3 2C 80 60 38 A0 F0 70 | !9 |aE , `8 p 0170 | 04 21 C3 39 00 88 7C 61 C7 45 2C 80 60 38 E1 A0 | ! 9 |a E, `8
0180 | 7C 64 2C 2C 80 F8 EC 01 84 F8 63 D0 39 E0 10 C6 | |d,, c 9 0180 | 70 7C 64 2C 01 2C F8 03 EC 84 F8 C6 D0 39 E0 10 | p|d, , 9
0190 | E0 3C 80 E1 83 DC 80 84 00 87 28 7C 89 C4 38 81 | < (| 8 0190 | 8C E0 3C C3 80 83 DC 80 84 0F 00 28 7C 89 C4 03 | < (|
01A0 | 81 44 28 D8 BC 80 3E 1C 38 21 00 40 D0 0C AC 00 | D( > 8! @ 01A0 | 38 81 44 51 D8 BC 80 7C 1C 38 21 00 40 A0 0C AC | 8 DQ | 8! @
01B0 | 20 FF 38 63 FF FF 7C 83 22 14 00 B8 F8 FF 3C E0 | 8c | " < 01B0 | 00 FF 20 38 63 FF FF 7C 83 22 01 14 B8 FE F8 3C | 8c | " <
01C0 | ED B8 60 E7 83 20 80 98 A4 C7 03 20 40 38 2C FF | ` @8, 01C0 | E0 ED B8 60 E7 83 01 20 98 8F A4 03 20 40 38 FF | ` @8
01D0 | 8D 23 00 01 7C A5 4A 78 F4 7C 54 A6 07 FE FF 54 | # | Jx |T T 01D0 | 2C 8D 23 00 01 7C A5 4A E9 78 7C 54 A6 07 FF FE | , # | J x|T
01E0 | A5 F8 7E 7C C6 00 D0 30 FC 38 38 8C E8 32 78 44 | ~| 0 88 2xD 01E0 | 54 A5 F8 7E 7C C6 00 61 D0 FC 38 38 18 E8 32 78 | T ~| a 88 2x
01F0 | C3 EC 4B BD D4 6C 21 A3 C0 68 D2 B4 AC 3C A0 18 | K l! h < 01F0 | 87 44 EC 4B BD D4 43 6C A3 C0 68 A4 B4 AC 3C 31 | D K Cl h <1
0200 | 34 A5 C3 34 A9 CC A0 05 87 00 06 28 DC F1 87 4D | 4 4 ( M 0200 | A0 34 A5 86 34 A9 CC A0 0F 05 00 06 28 DC 0F F1 | 4 4 (
0210 | 82 04 94 A5 03 00 B0 EC DF 34 20 7D 28 22 F4 00 | 4 }(" 0210 | 4D 82 04 94 07 A5 00 B0 EC BE 34 20 7D 28 22 F4 | M 4 }("
0220 | 87 05 7D 48 F8 39 1F 4A FF F8 3D 80 FE CC 61 8C | }H 9 J = a 0220 | 0F 00 05 7D 48 F8 3F 39 4A FF F8 3D 80 FC CC 61 | }H ?9J = a
0230 | B0 E0 7C E9 50 1F 50 54 E7 F0 BE C2 F8 03 E8 0C | | P PT 0230 | 8C B0 E0 7C E9 3F 50 50 54 E7 F0 BE 84 F8 03 E8 | | ?PPT
0240 | FF 87 FC 39 29 FC 84 1F 09 00 04 94 08 F0 FC 94 | 9) 0240 | 0C 0F FF FC 39 29 FC 3F 84 09 00 04 94 08 E0 FC | 9) ?
0250 | F8 7D 83 0F 63 78 54 E4 E0 38 8C 9D 38 FC 0C B2 | } cxT 8 8 0250 | 94 F8 7D 1F 83 63 78 54 E4 70 E0 8C 9D 38 F8 0C | } cxT p 8
0260 | 3C C0 80 4C 60 DF C5 4E 08 80 65 E3 EF 0E 18 4C | < L` N e L 0260 | B2 3C C0 80 4C BF 60 C5 4E 08 80 65 E3 EF 31 0E | < L ` N e 1
0270 | 38 36 F0 55 30 80 FF 0A 28 7E DC 45 38 A6 F6 84 | 86 U0 (~ E8 0270 | 4C 38 6C F0 55 30 80 FF 0A 28 FC DC 45 38 A6 F6 | L8l U0 ( E8
0280 | C3 60 FF 0A 14 CC 1A 3C 86 66 FE 40 F0 0C 1D 90 | ` < f @ 0280 | 84 86 60 FF 0A 14 CC 1A 0D 3C 66 FE 40 F0 3B 0C | ` <f @ ;
0290 | 81 F1 91 85 D6 F8 7D 68 44 F7 23 EA 9B 38 FC B7 | }hD # 8 0290 | 90 81 F1 91 85 AC F8 7D 68 44 F7 23 EA 71 9B FC | }hD # q
02A0 | 02 C4 E7 4A F4 6A 28 F4 00 00 00 00 00 00 00 00 | J j( 02A0 | B7 02 88 E7 4A F4 51 6A F4 00 00 00 00 00 00 00 | J Qj
02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
@@ -366,7 +366,7 @@ I 99095 2025-05-20 21:09:19 - [Commands] Sending to C-5 @ ipss:N-1:127.0.0.1:547
03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0410 | 00 00 00 00 96 02 00 00 | 0410 | 00 00 00 00 97 02 00 00 |
I 99095 2025-05-20 21:09:19 - [Commands] Sending to C-5 @ ipss:N-1:127.0.0.1:54703 (version=GC_V3 command=44 flag=00) I 99095 2025-05-20 21:09:19 - [Commands] Sending to C-5 @ ipss:N-1:127.0.0.1:54703 (version=GC_V3 command=44 flag=00)
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 30 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 30.dat 0010 | 33 30 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 30.dat
+88 -88
View File
@@ -72,52 +72,52 @@ I 22567 2025-05-23 20:25:02 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:605
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 32 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 32.bin 0010 | 33 32 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 32.bin
0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885 0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885
0030 | 33 32 2E 62 69 6E 00 00 94 02 00 00 | 32.bin 0030 | 33 32 2E 62 69 6E 00 00 95 02 00 00 | 32.bin
I 22567 2025-05-23 20:25:02 - [C-1] Sending quest file chunk quest88532.bin:0 I 22567 2025-05-23 20:25:02 - [C-1] Sending quest file chunk quest88532.bin:0
I 22567 2025-05-23 20:25:02 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:60555 (version=GC_EP3 command=13 flag=00) I 22567 2025-05-23 20:25:02 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:60555 (version=GC_EP3 command=13 flag=00)
0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 32 2E 62 | quest88532.b 0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 32 2E 62 | quest88532.b
0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 04 FC A0 FC 86 | in ? 0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 C4 FC A0 FC FF | in ?
0020 | FF F1 D4 FF 59 47 43 20 45 70 33 20 FF 55 53 41 | YGC Ep3 USA 0020 | 08 FF F1 FF D4 59 47 43 20 45 70 33 FF 20 55 53 | YGC Ep3 US
0030 | 20 70 61 74 63 FF 68 20 65 6E 61 62 6C 65 EB 72 | patc h enable r 0030 | 41 20 70 61 74 FF 63 68 20 65 6E 61 62 6C D7 65 | A pat ch enabl e
0040 | 00 F8 FF A6 F8 FF FF 09 03 FF 00 40 00 80 49 4C | @ IL 0040 | 72 00 F8 FF A6 F8 FF FF 09 FF 03 00 40 00 80 49 | r @ I
0050 | 2A 45 F0 FB 28 9B 10 80 4F F8 B5 49 50 F4 A7 24 | *E ( O IP $ 0050 | 4C 2A E1 45 FB 28 9B 10 9F 80 F8 B5 49 50 4E F4 | L* E ( IPN
0060 | C3 00 F4 54 38 F4 48 03 FC F7 4A 00 49 F0 A5 57 | T8 H J I W 0060 | 24 C3 00 F4 71 54 F4 48 03 F8 F7 4A 00 49 F0 A5 | $ qT H J I
0070 | F0 E2 B2 0D 04 01 1F 00 4A 04 48 04 7E F6 18 04 | J H ~ 0070 | E1 57 E2 B2 0D 04 3F 01 00 4A 04 48 04 FC F6 18 | W ? J H
0080 | 00 0D 05 02 38 F3 05 48 05 7E F3 05 00 2C 04 05 | 8 H ~ , 0080 | 04 00 0D 05 02 70 F3 05 48 05 FC F3 05 00 2C 04 | p H ,
0090 | 00 EE D8 0C E5 B0 CE 7F 48 00 F8 B3 19 03 01 9C | H 0090 | 05 00 EE D8 18 E5 B0 FE CE 48 00 F8 B3 19 03 01 | H
00A0 | 9F 19 04 C2 FA 28 99 F9 FE F4 96 F9 FF 4A 11 8F | ( J 00A0 | 38 9F 19 04 85 FA 28 99 F9 E9 FE 96 F9 FF 4A 1F | 8 ( J
00B0 | F8 10 49 10 B3 CF 4A 01 F8 B4 87 C0 A3 8A CC F7 | I J 00B0 | 11 F8 10 49 10 9F B3 4A 01 F8 B4 81 87 A3 99 8A | I J
00C0 | 8D FC F7 01 7D 68 02 E1 A6 B8 01 79 7C E1 08 F8 | }h y| 00C0 | F7 F9 8D F7 01 7D 68 C3 02 A6 B8 01 79 C3 7C 08 | }h y |
00D0 | 94 21 FF C3 C0 90 B7 44 90 FF 61 00 14 90 81 00 | ! D a 00D0 | F8 94 21 87 FF C0 90 B7 44 FF 90 61 00 14 90 81 | ! D a
00E0 | 18 88 E1 A4 E7 54 A5 82 FF 1E 64 A5 B3 00 60 A5 | T d ` 00E0 | 00 18 C3 88 A4 E7 54 A5 FF 82 1E 64 A5 B3 00 60 | T d `
00F0 | 0C FF 00 90 A1 00 08 38 C0 00 1F 04 7C A4 34 2C | 8 | 4, 00F0 | A5 FF 0C 00 90 A1 00 08 38 C0 3F 00 04 7C A4 34 | 8 ? | 4
0100 | 0F F4 0C 28 05 8C FF 41 82 00 78 38 C4 00 10 FF | ( A x8 0100 | 2C 1E F4 0C 28 05 FE 8C 41 82 00 78 38 C4 00 FF | , ( A x8
0110 | 7C E6 2A 14 38 E7 FF E0 C3 81 07 E0 28 08 3C E8 | | * 8 ( < 0110 | 10 7C E6 2A 14 38 E7 FF 87 E0 81 07 E0 28 79 08 | | * 8 (y
0120 | 34 7D C4 08 A6 F0 00 FF 7D 08 32 14 39 08 FF FE | 4} } 2 9 0120 | E8 34 7D 88 08 A6 F0 FF 00 7D 08 32 14 39 08 FF | 4} } 2 9
0130 | FF 7C CA 33 78 A5 28 00 02 FF 55 29 10 3A 7D 4A | | 3x ( U) :}J 0130 | FF FE 7C CA 33 78 A5 28 00 FF 02 55 29 10 3A 7D | | 3x ( U) :}
0140 | 4A 14 63 81 2A E4 29 88 E4 91 F8 1F 42 00 FF E8 | J c * ) B 0140 | 4A 4A C7 14 81 2A E4 29 10 E4 91 3F F8 42 00 FF | JJ * ) ? B
0150 | 3C E0 46 98 00 C2 74 03 7C C3 D8 1C 9C 2B 78 48 | < F t | +xH 0150 | E8 3C C0 46 98 00 C2 07 74 7C C3 D8 38 9C 2B 78 | < F t| 8 +x
0160 | 62 E1 BD B0 10 98 C0 30 2E 7E B4 4E 80 04 21 39 | b 0.~ N !9 0160 | 48 C4 E1 BD B0 10 30 C0 30 2E FD B4 4E 80 04 21 | H 0 0. N !
0170 | 00 F8 88 7C 61 45 2C 80 38 60 38 A0 3C 70 7C 64 | |aE, 8`8 <p|d 0170 | 39 00 F0 88 7C 61 45 2C 71 80 60 38 A0 78 70 7C | 9 |aE,q `8 xp|
0180 | 2C 2C 60 F8 EC 84 C0 F8 D0 39 98 E0 10 71 E0 3C | ,,` 9 q < 0180 | 64 2C 2C C0 F8 EC 84 80 F8 D0 31 39 E0 10 E3 E0 | d,, 19
0190 | 80 83 F8 DC 80 84 00 28 7C 61 89 C4 38 81 20 44 | (|a 8 D 0190 | 3C 80 83 F0 DC 80 84 00 28 C3 7C 89 C4 38 81 40 | < ( | 8 @
01A0 | D8 8A BC 80 1C 0F 38 21 00 40 0C F4 AC 00 20 38 | 8! @ 8 01A0 | 44 D8 14 BC 80 1F 1C 38 21 00 40 E8 0C AC 00 20 | D 8! @
01B0 | 63 3F FF FF 7C 83 22 14 C0 B8 F8 3C E0 3F ED B8 | c? | " < ? 01B0 | 38 7F 63 FF FF 7C 83 22 14 80 B8 F8 3C 7F E0 ED | 8 c | " <
01C0 | 60 E7 83 20 E0 98 A4 03 20 F1 40 38 2C 8D 23 3F | ` @8, #? 01C0 | B8 60 E7 83 20 C0 98 A4 03 E3 20 40 38 2C 8D 7F | ` @8,
01D0 | 00 01 7C A5 4A 78 FD 7C 54 A6 07 FE 54 A5 3F F8 | | Jx |T T ? 01D0 | 23 00 01 7C A5 4A 78 FA 7C 54 A6 07 FE 54 7F A5 | # | Jx |T T
01E0 | 7E 7C C6 00 D0 0C FC 38 38 E8 E3 32 78 44 EC 4B | ~| 88 2xD K 01E0 | F8 7E 7C C6 00 D0 18 FC 38 38 C6 E8 32 78 44 EC | ~| 88 2xD
01F0 | 70 BD D4 6C A3 88 C0 68 B4 34 AC 3C A0 C6 34 A5 | p l h 4 < 4 01F0 | E1 4B BD D4 6C A3 10 C0 68 69 B4 AC 3C A0 8C 34 | K l hi < 4
0200 | 34 A9 F0 CC A0 05 00 06 E1 28 DC F1 4D 82 E1 04 | 4 ( M 0200 | A5 34 E1 A9 CC A0 05 00 C3 06 28 DC F1 4D C3 82 | 4 ( M
0210 | 94 A5 00 B0 C0 EC 34 F7 20 7D 28 22 F4 00 05 7D | 4 }(" } 0210 | 04 94 A5 00 81 B0 EC EF 34 20 7D 28 22 F4 00 05 | 4 }("
0220 | E1 48 F8 39 4A FF 87 F8 3D 80 CC 61 FF 8C B0 E0 | H 9J = a 0220 | C3 7D 48 F8 39 4A 0F FF F8 3D 80 CC FF 61 8C B0 | }H 9J = a
0230 | 7C E9 50 50 54 87 E7 F0 BE F8 03 F0 E8 0C FF FC | | PPT 0230 | E0 7C E9 50 50 0F 54 E7 F0 BE F8 E1 03 E8 0C FF | | PP T
0240 | 39 E1 29 FC 84 09 00 07 04 94 08 FC FC 94 F8 7D | 9 ) } 0240 | FC C3 39 29 FC 84 09 0F 00 04 94 08 FC F8 94 F8 | 9)
0250 | 83 63 78 03 54 E4 E0 0E 8C 9D 38 0C FF B2 3C C0 | cx T 8 < 0250 | 7D 83 63 07 78 54 E4 E0 1C 8C 9D 38 FE 0C B2 3C | } c xT 8 <
0260 | 80 4C 60 C5 4E 37 08 80 65 E3 EF 0E 86 4C 38 F0 | L` N7 e L8 0260 | C0 80 4C 60 C5 6F 4E 08 80 65 E3 EF 0E 0C 4C 38 | L` oN e L8
0270 | 55 8D 30 80 FF 0A 28 DC DF 45 38 A6 F6 84 60 FF | U 0 ( E8 ` 0270 | F0 1B 55 30 80 FF 0A 28 BF DC 45 38 A6 F6 84 60 | U0 ( E8 `
0280 | 0A 14 B0 CC 1A 3C 66 FE 61 40 F0 0C 90 87 81 F1 | <f a@ 0280 | FF 0A 61 14 CC 1A 3C C3 66 FE 40 F0 0C 90 0E 81 | a < f @
0290 | 91 85 F8 7D 35 68 44 F7 23 EA 9B 0E FC B7 02 E7 | }5hD # 0290 | F1 91 85 F8 6B 7D 68 44 F7 23 EA 9B 1C FC B7 02 | k}hD #
02A0 | 31 4A F4 6A 0A F4 00 00 00 00 00 00 00 00 00 00 | 1J j 02A0 | 62 E7 4A F4 6A 14 F4 00 00 00 00 00 00 00 00 00 | b J j
02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
@@ -140,7 +140,7 @@ I 22567 2025-05-23 20:25:02 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:605
03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0410 | 00 00 00 00 94 02 00 00 | 0410 | 00 00 00 00 95 02 00 00 |
I 22567 2025-05-23 20:25:02 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:60555 (version=GC_EP3 command=44 flag=00) I 22567 2025-05-23 20:25:02 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:60555 (version=GC_EP3 command=44 flag=00)
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 32 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 32.dat 0010 | 33 32 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 32.dat
@@ -5696,52 +5696,52 @@ I 22567 2025-05-23 20:25:18 - [Commands] Sending to C-3 @ ipss:N-3:127.0.0.1:605
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 33 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 33.bin 0010 | 33 33 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 33.bin
0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885 0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885
0030 | 33 33 2E 62 69 6E 00 00 93 02 00 00 | 33.bin 0030 | 33 33 2E 62 69 6E 00 00 94 02 00 00 | 33.bin
I 22567 2025-05-23 20:25:18 - [C-3] Sending quest file chunk quest88533.bin:0 I 22567 2025-05-23 20:25:18 - [C-3] Sending quest file chunk quest88533.bin:0
I 22567 2025-05-23 20:25:18 - [Commands] Sending to C-3 @ ipss:N-3:127.0.0.1:60595 (version=GC_EP3 command=13 flag=00) I 22567 2025-05-23 20:25:18 - [Commands] Sending to C-3 @ ipss:N-3:127.0.0.1:60595 (version=GC_EP3 command=13 flag=00)
0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 33 2E 62 | quest88533.b 0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 33 2E 62 | quest88533.b
0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 04 FC A0 FC 86 | in ? 0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 C4 FC A0 FC FF | in ?
0020 | FF F1 D5 7F 59 47 43 20 45 70 33 F8 FC 55 20 70 | YGC Ep3 U p 0020 | 08 FF F1 FF D5 59 47 43 20 45 70 33 F0 FC 55 20 | YGC Ep3 U
0030 | 61 74 FF 63 68 20 65 6E 61 62 6C D7 65 72 00 F8 | at ch enabl er 0030 | 70 61 FF 74 63 68 20 65 6E 61 62 AF 6C 65 72 00 | pa tch enab ler
0040 | FF A7 F8 FF FF 09 FF 03 00 40 00 80 49 04 4E E1 | @ I N 0040 | F8 FF A7 F8 FF FF FF 09 03 00 40 00 80 49 04 C3 | @ I
0050 | 45 FB B4 9F 10 9F 80 F8 B5 49 08 4E F4 24 C3 00 | E I N $ 0050 | 4E 45 FB B4 9F 3F 10 80 F8 B5 49 08 9D F4 24 C3 | NE ? I $
0060 | F4 71 0C F4 48 03 F8 F7 4A 00 49 10 CA E1 57 E2 | q H J I W 0060 | 00 E2 F4 0C F4 48 03 F0 F7 4A 00 49 10 C3 CA 57 | H J I W
0070 | B2 0D 04 3F 01 00 4A 04 48 04 FC F6 18 04 00 0D | ? J H 0070 | E2 B2 0D 7F 04 01 00 4A 04 48 04 F8 F6 18 04 00 | J H
0080 | 05 02 70 F3 05 48 05 FC F3 05 00 2C 04 05 00 EE | p H , 0080 | 0D 05 E1 02 F3 05 48 05 F8 F3 05 00 2C 04 01 05 | H ,
0090 | D8 18 E5 B0 FE CE 48 00 F8 B3 19 03 01 38 9F 19 | H 8 0090 | EE 30 D8 E5 B0 FC CE 48 00 F8 B3 19 03 71 01 9F | 0 H q
00A0 | 04 85 FA 28 99 F9 E9 FE 96 F9 FF 4A 3F 11 F8 10 | ( J? 00A0 | 19 04 0A FA 28 99 D3 F9 FE 96 F9 FF 7F 4A 11 F8 | ( J
00B0 | 49 30 C9 3C B3 4A 01 F8 B4 03 87 A3 33 8A F7 F3 | I0 < J 3 00B0 | 10 49 30 C9 78 B3 4A 01 F8 B4 06 87 A3 66 8A F7 | I0 x J f
00C0 | 8D F7 01 7D 87 68 02 A6 B8 01 87 79 7C 08 F8 94 | } h y| 00C0 | E6 8D F7 01 0F 7D 68 02 A6 B8 0F 01 79 7C 08 F8 | }h y|
00D0 | 0F 21 FF C0 90 B7 FF 44 90 61 00 14 90 81 00 87 | ! D a 00D0 | 1F 94 21 FF C0 90 FE B7 44 90 61 00 14 90 81 0F | ! D a
00E0 | 18 88 A4 E7 54 FF A5 82 1E 64 A5 B3 00 60 FF A5 | T d ` 00E0 | 00 18 88 A4 E7 FF 54 A5 82 1E 64 A5 B3 00 FF 60 | T d `
00F0 | 0C 00 90 A1 00 08 38 7F C0 00 04 7C A4 34 2C 3C | 8 | 4,< 00F0 | A5 0C 00 90 A1 00 08 FF 38 C0 00 04 7C A4 34 2C | 8 | 4,
0100 | F4 0C 28 05 FC 8C 41 82 00 78 38 C4 FF 00 10 7C | ( A x8 | 0100 | 78 F4 0C 28 05 F8 8C 41 82 00 78 38 FF C4 00 10 | x ( A x8
0110 | E6 2A 14 38 E7 0F FF E0 81 07 E0 F3 28 08 E8 34 | * 8 ( 4 0110 | 7C E6 2A 14 38 1F E7 FF E0 81 07 E6 E0 28 08 E8 | | * 8 (
0120 | 7D 10 08 A6 FF F0 00 7D 08 32 14 39 08 FF FF FE | } } 2 9 0120 | 34 21 7D 08 A6 FE F0 00 7D 08 32 14 39 FF 08 FF | 4!} } 2 9
0130 | 7C CA 33 78 A5 28 FF 00 02 55 29 10 3A 7D 4A 8F | | 3x ( U) :}J 0130 | FE 7C CA 33 78 A5 FF 28 00 02 55 29 10 3A 7D 1F | | 3x ( U) :}
0140 | 4A 14 81 2A E4 21 29 E4 91 7E F8 42 00 FF E8 3C | J * !) ~ B < 0140 | 4A 4A 14 81 2A 43 E4 29 E4 91 FC F8 42 00 FF E8 | JJ *C ) B
0150 | 80 46 98 00 0F C2 74 7C C3 D8 70 9C 2B 78 48 88 | F t| p +xH 0150 | 3C 00 46 98 1F 00 C2 74 7C C3 E0 D8 9C 2B 78 48 | < F t| +xH
0160 | E1 BD B0 61 10 C0 30 2E FA B4 4E 80 04 21 39 E1 | a 0. N !9 0160 | 10 E1 BD C3 B0 10 C0 30 2E F4 B4 4E 80 04 21 C3 | 0. N !
0170 | 00 88 7C 61 45 E3 2C 80 60 38 A0 F0 70 7C 64 2C | |aE , `8 p|d, 0170 | 39 00 88 7C 61 C7 45 2C 80 60 38 E1 A0 70 7C 64 | 9 |a E, `8 p|d
0180 | 2C 80 F8 EC 01 84 F8 63 D0 39 E0 10 C6 E0 3C 80 | , c 9 < 0180 | 2C 01 2C F8 03 EC 84 F8 C6 D0 39 E0 10 8C E0 3C | , , 9 <
0190 | E1 83 DC 80 84 00 87 28 7C 89 C4 38 81 81 44 28 | (| 8 D( 0190 | C3 80 83 DC 80 84 0F 00 28 7C 89 C4 03 38 81 44 | (| 8 D
01A0 | D8 BC 80 3E 1C 38 21 00 40 D0 0C AC 00 20 FF 38 | > 8! @ 8 01A0 | 51 D8 BC 80 7C 1C 38 21 00 40 A0 0C AC 00 FF 20 | Q | 8! @
01B0 | 63 FF FF 7C 83 22 14 00 B8 F8 FF 3C E0 ED B8 60 | c | " < ` 01B0 | 38 63 FF FF 7C 83 22 01 14 B8 FE F8 3C E0 ED B8 | 8c | " <
01C0 | E7 83 20 80 98 A4 C7 03 20 40 38 2C FF 8D 23 00 | @8, # 01C0 | 60 E7 83 01 20 98 8F A4 03 20 40 38 FF 2C 8D 23 | ` @8 , #
01D0 | 01 7C A5 4A 78 F4 7C 54 A6 07 FE FF 54 A5 F8 7E | | Jx |T T ~ 01D0 | 00 01 7C A5 4A E9 78 7C 54 A6 07 FF FE 54 A5 F8 | | J x|T T
01E0 | 7C C6 00 D0 30 FC 38 38 8C E8 32 78 44 C3 EC 4B | | 0 88 2xD K 01E0 | 7E 7C C6 00 61 D0 FC 38 38 18 E8 32 78 87 44 EC | ~| a 88 2x D
01F0 | BD D4 6C 21 A3 C0 68 D2 B4 AC 3C A0 18 34 A5 C3 | l! h < 4 01F0 | 4B BD D4 43 6C A3 C0 68 A4 B4 AC 3C 31 A0 34 A5 | K Cl h <1 4
0200 | 34 A9 CC A0 05 87 00 06 28 DC F1 87 4D 82 04 94 | 4 ( M 0200 | 86 34 A9 CC A0 0F 05 00 06 28 DC 0F F1 4D 82 04 | 4 ( M
0210 | A5 03 00 B0 EC DF 34 20 7D 28 22 F4 00 87 05 7D | 4 }(" } 0210 | 94 07 A5 00 B0 EC BE 34 20 7D 28 22 F4 0F 00 05 | 4 }("
0220 | 48 F8 39 1F 4A FF F8 3D 80 FE CC 61 8C B0 E0 7C | H 9 J = a | 0220 | 7D 48 F8 3F 39 4A FF F8 3D 80 FC CC 61 8C B0 E0 | }H ?9J = a
0230 | E9 50 1F 50 54 E7 F0 BE C2 F8 03 E8 0C FF 87 FC | P PT 0230 | 7C E9 3F 50 50 54 E7 F0 BE 84 F8 03 E8 0C 0F FF | | ?PPT
0240 | 39 29 FC 84 1F 09 00 04 94 08 F0 FC 94 F8 7D 83 | 9) } 0240 | FC 39 29 FC 3F 84 09 00 04 94 08 E0 FC 94 F8 7D | 9) ? }
0250 | 0F 63 78 54 E4 E0 38 8C 9D 38 FC 0C B2 3C C0 80 | cxT 8 8 < 0250 | 1F 83 63 78 54 E4 70 E0 8C 9D 38 F8 0C B2 3C C0 | cxT p 8 <
0260 | 4C 60 DF C5 4E 08 80 65 E3 EF 0E 18 4C 38 36 F0 | L` N e L86 0260 | 80 4C BF 60 C5 4E 08 80 65 E3 EF 31 0E 4C 38 6C | L ` N e 1 L8l
0270 | 55 30 80 FF 0A 28 7E DC 45 38 A6 F6 84 C3 60 FF | U0 (~ E8 ` 0270 | F0 55 30 80 FF 0A 28 FC DC 45 38 A6 F6 84 86 60 | U0 ( E8 `
0280 | 0A 14 CC 1A 3C 86 66 FE 40 F0 0C 1D 90 81 F1 91 | < f @ 0280 | FF 0A 14 CC 1A 0D 3C 66 FE 40 F0 3B 0C 90 81 F1 | <f @ ;
0290 | 85 D6 F8 7D 68 44 F7 23 EA 9B 38 FC B7 02 C4 E7 | }hD # 8 0290 | 91 85 AC F8 7D 68 44 F7 23 EA 71 9B FC B7 02 88 | }hD # q
02A0 | 4A F4 6A 28 F4 00 00 00 00 00 00 00 00 00 00 00 | J j( 02A0 | E7 4A F4 51 6A F4 00 00 00 00 00 00 00 00 00 00 | J Qj
02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
@@ -5764,7 +5764,7 @@ I 22567 2025-05-23 20:25:18 - [Commands] Sending to C-3 @ ipss:N-3:127.0.0.1:605
03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0410 | 00 00 00 00 93 02 00 00 | 0410 | 00 00 00 00 94 02 00 00 |
I 22567 2025-05-23 20:25:18 - [Commands] Sending to C-3 @ ipss:N-3:127.0.0.1:60595 (version=GC_EP3 command=44 flag=00) I 22567 2025-05-23 20:25:18 - [Commands] Sending to C-3 @ ipss:N-3:127.0.0.1:60595 (version=GC_EP3 command=44 flag=00)
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 33 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 33.dat 0010 | 33 33 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 33.dat
+88 -88
View File
@@ -72,52 +72,52 @@ I 40093 2025-05-20 22:23:09 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:618
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 32 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 32.bin 0010 | 33 32 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 32.bin
0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885 0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885
0030 | 33 32 2E 62 69 6E 00 00 94 02 00 00 | 32.bin 0030 | 33 32 2E 62 69 6E 00 00 95 02 00 00 | 32.bin
I 40093 2025-05-20 22:23:09 - [C-1] Sending quest file chunk quest88532.bin:0 I 40093 2025-05-20 22:23:09 - [C-1] Sending quest file chunk quest88532.bin:0
I 40093 2025-05-20 22:23:09 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:61866 (version=GC_EP3 command=13 flag=00) I 40093 2025-05-20 22:23:09 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:61866 (version=GC_EP3 command=13 flag=00)
0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 32 2E 62 | quest88532.b 0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 32 2E 62 | quest88532.b
0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 04 FC A0 FC 86 | in ? 0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 C4 FC A0 FC FF | in ?
0020 | FF F1 D4 FF 59 47 43 20 45 70 33 20 FF 55 53 41 | YGC Ep3 USA 0020 | 08 FF F1 FF D4 59 47 43 20 45 70 33 FF 20 55 53 | YGC Ep3 US
0030 | 20 70 61 74 63 FF 68 20 65 6E 61 62 6C 65 EB 72 | patc h enable r 0030 | 41 20 70 61 74 FF 63 68 20 65 6E 61 62 6C D7 65 | A pat ch enabl e
0040 | 00 F8 FF A6 F8 FF FF 09 03 FF 00 40 00 80 49 4C | @ IL 0040 | 72 00 F8 FF A6 F8 FF FF 09 FF 03 00 40 00 80 49 | r @ I
0050 | 2A 45 F0 FB 28 9B 10 80 4F F8 B5 49 50 F4 A7 24 | *E ( O IP $ 0050 | 4C 2A E1 45 FB 28 9B 10 9F 80 F8 B5 49 50 4E F4 | L* E ( IPN
0060 | C3 00 F4 54 38 F4 48 03 FC F7 4A 00 49 F0 A5 57 | T8 H J I W 0060 | 24 C3 00 F4 71 54 F4 48 03 F8 F7 4A 00 49 F0 A5 | $ qT H J I
0070 | F0 E2 B2 0D 04 01 1F 00 4A 04 48 04 7E F6 18 04 | J H ~ 0070 | E1 57 E2 B2 0D 04 3F 01 00 4A 04 48 04 FC F6 18 | W ? J H
0080 | 00 0D 05 02 38 F3 05 48 05 7E F3 05 00 2C 04 05 | 8 H ~ , 0080 | 04 00 0D 05 02 70 F3 05 48 05 FC F3 05 00 2C 04 | p H ,
0090 | 00 EE D8 0C E5 B0 CE 7F 48 00 F8 B3 19 03 01 9C | H 0090 | 05 00 EE D8 18 E5 B0 FE CE 48 00 F8 B3 19 03 01 | H
00A0 | 9F 19 04 C2 FA 28 99 F9 FE F4 96 F9 FF 4A 11 8F | ( J 00A0 | 38 9F 19 04 85 FA 28 99 F9 E9 FE 96 F9 FF 4A 1F | 8 ( J
00B0 | F8 10 49 10 B3 CF 4A 01 F8 B4 87 C0 A3 8A CC F7 | I J 00B0 | 11 F8 10 49 10 9F B3 4A 01 F8 B4 81 87 A3 99 8A | I J
00C0 | 8D FC F7 01 7D 68 02 E1 A6 B8 01 79 7C E1 08 F8 | }h y| 00C0 | F7 F9 8D F7 01 7D 68 C3 02 A6 B8 01 79 C3 7C 08 | }h y |
00D0 | 94 21 FF C3 C0 90 B7 44 90 FF 61 00 14 90 81 00 | ! D a 00D0 | F8 94 21 87 FF C0 90 B7 44 FF 90 61 00 14 90 81 | ! D a
00E0 | 18 88 E1 A4 E7 54 A5 82 FF 1E 64 A5 B3 00 60 A5 | T d ` 00E0 | 00 18 C3 88 A4 E7 54 A5 FF 82 1E 64 A5 B3 00 60 | T d `
00F0 | 0C FF 00 90 A1 00 08 38 C0 00 1F 04 7C A4 34 2C | 8 | 4, 00F0 | A5 FF 0C 00 90 A1 00 08 38 C0 3F 00 04 7C A4 34 | 8 ? | 4
0100 | 0F F4 0C 28 05 8C FF 41 82 00 78 38 C4 00 10 FF | ( A x8 0100 | 2C 1E F4 0C 28 05 FE 8C 41 82 00 78 38 C4 00 FF | , ( A x8
0110 | 7C E6 2A 14 38 E7 FF E0 C3 81 07 E0 28 08 3C E8 | | * 8 ( < 0110 | 10 7C E6 2A 14 38 E7 FF 87 E0 81 07 E0 28 79 08 | | * 8 (y
0120 | 34 7D C4 08 A6 F0 00 FF 7D 08 32 14 39 08 FF FE | 4} } 2 9 0120 | E8 34 7D 88 08 A6 F0 FF 00 7D 08 32 14 39 08 FF | 4} } 2 9
0130 | FF 7C CA 33 78 A5 28 00 02 FF 55 29 10 3A 7D 4A | | 3x ( U) :}J 0130 | FF FE 7C CA 33 78 A5 28 00 FF 02 55 29 10 3A 7D | | 3x ( U) :}
0140 | 4A 14 63 81 2A E4 29 88 E4 91 F8 1F 42 00 FF E8 | J c * ) B 0140 | 4A 4A C7 14 81 2A E4 29 10 E4 91 3F F8 42 00 FF | JJ * ) ? B
0150 | 3C E0 46 98 00 C2 74 03 7C C3 D8 1C 9C 2B 78 48 | < F t | +xH 0150 | E8 3C C0 46 98 00 C2 07 74 7C C3 D8 38 9C 2B 78 | < F t| 8 +x
0160 | 62 E1 BD B0 10 98 C0 30 2E 7E B4 4E 80 04 21 39 | b 0.~ N !9 0160 | 48 C4 E1 BD B0 10 30 C0 30 2E FD B4 4E 80 04 21 | H 0 0. N !
0170 | 00 F8 88 7C 61 45 2C 80 38 60 38 A0 3C 70 7C 64 | |aE, 8`8 <p|d 0170 | 39 00 F0 88 7C 61 45 2C 71 80 60 38 A0 78 70 7C | 9 |aE,q `8 xp|
0180 | 2C 2C 60 F8 EC 84 C0 F8 D0 39 98 E0 10 71 E0 3C | ,,` 9 q < 0180 | 64 2C 2C C0 F8 EC 84 80 F8 D0 31 39 E0 10 E3 E0 | d,, 19
0190 | 80 83 F8 DC 80 84 00 28 7C 61 89 C4 38 81 20 44 | (|a 8 D 0190 | 3C 80 83 F0 DC 80 84 00 28 C3 7C 89 C4 38 81 40 | < ( | 8 @
01A0 | D8 8A BC 80 1C 0F 38 21 00 40 0C F4 AC 00 20 38 | 8! @ 8 01A0 | 44 D8 14 BC 80 1F 1C 38 21 00 40 E8 0C AC 00 20 | D 8! @
01B0 | 63 3F FF FF 7C 83 22 14 C0 B8 F8 3C E0 3F ED B8 | c? | " < ? 01B0 | 38 7F 63 FF FF 7C 83 22 14 80 B8 F8 3C 7F E0 ED | 8 c | " <
01C0 | 60 E7 83 20 E0 98 A4 03 20 F1 40 38 2C 8D 23 3F | ` @8, #? 01C0 | B8 60 E7 83 20 C0 98 A4 03 E3 20 40 38 2C 8D 7F | ` @8,
01D0 | 00 01 7C A5 4A 78 FD 7C 54 A6 07 FE 54 A5 3F F8 | | Jx |T T ? 01D0 | 23 00 01 7C A5 4A 78 FA 7C 54 A6 07 FE 54 7F A5 | # | Jx |T T
01E0 | 7E 7C C6 00 D0 0C FC 38 38 E8 E3 32 78 44 EC 4B | ~| 88 2xD K 01E0 | F8 7E 7C C6 00 D0 18 FC 38 38 C6 E8 32 78 44 EC | ~| 88 2xD
01F0 | 70 BD D4 6C A3 88 C0 68 B4 34 AC 3C A0 C6 34 A5 | p l h 4 < 4 01F0 | E1 4B BD D4 6C A3 10 C0 68 69 B4 AC 3C A0 8C 34 | K l hi < 4
0200 | 34 A9 F0 CC A0 05 00 06 E1 28 DC F1 4D 82 E1 04 | 4 ( M 0200 | A5 34 E1 A9 CC A0 05 00 C3 06 28 DC F1 4D C3 82 | 4 ( M
0210 | 94 A5 00 B0 C0 EC 34 F7 20 7D 28 22 F4 00 05 7D | 4 }(" } 0210 | 04 94 A5 00 81 B0 EC EF 34 20 7D 28 22 F4 00 05 | 4 }("
0220 | E1 48 F8 39 4A FF 87 F8 3D 80 CC 61 FF 8C B0 E0 | H 9J = a 0220 | C3 7D 48 F8 39 4A 0F FF F8 3D 80 CC FF 61 8C B0 | }H 9J = a
0230 | 7C E9 50 50 54 87 E7 F0 BE F8 03 F0 E8 0C FF FC | | PPT 0230 | E0 7C E9 50 50 0F 54 E7 F0 BE F8 E1 03 E8 0C FF | | PP T
0240 | 39 E1 29 FC 84 09 00 07 04 94 08 FC FC 94 F8 7D | 9 ) } 0240 | FC C3 39 29 FC 84 09 0F 00 04 94 08 FC F8 94 F8 | 9)
0250 | 83 63 78 03 54 E4 E0 0E 8C 9D 38 0C FF B2 3C C0 | cx T 8 < 0250 | 7D 83 63 07 78 54 E4 E0 1C 8C 9D 38 FE 0C B2 3C | } c xT 8 <
0260 | 80 4C 60 C5 4E 37 08 80 65 E3 EF 0E 86 4C 38 F0 | L` N7 e L8 0260 | C0 80 4C 60 C5 6F 4E 08 80 65 E3 EF 0E 0C 4C 38 | L` oN e L8
0270 | 55 8D 30 80 FF 0A 28 DC DF 45 38 A6 F6 84 60 FF | U 0 ( E8 ` 0270 | F0 1B 55 30 80 FF 0A 28 BF DC 45 38 A6 F6 84 60 | U0 ( E8 `
0280 | 0A 14 B0 CC 1A 3C 66 FE 61 40 F0 0C 90 87 81 F1 | <f a@ 0280 | FF 0A 61 14 CC 1A 3C C3 66 FE 40 F0 0C 90 0E 81 | a < f @
0290 | 91 85 F8 7D 35 68 44 F7 23 EA 9B 0E FC B7 02 E7 | }5hD # 0290 | F1 91 85 F8 6B 7D 68 44 F7 23 EA 9B 1C FC B7 02 | k}hD #
02A0 | 31 4A F4 6A 0A F4 00 00 00 00 00 00 00 00 00 00 | 1J j 02A0 | 62 E7 4A F4 6A 14 F4 00 00 00 00 00 00 00 00 00 | b J j
02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
@@ -140,7 +140,7 @@ I 40093 2025-05-20 22:23:09 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:618
03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0410 | 00 00 00 00 94 02 00 00 | 0410 | 00 00 00 00 95 02 00 00 |
I 40093 2025-05-20 22:23:09 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:61866 (version=GC_EP3 command=44 flag=00) I 40093 2025-05-20 22:23:09 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:61866 (version=GC_EP3 command=44 flag=00)
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 32 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 32.dat 0010 | 33 32 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 32.dat
@@ -4349,52 +4349,52 @@ I 40093 2025-05-20 22:23:38 - [Commands] Sending to C-2 @ ipss:N-2:127.0.0.1:619
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 33 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 33.bin 0010 | 33 33 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 33.bin
0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885 0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885
0030 | 33 33 2E 62 69 6E 00 00 93 02 00 00 | 33.bin 0030 | 33 33 2E 62 69 6E 00 00 94 02 00 00 | 33.bin
I 40093 2025-05-20 22:23:38 - [C-2] Sending quest file chunk quest88533.bin:0 I 40093 2025-05-20 22:23:38 - [C-2] Sending quest file chunk quest88533.bin:0
I 40093 2025-05-20 22:23:38 - [Commands] Sending to C-2 @ ipss:N-2:127.0.0.1:61901 (version=GC_EP3 command=13 flag=00) I 40093 2025-05-20 22:23:38 - [Commands] Sending to C-2 @ ipss:N-2:127.0.0.1:61901 (version=GC_EP3 command=13 flag=00)
0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 33 2E 62 | quest88533.b 0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 33 2E 62 | quest88533.b
0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 04 FC A0 FC 86 | in ? 0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 C4 FC A0 FC FF | in ?
0020 | FF F1 D5 7F 59 47 43 20 45 70 33 F8 FC 55 20 70 | YGC Ep3 U p 0020 | 08 FF F1 FF D5 59 47 43 20 45 70 33 F0 FC 55 20 | YGC Ep3 U
0030 | 61 74 FF 63 68 20 65 6E 61 62 6C D7 65 72 00 F8 | at ch enabl er 0030 | 70 61 FF 74 63 68 20 65 6E 61 62 AF 6C 65 72 00 | pa tch enab ler
0040 | FF A7 F8 FF FF 09 FF 03 00 40 00 80 49 04 4E E1 | @ I N 0040 | F8 FF A7 F8 FF FF FF 09 03 00 40 00 80 49 04 C3 | @ I
0050 | 45 FB B4 9F 10 9F 80 F8 B5 49 08 4E F4 24 C3 00 | E I N $ 0050 | 4E 45 FB B4 9F 3F 10 80 F8 B5 49 08 9D F4 24 C3 | NE ? I $
0060 | F4 71 0C F4 48 03 F8 F7 4A 00 49 10 CA E1 57 E2 | q H J I W 0060 | 00 E2 F4 0C F4 48 03 F0 F7 4A 00 49 10 C3 CA 57 | H J I W
0070 | B2 0D 04 3F 01 00 4A 04 48 04 FC F6 18 04 00 0D | ? J H 0070 | E2 B2 0D 7F 04 01 00 4A 04 48 04 F8 F6 18 04 00 | J H
0080 | 05 02 70 F3 05 48 05 FC F3 05 00 2C 04 05 00 EE | p H , 0080 | 0D 05 E1 02 F3 05 48 05 F8 F3 05 00 2C 04 01 05 | H ,
0090 | D8 18 E5 B0 FE CE 48 00 F8 B3 19 03 01 38 9F 19 | H 8 0090 | EE 30 D8 E5 B0 FC CE 48 00 F8 B3 19 03 71 01 9F | 0 H q
00A0 | 04 85 FA 28 99 F9 E9 FE 96 F9 FF 4A 3F 11 F8 10 | ( J? 00A0 | 19 04 0A FA 28 99 D3 F9 FE 96 F9 FF 7F 4A 11 F8 | ( J
00B0 | 49 30 C9 3C B3 4A 01 F8 B4 03 87 A3 33 8A F7 F3 | I0 < J 3 00B0 | 10 49 30 C9 78 B3 4A 01 F8 B4 06 87 A3 66 8A F7 | I0 x J f
00C0 | 8D F7 01 7D 87 68 02 A6 B8 01 87 79 7C 08 F8 94 | } h y| 00C0 | E6 8D F7 01 0F 7D 68 02 A6 B8 0F 01 79 7C 08 F8 | }h y|
00D0 | 0F 21 FF C0 90 B7 FF 44 90 61 00 14 90 81 00 87 | ! D a 00D0 | 1F 94 21 FF C0 90 FE B7 44 90 61 00 14 90 81 0F | ! D a
00E0 | 18 88 A4 E7 54 FF A5 82 1E 64 A5 B3 00 60 FF A5 | T d ` 00E0 | 00 18 88 A4 E7 FF 54 A5 82 1E 64 A5 B3 00 FF 60 | T d `
00F0 | 0C 00 90 A1 00 08 38 7F C0 00 04 7C A4 34 2C 3C | 8 | 4,< 00F0 | A5 0C 00 90 A1 00 08 FF 38 C0 00 04 7C A4 34 2C | 8 | 4,
0100 | F4 0C 28 05 FC 8C 41 82 00 78 38 C4 FF 00 10 7C | ( A x8 | 0100 | 78 F4 0C 28 05 F8 8C 41 82 00 78 38 FF C4 00 10 | x ( A x8
0110 | E6 2A 14 38 E7 0F FF E0 81 07 E0 F3 28 08 E8 34 | * 8 ( 4 0110 | 7C E6 2A 14 38 1F E7 FF E0 81 07 E6 E0 28 08 E8 | | * 8 (
0120 | 7D 10 08 A6 FF F0 00 7D 08 32 14 39 08 FF FF FE | } } 2 9 0120 | 34 21 7D 08 A6 FE F0 00 7D 08 32 14 39 FF 08 FF | 4!} } 2 9
0130 | 7C CA 33 78 A5 28 FF 00 02 55 29 10 3A 7D 4A 8F | | 3x ( U) :}J 0130 | FE 7C CA 33 78 A5 FF 28 00 02 55 29 10 3A 7D 1F | | 3x ( U) :}
0140 | 4A 14 81 2A E4 21 29 E4 91 7E F8 42 00 FF E8 3C | J * !) ~ B < 0140 | 4A 4A 14 81 2A 43 E4 29 E4 91 FC F8 42 00 FF E8 | JJ *C ) B
0150 | 80 46 98 00 0F C2 74 7C C3 D8 70 9C 2B 78 48 88 | F t| p +xH 0150 | 3C 00 46 98 1F 00 C2 74 7C C3 E0 D8 9C 2B 78 48 | < F t| +xH
0160 | E1 BD B0 61 10 C0 30 2E FA B4 4E 80 04 21 39 E1 | a 0. N !9 0160 | 10 E1 BD C3 B0 10 C0 30 2E F4 B4 4E 80 04 21 C3 | 0. N !
0170 | 00 88 7C 61 45 E3 2C 80 60 38 A0 F0 70 7C 64 2C | |aE , `8 p|d, 0170 | 39 00 88 7C 61 C7 45 2C 80 60 38 E1 A0 70 7C 64 | 9 |a E, `8 p|d
0180 | 2C 80 F8 EC 01 84 F8 63 D0 39 E0 10 C6 E0 3C 80 | , c 9 < 0180 | 2C 01 2C F8 03 EC 84 F8 C6 D0 39 E0 10 8C E0 3C | , , 9 <
0190 | E1 83 DC 80 84 00 87 28 7C 89 C4 38 81 81 44 28 | (| 8 D( 0190 | C3 80 83 DC 80 84 0F 00 28 7C 89 C4 03 38 81 44 | (| 8 D
01A0 | D8 BC 80 3E 1C 38 21 00 40 D0 0C AC 00 20 FF 38 | > 8! @ 8 01A0 | 51 D8 BC 80 7C 1C 38 21 00 40 A0 0C AC 00 FF 20 | Q | 8! @
01B0 | 63 FF FF 7C 83 22 14 00 B8 F8 FF 3C E0 ED B8 60 | c | " < ` 01B0 | 38 63 FF FF 7C 83 22 01 14 B8 FE F8 3C E0 ED B8 | 8c | " <
01C0 | E7 83 20 80 98 A4 C7 03 20 40 38 2C FF 8D 23 00 | @8, # 01C0 | 60 E7 83 01 20 98 8F A4 03 20 40 38 FF 2C 8D 23 | ` @8 , #
01D0 | 01 7C A5 4A 78 F4 7C 54 A6 07 FE FF 54 A5 F8 7E | | Jx |T T ~ 01D0 | 00 01 7C A5 4A E9 78 7C 54 A6 07 FF FE 54 A5 F8 | | J x|T T
01E0 | 7C C6 00 D0 30 FC 38 38 8C E8 32 78 44 C3 EC 4B | | 0 88 2xD K 01E0 | 7E 7C C6 00 61 D0 FC 38 38 18 E8 32 78 87 44 EC | ~| a 88 2x D
01F0 | BD D4 6C 21 A3 C0 68 D2 B4 AC 3C A0 18 34 A5 C3 | l! h < 4 01F0 | 4B BD D4 43 6C A3 C0 68 A4 B4 AC 3C 31 A0 34 A5 | K Cl h <1 4
0200 | 34 A9 CC A0 05 87 00 06 28 DC F1 87 4D 82 04 94 | 4 ( M 0200 | 86 34 A9 CC A0 0F 05 00 06 28 DC 0F F1 4D 82 04 | 4 ( M
0210 | A5 03 00 B0 EC DF 34 20 7D 28 22 F4 00 87 05 7D | 4 }(" } 0210 | 94 07 A5 00 B0 EC BE 34 20 7D 28 22 F4 0F 00 05 | 4 }("
0220 | 48 F8 39 1F 4A FF F8 3D 80 FE CC 61 8C B0 E0 7C | H 9 J = a | 0220 | 7D 48 F8 3F 39 4A FF F8 3D 80 FC CC 61 8C B0 E0 | }H ?9J = a
0230 | E9 50 1F 50 54 E7 F0 BE C2 F8 03 E8 0C FF 87 FC | P PT 0230 | 7C E9 3F 50 50 54 E7 F0 BE 84 F8 03 E8 0C 0F FF | | ?PPT
0240 | 39 29 FC 84 1F 09 00 04 94 08 F0 FC 94 F8 7D 83 | 9) } 0240 | FC 39 29 FC 3F 84 09 00 04 94 08 E0 FC 94 F8 7D | 9) ? }
0250 | 0F 63 78 54 E4 E0 38 8C 9D 38 FC 0C B2 3C C0 80 | cxT 8 8 < 0250 | 1F 83 63 78 54 E4 70 E0 8C 9D 38 F8 0C B2 3C C0 | cxT p 8 <
0260 | 4C 60 DF C5 4E 08 80 65 E3 EF 0E 18 4C 38 36 F0 | L` N e L86 0260 | 80 4C BF 60 C5 4E 08 80 65 E3 EF 31 0E 4C 38 6C | L ` N e 1 L8l
0270 | 55 30 80 FF 0A 28 7E DC 45 38 A6 F6 84 C3 60 FF | U0 (~ E8 ` 0270 | F0 55 30 80 FF 0A 28 FC DC 45 38 A6 F6 84 86 60 | U0 ( E8 `
0280 | 0A 14 CC 1A 3C 86 66 FE 40 F0 0C 1D 90 81 F1 91 | < f @ 0280 | FF 0A 14 CC 1A 0D 3C 66 FE 40 F0 3B 0C 90 81 F1 | <f @ ;
0290 | 85 D6 F8 7D 68 44 F7 23 EA 9B 38 FC B7 02 C4 E7 | }hD # 8 0290 | 91 85 AC F8 7D 68 44 F7 23 EA 71 9B FC B7 02 88 | }hD # q
02A0 | 4A F4 6A 28 F4 00 00 00 00 00 00 00 00 00 00 00 | J j( 02A0 | E7 4A F4 51 6A F4 00 00 00 00 00 00 00 00 00 00 | J Qj
02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
@@ -4417,7 +4417,7 @@ I 40093 2025-05-20 22:23:38 - [Commands] Sending to C-2 @ ipss:N-2:127.0.0.1:619
03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0410 | 00 00 00 00 93 02 00 00 | 0410 | 00 00 00 00 94 02 00 00 |
I 40093 2025-05-20 22:23:38 - [Commands] Sending to C-2 @ ipss:N-2:127.0.0.1:61901 (version=GC_EP3 command=44 flag=00) I 40093 2025-05-20 22:23:38 - [Commands] Sending to C-2 @ ipss:N-2:127.0.0.1:61901 (version=GC_EP3 command=44 flag=00)
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 33 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 33.dat 0010 | 33 33 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 33.dat
+44 -44
View File
@@ -72,52 +72,52 @@ I 22576 2025-10-26 23:11:57 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:592
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 32 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 32.bin 0010 | 33 32 2E 62 69 6E 00 00 00 00 00 00 00 00 00 00 | 32.bin
0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885 0020 | 00 00 00 00 00 00 00 00 71 75 65 73 74 38 38 35 | quest885
0030 | 33 32 2E 62 69 6E 00 00 94 02 00 00 | 32.bin 0030 | 33 32 2E 62 69 6E 00 00 95 02 00 00 | 32.bin
I 22576 2025-10-26 23:11:57 - [C-1] Sending quest file chunk quest88532.bin:0 I 22576 2025-10-26 23:11:57 - [C-1] Sending quest file chunk quest88532.bin:0
I 22576 2025-10-26 23:11:57 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:59232 (version=GC_EP3 command=13 flag=00) I 22576 2025-10-26 23:11:57 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:59232 (version=GC_EP3 command=13 flag=00)
0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 32 2E 62 | quest88532.b 0000 | 13 00 18 04 71 75 65 73 74 38 38 35 33 32 2E 62 | quest88532.b
0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 04 FC A0 FC 86 | in ? 0010 | 69 6E 00 00 3F D4 01 00 00 8C 04 C4 FC A0 FC FF | in ?
0020 | FF F1 D4 FF 59 47 43 20 45 70 33 20 FF 55 53 41 | YGC Ep3 USA 0020 | 08 FF F1 FF D4 59 47 43 20 45 70 33 FF 20 55 53 | YGC Ep3 US
0030 | 20 70 61 74 63 FF 68 20 65 6E 61 62 6C 65 EB 72 | patc h enable r 0030 | 41 20 70 61 74 FF 63 68 20 65 6E 61 62 6C D7 65 | A pat ch enabl e
0040 | 00 F8 FF A6 F8 FF FF 09 03 FF 00 40 00 80 49 4C | @ IL 0040 | 72 00 F8 FF A6 F8 FF FF 09 FF 03 00 40 00 80 49 | r @ I
0050 | 2A 45 F0 FB 28 9B 10 80 4F F8 B5 49 50 F4 A7 24 | *E ( O IP $ 0050 | 4C 2A E1 45 FB 28 9B 10 9F 80 F8 B5 49 50 4E F4 | L* E ( IPN
0060 | C3 00 F4 54 38 F4 48 03 FC F7 4A 00 49 F0 A5 57 | T8 H J I W 0060 | 24 C3 00 F4 71 54 F4 48 03 F8 F7 4A 00 49 F0 A5 | $ qT H J I
0070 | F0 E2 B2 0D 04 01 1F 00 4A 04 48 04 7E F6 18 04 | J H ~ 0070 | E1 57 E2 B2 0D 04 3F 01 00 4A 04 48 04 FC F6 18 | W ? J H
0080 | 00 0D 05 02 38 F3 05 48 05 7E F3 05 00 2C 04 05 | 8 H ~ , 0080 | 04 00 0D 05 02 70 F3 05 48 05 FC F3 05 00 2C 04 | p H ,
0090 | 00 EE D8 0C E5 B0 CE 7F 48 00 F8 B3 19 03 01 9C | H 0090 | 05 00 EE D8 18 E5 B0 FE CE 48 00 F8 B3 19 03 01 | H
00A0 | 9F 19 04 C2 FA 28 99 F9 FE F4 96 F9 FF 4A 11 8F | ( J 00A0 | 38 9F 19 04 85 FA 28 99 F9 E9 FE 96 F9 FF 4A 1F | 8 ( J
00B0 | F8 10 49 10 B3 CF 4A 01 F8 B4 87 C0 A3 8A CC F7 | I J 00B0 | 11 F8 10 49 10 9F B3 4A 01 F8 B4 81 87 A3 99 8A | I J
00C0 | 8D FC F7 01 7D 68 02 E1 A6 B8 01 79 7C E1 08 F8 | }h y| 00C0 | F7 F9 8D F7 01 7D 68 C3 02 A6 B8 01 79 C3 7C 08 | }h y |
00D0 | 94 21 FF C3 C0 90 B7 44 90 FF 61 00 14 90 81 00 | ! D a 00D0 | F8 94 21 87 FF C0 90 B7 44 FF 90 61 00 14 90 81 | ! D a
00E0 | 18 88 E1 A4 E7 54 A5 82 FF 1E 64 A5 B3 00 60 A5 | T d ` 00E0 | 00 18 C3 88 A4 E7 54 A5 FF 82 1E 64 A5 B3 00 60 | T d `
00F0 | 0C FF 00 90 A1 00 08 38 C0 00 1F 04 7C A4 34 2C | 8 | 4, 00F0 | A5 FF 0C 00 90 A1 00 08 38 C0 3F 00 04 7C A4 34 | 8 ? | 4
0100 | 0F F4 0C 28 05 8C FF 41 82 00 78 38 C4 00 10 FF | ( A x8 0100 | 2C 1E F4 0C 28 05 FE 8C 41 82 00 78 38 C4 00 FF | , ( A x8
0110 | 7C E6 2A 14 38 E7 FF E0 C3 81 07 E0 28 08 3C E8 | | * 8 ( < 0110 | 10 7C E6 2A 14 38 E7 FF 87 E0 81 07 E0 28 79 08 | | * 8 (y
0120 | 34 7D C4 08 A6 F0 00 FF 7D 08 32 14 39 08 FF FE | 4} } 2 9 0120 | E8 34 7D 88 08 A6 F0 FF 00 7D 08 32 14 39 08 FF | 4} } 2 9
0130 | FF 7C CA 33 78 A5 28 00 02 FF 55 29 10 3A 7D 4A | | 3x ( U) :}J 0130 | FF FE 7C CA 33 78 A5 28 00 FF 02 55 29 10 3A 7D | | 3x ( U) :}
0140 | 4A 14 63 81 2A E4 29 88 E4 91 F8 1F 42 00 FF E8 | J c * ) B 0140 | 4A 4A C7 14 81 2A E4 29 10 E4 91 3F F8 42 00 FF | JJ * ) ? B
0150 | 3C E0 46 98 00 C2 74 03 7C C3 D8 1C 9C 2B 78 48 | < F t | +xH 0150 | E8 3C C0 46 98 00 C2 07 74 7C C3 D8 38 9C 2B 78 | < F t| 8 +x
0160 | 62 E1 BD B0 10 98 C0 30 2E 7E B4 4E 80 04 21 39 | b 0.~ N !9 0160 | 48 C4 E1 BD B0 10 30 C0 30 2E FD B4 4E 80 04 21 | H 0 0. N !
0170 | 00 F8 88 7C 61 45 2C 80 38 60 38 A0 3C 70 7C 64 | |aE, 8`8 <p|d 0170 | 39 00 F0 88 7C 61 45 2C 71 80 60 38 A0 78 70 7C | 9 |aE,q `8 xp|
0180 | 2C 2C 60 F8 EC 84 C0 F8 D0 39 98 E0 10 71 E0 3C | ,,` 9 q < 0180 | 64 2C 2C C0 F8 EC 84 80 F8 D0 31 39 E0 10 E3 E0 | d,, 19
0190 | 80 83 F8 DC 80 84 00 28 7C 61 89 C4 38 81 20 44 | (|a 8 D 0190 | 3C 80 83 F0 DC 80 84 00 28 C3 7C 89 C4 38 81 40 | < ( | 8 @
01A0 | D8 8A BC 80 1C 0F 38 21 00 40 0C F4 AC 00 20 38 | 8! @ 8 01A0 | 44 D8 14 BC 80 1F 1C 38 21 00 40 E8 0C AC 00 20 | D 8! @
01B0 | 63 3F FF FF 7C 83 22 14 C0 B8 F8 3C E0 3F ED B8 | c? | " < ? 01B0 | 38 7F 63 FF FF 7C 83 22 14 80 B8 F8 3C 7F E0 ED | 8 c | " <
01C0 | 60 E7 83 20 E0 98 A4 03 20 F1 40 38 2C 8D 23 3F | ` @8, #? 01C0 | B8 60 E7 83 20 C0 98 A4 03 E3 20 40 38 2C 8D 7F | ` @8,
01D0 | 00 01 7C A5 4A 78 FD 7C 54 A6 07 FE 54 A5 3F F8 | | Jx |T T ? 01D0 | 23 00 01 7C A5 4A 78 FA 7C 54 A6 07 FE 54 7F A5 | # | Jx |T T
01E0 | 7E 7C C6 00 D0 0C FC 38 38 E8 E3 32 78 44 EC 4B | ~| 88 2xD K 01E0 | F8 7E 7C C6 00 D0 18 FC 38 38 C6 E8 32 78 44 EC | ~| 88 2xD
01F0 | 70 BD D4 6C A3 88 C0 68 B4 34 AC 3C A0 C6 34 A5 | p l h 4 < 4 01F0 | E1 4B BD D4 6C A3 10 C0 68 69 B4 AC 3C A0 8C 34 | K l hi < 4
0200 | 34 A9 F0 CC A0 05 00 06 E1 28 DC F1 4D 82 E1 04 | 4 ( M 0200 | A5 34 E1 A9 CC A0 05 00 C3 06 28 DC F1 4D C3 82 | 4 ( M
0210 | 94 A5 00 B0 C0 EC 34 F7 20 7D 28 22 F4 00 05 7D | 4 }(" } 0210 | 04 94 A5 00 81 B0 EC EF 34 20 7D 28 22 F4 00 05 | 4 }("
0220 | E1 48 F8 39 4A FF 87 F8 3D 80 CC 61 FF 8C B0 E0 | H 9J = a 0220 | C3 7D 48 F8 39 4A 0F FF F8 3D 80 CC FF 61 8C B0 | }H 9J = a
0230 | 7C E9 50 50 54 87 E7 F0 BE F8 03 F0 E8 0C FF FC | | PPT 0230 | E0 7C E9 50 50 0F 54 E7 F0 BE F8 E1 03 E8 0C FF | | PP T
0240 | 39 E1 29 FC 84 09 00 07 04 94 08 FC FC 94 F8 7D | 9 ) } 0240 | FC C3 39 29 FC 84 09 0F 00 04 94 08 FC F8 94 F8 | 9)
0250 | 83 63 78 03 54 E4 E0 0E 8C 9D 38 0C FF B2 3C C0 | cx T 8 < 0250 | 7D 83 63 07 78 54 E4 E0 1C 8C 9D 38 FE 0C B2 3C | } c xT 8 <
0260 | 80 4C 60 C5 4E 37 08 80 65 E3 EF 0E 86 4C 38 F0 | L` N7 e L8 0260 | C0 80 4C 60 C5 6F 4E 08 80 65 E3 EF 0E 0C 4C 38 | L` oN e L8
0270 | 55 8D 30 80 FF 0A 28 DC DF 45 38 A6 F6 84 60 FF | U 0 ( E8 ` 0270 | F0 1B 55 30 80 FF 0A 28 BF DC 45 38 A6 F6 84 60 | U0 ( E8 `
0280 | 0A 14 B0 CC 1A 3C 66 FE 61 40 F0 0C 90 87 81 F1 | <f a@ 0280 | FF 0A 61 14 CC 1A 3C C3 66 FE 40 F0 0C 90 0E 81 | a < f @
0290 | 91 85 F8 7D 35 68 44 F7 23 EA 9B 0E FC B7 02 E7 | }5hD # 0290 | F1 91 85 F8 6B 7D 68 44 F7 23 EA 9B 1C FC B7 02 | k}hD #
02A0 | 31 4A F4 6A 0A F4 00 00 00 00 00 00 00 00 00 00 | 1J j 02A0 | 62 E7 4A F4 6A 14 F4 00 00 00 00 00 00 00 00 00 | b J j
02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
@@ -140,7 +140,7 @@ I 22576 2025-10-26 23:11:57 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:592
03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
0410 | 00 00 00 00 94 02 00 00 | 0410 | 00 00 00 00 95 02 00 00 |
I 22576 2025-10-26 23:11:57 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:59232 (version=GC_EP3 command=44 flag=00) I 22576 2025-10-26 23:11:57 - [Commands] Sending to C-1 @ ipss:N-1:127.0.0.1:59232 (version=GC_EP3 command=44 flag=00)
0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885 0000 | 44 00 3C 00 50 53 4F 2F 71 75 65 73 74 38 38 35 | D < PSO/quest885
0010 | 33 32 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 32.dat 0010 | 33 32 2E 64 61 74 00 00 00 00 00 00 00 00 00 00 | 32.dat
Executable → Regular
BIN
View File
Binary file not shown.