From ec16cb0ae3f44a6a576c3dae4161bef7bfa9eef1 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sun, 4 Jan 2026 21:08:38 -0800 Subject: [PATCH] rename fields in battle param structs --- src/BattleParamsIndex.cc | 10 +++++----- src/BattleParamsIndex.hh | 34 +++++++++++++++++----------------- src/Client.cc | 2 +- src/HTTPServer.cc | 1 - src/LevelTable.hh | 12 ++++++------ src/QuestScript.cc | 38 +++++++++++++++++++------------------- 6 files changed, 48 insertions(+), 49 deletions(-) diff --git a/src/BattleParamsIndex.cc b/src/BattleParamsIndex.cc index aa438a74..65b30bad 100644 --- a/src/BattleParamsIndex.cc +++ b/src/BattleParamsIndex.cc @@ -34,13 +34,13 @@ void BattleParamsIndex::Table::print(FILE* stream, Episode episode) const { phosg::fwrite_fmt(stream, "========== ATTACK DATA\n"); for (Difficulty difficulty : ALL_DIFFICULTIES_V234) { - phosg::fwrite_fmt(stream, "{} ZZ -A1- ATP- ATA+ -A4- -DIST-X- ANGLE-X- -DIST-Y- -A8- -A9- A10- A11- --A12--- --A13--- --A14--- --A15--- --A16---\n", + phosg::fwrite_fmt(stream, "{} ZZ ATP- ATP+ ATA- ATA+ -DIST-X- -ANGLE-- -DIST-Y- -A8- -A9- A10- A11- --A12--- --A13--- --A14--- --A15--- --A16---\n", abbreviation_for_difficulty(difficulty)); for (size_t z = 0; z < 0x60; z++) { const auto& e = this->attack_data[static_cast(difficulty)][z]; phosg::fwrite_fmt(stream, " {:02X} {:04X} {:04X} {:04X} {:04X} {:8.3f} {:08X} {:8.3f} {:04X} {:04X} {:04X} {:04X} {:08X} {:08X} {:08X} {:08X} {:08X}", - z, e.unknown_a1, e.atp, e.ata_bonus, e.unknown_a4, e.distance_x, e.angle_x, e.distance_y, e.unknown_a8, + z, e.min_atp, e.max_atp, e.min_ata, e.max_ata, e.distance_x, e.angle, e.distance_y, e.unknown_a8, e.unknown_a9, e.unknown_a10, e.unknown_a11, e.unknown_a12, e.unknown_a13, e.unknown_a14, e.unknown_a15, e.unknown_a16); fputc('\n', stream); @@ -63,14 +63,14 @@ void BattleParamsIndex::Table::print(FILE* stream, Episode episode) const { phosg::fwrite_fmt(stream, "========== MOVEMENT DATA\n"); for (Difficulty difficulty : ALL_DIFFICULTIES_V234) { - phosg::fwrite_fmt(stream, "{} ZZ IDLEMOVE IDLEANIM MOVE-SPD ANIM-SPD ---A1--- ---A2--- ---A3--- ---A4--- ---A5--- ---A6--- ---A7--- ---A8---\n", + phosg::fwrite_fmt(stream, "{} ZZ FPARAM-0 FPARAM-1 FPARAM-2 FPARAM-3 FPARAM-4 FPARAM-5 IPARAM-0 IPARAM-1 IPARAM-2 IPARAM-3 IPARAM-4 IPARAM-5\n", abbreviation_for_difficulty(difficulty)); for (size_t z = 0; z < 0x60; z++) { const auto& e = this->movement_data[static_cast(difficulty)][z]; phosg::fwrite_fmt(stream, " {:02X} {:8.3f} {:8.3f} {:8.3f} {:8.3f} {:8.3f} {:8.3f} {:08X} {:08X} {:08X} {:08X} {:08X} {:08X}", - z, e.idle_move_speed, e.idle_animation_speed, e.move_speed, e.animation_speed, e.unknown_a1, e.unknown_a2, - e.unknown_a3, e.unknown_a4, e.unknown_a5, e.unknown_a6, e.unknown_a7, e.unknown_a8); + z, e.fparam0, e.fparam1, e.fparam2, e.fparam3, e.fparam4, e.fparam5, + e.iparam0, e.iparam1, e.iparam2, e.iparam3, e.iparam4, e.iparam5); fputc('\n', stream); } } diff --git a/src/BattleParamsIndex.hh b/src/BattleParamsIndex.hh index 82c210ce..ea3100f2 100644 --- a/src/BattleParamsIndex.hh +++ b/src/BattleParamsIndex.hh @@ -19,12 +19,12 @@ public: // These files are little-endian, even on PSO GC. struct AttackData { - /* 00 */ le_int16_t unknown_a1; - /* 02 */ le_int16_t atp; - /* 04 */ le_int16_t ata_bonus; - /* 06 */ le_uint16_t unknown_a4; + /* 00 */ le_int16_t min_atp; + /* 02 */ le_int16_t max_atp; + /* 04 */ le_int16_t min_ata; + /* 06 */ le_int16_t max_ata; /* 08 */ le_float distance_x; - /* 0C */ le_uint32_t angle_x; // Out of 0x10000 (high 16 bits are unused) + /* 0C */ le_uint32_t angle; // Out of 0x10000 (high 16 bits are unused) /* 10 */ le_float distance_y; /* 14 */ le_uint16_t unknown_a8; /* 16 */ le_uint16_t unknown_a9; @@ -54,18 +54,18 @@ public: } __packed_ws__(ResistData, 0x20); struct MovementData { - /* 00 */ le_float idle_move_speed; - /* 04 */ le_float idle_animation_speed; - /* 08 */ le_float move_speed; - /* 0C */ le_float animation_speed; - /* 10 */ le_float unknown_a1; - /* 14 */ le_float unknown_a2; - /* 18 */ le_uint32_t unknown_a3; - /* 1C */ le_uint32_t unknown_a4; - /* 20 */ le_uint32_t unknown_a5; - /* 24 */ le_uint32_t unknown_a6; - /* 28 */ le_uint32_t unknown_a7; - /* 2C */ le_uint32_t unknown_a8; + /* 00 */ le_float fparam0; + /* 04 */ le_float fparam1; + /* 03 */ le_float fparam2; + /* 0C */ le_float fparam3; + /* 10 */ le_float fparam4; + /* 14 */ le_float fparam5; + /* 18 */ le_uint32_t iparam0; + /* 1C */ le_uint32_t iparam1; + /* 20 */ le_uint32_t iparam2; + /* 24 */ le_uint32_t iparam3; + /* 28 */ le_uint32_t iparam4; + /* 2C */ le_uint32_t iparam5; /* 30 */ } __packed_ws__(MovementData, 0x30); diff --git a/src/Client.cc b/src/Client.cc index dbc8534a..3ae60609 100644 --- a/src/Client.cc +++ b/src/Client.cc @@ -698,7 +698,7 @@ void Client::create_challenge_overlay( const auto& stats_delta = level_table->stats_delta_for_level( overlay->disp.visual.char_class, overlay->disp.stats.level); overlay->disp.stats.esp = 40; - overlay->disp.stats.unknown_a3 = 10.0; + overlay->disp.stats.attack_range = 10.0; overlay->disp.stats.experience = stats_delta.experience; overlay->disp.stats.meseta = 0; overlay->clear_all_material_usage(); diff --git a/src/HTTPServer.cc b/src/HTTPServer.cc index b3edbda1..fa3e44f9 100644 --- a/src/HTTPServer.cc +++ b/src/HTTPServer.cc @@ -161,7 +161,6 @@ HTTPServer::HTTPServer(shared_ptr state) } client_json.emplace("TechniqueLevels", std::move(tech_levels_json)); } - client_json.emplace("Height", p->disp.stats.height.load()); client_json.emplace("Level", p->disp.stats.level.load() + 1); client_json.emplace("NameColor", p->disp.visual.name_color.load()); client_json.emplace("ExtraModel", (p->disp.visual.validation_flags & 2) ? p->disp.visual.extra_model : phosg::JSON(nullptr)); diff --git a/src/LevelTable.hh b/src/LevelTable.hh index 2cc903f7..07f4f4de 100644 --- a/src/LevelTable.hh +++ b/src/LevelTable.hh @@ -43,19 +43,19 @@ template struct PlayerStatsT { /* 00 */ CharacterStatsT char_stats; /* 0E */ U16T esp = 0; - /* 10 */ F32T height = 0.0; - /* 14 */ F32T unknown_a3 = 0.0; - /* 18 */ U32T level = 0; + /* 10 */ F32T attack_range = 0.0; + /* 14 */ F32T knockback_range = 0.0; + /* 18 */ U32T level = 0; // Qedit specifies this as tech level when used for enemies /* 1C */ U32T experience = 0; - /* 20 */ U32T meseta = 0; + /* 20 */ U32T meseta = 0; // Qedit specifies this as TP when used for enemies /* 24 */ operator PlayerStatsT() const { PlayerStatsT ret; ret.char_stats = this->char_stats; ret.esp = this->esp; - ret.height = this->height; - ret.unknown_a3 = this->unknown_a3; + ret.attack_range = this->attack_range; + ret.knockback_range = this->knockback_range; ret.level = this->level; ret.experience = this->experience; ret.meseta = this->meseta; diff --git a/src/QuestScript.cc b/src/QuestScript.cc index ef228db8..4af3b067 100644 --- a/src/QuestScript.cc +++ b/src/QuestScript.cc @@ -3060,8 +3060,8 @@ std::string disassemble_quest_script( l->lines.emplace_back(std::format(" {:04X} ata {:04X} /* {} */", l->offset + offsetof(PlayerStats, char_stats.ata), stats.char_stats.ata, stats.char_stats.ata)); l->lines.emplace_back(std::format(" {:04X} lck {:04X} /* {} */", l->offset + offsetof(PlayerStats, char_stats.lck), stats.char_stats.lck, stats.char_stats.lck)); l->lines.emplace_back(std::format(" {:04X} esp {:04X} /* {} */", l->offset + offsetof(PlayerStats, esp), stats.esp, stats.esp)); - l->lines.emplace_back(std::format(" {:04X} height {:08X} /* {:g} */", l->offset + offsetof(PlayerStats, height), stats.height.load_raw(), stats.height)); - l->lines.emplace_back(std::format(" {:04X} a3 {:08X} /* {:g} */", l->offset + offsetof(PlayerStats, unknown_a3), stats.unknown_a3.load_raw(), stats.unknown_a3)); + l->lines.emplace_back(std::format(" {:04X} attack_range {:08X} /* {:g} */", l->offset + offsetof(PlayerStats, attack_range), stats.attack_range.load_raw(), stats.attack_range)); + l->lines.emplace_back(std::format(" {:04X} knockback_range {:08X} /* {:g} */", l->offset + offsetof(PlayerStats, knockback_range), stats.knockback_range.load_raw(), stats.knockback_range)); l->lines.emplace_back(std::format(" {:04X} level {:08X} /* level {} */", l->offset + offsetof(PlayerStats, level), stats.level, stats.level + 1)); l->lines.emplace_back(std::format(" {:04X} experience {:08X} /* {} */", l->offset + offsetof(PlayerStats, experience), stats.experience, stats.experience)); l->lines.emplace_back(std::format(" {:04X} meseta {:08X} /* {} */", l->offset + offsetof(PlayerStats, meseta), stats.meseta, stats.meseta)); @@ -3086,12 +3086,12 @@ std::string disassemble_quest_script( auto disassemble_label_as_attack_data = [&](shared_ptr