rename fields in battle param structs
This commit is contained in:
@@ -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<size_t>(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<size_t>(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);
|
||||
}
|
||||
}
|
||||
|
||||
+17
-17
@@ -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);
|
||||
|
||||
|
||||
+1
-1
@@ -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();
|
||||
|
||||
@@ -161,7 +161,6 @@ HTTPServer::HTTPServer(shared_ptr<ServerState> 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));
|
||||
|
||||
+6
-6
@@ -43,19 +43,19 @@ template <bool BE>
|
||||
struct PlayerStatsT {
|
||||
/* 00 */ CharacterStatsT<BE> char_stats;
|
||||
/* 0E */ U16T<BE> esp = 0;
|
||||
/* 10 */ F32T<BE> height = 0.0;
|
||||
/* 14 */ F32T<BE> unknown_a3 = 0.0;
|
||||
/* 18 */ U32T<BE> level = 0;
|
||||
/* 10 */ F32T<BE> attack_range = 0.0;
|
||||
/* 14 */ F32T<BE> knockback_range = 0.0;
|
||||
/* 18 */ U32T<BE> level = 0; // Qedit specifies this as tech level when used for enemies
|
||||
/* 1C */ U32T<BE> experience = 0;
|
||||
/* 20 */ U32T<BE> meseta = 0;
|
||||
/* 20 */ U32T<BE> meseta = 0; // Qedit specifies this as TP when used for enemies
|
||||
/* 24 */
|
||||
|
||||
operator PlayerStatsT<!BE>() const {
|
||||
PlayerStatsT<!BE> 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;
|
||||
|
||||
+19
-19
@@ -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<Label> l) -> void {
|
||||
disassemble_label_as_struct.template operator()<AttackData>(l, [&](const AttackData& attack) -> void {
|
||||
l->lines.emplace_back(" // As AttackData");
|
||||
l->lines.emplace_back(std::format(" {:04X} a1 {:04X} /* {} */", l->offset + offsetof(AttackData, unknown_a1), attack.unknown_a1, attack.unknown_a1));
|
||||
l->lines.emplace_back(std::format(" {:04X} atp {:04X} /* {} */", l->offset + offsetof(AttackData, atp), attack.atp, attack.atp));
|
||||
l->lines.emplace_back(std::format(" {:04X} ata_bonus {:04X} /* {} */", l->offset + offsetof(AttackData, ata_bonus), attack.ata_bonus, attack.ata_bonus));
|
||||
l->lines.emplace_back(std::format(" {:04X} a4 {:04X} /* {} */", l->offset + offsetof(AttackData, unknown_a4), attack.unknown_a4, attack.unknown_a4));
|
||||
l->lines.emplace_back(std::format(" {:04X} atp_min {:04X} /* {} */", l->offset + offsetof(AttackData, min_atp), attack.min_atp, attack.min_atp));
|
||||
l->lines.emplace_back(std::format(" {:04X} atp_max {:04X} /* {} */", l->offset + offsetof(AttackData, max_atp), attack.max_atp, attack.max_atp));
|
||||
l->lines.emplace_back(std::format(" {:04X} ata_min {:04X} /* {} */", l->offset + offsetof(AttackData, min_ata), attack.min_ata, attack.min_ata));
|
||||
l->lines.emplace_back(std::format(" {:04X} ata_max {:04X} /* {} */", l->offset + offsetof(AttackData, max_ata), attack.max_ata, attack.max_ata));
|
||||
l->lines.emplace_back(std::format(" {:04X} distance_x {:08X} /* {:g} */", l->offset + offsetof(AttackData, distance_x), attack.distance_x.load_raw(), attack.distance_x));
|
||||
l->lines.emplace_back(std::format(" {:04X} angle_x {:08X} /* {}/65536 */", l->offset + offsetof(AttackData, angle_x), attack.angle_x.load_raw(), attack.angle_x));
|
||||
l->lines.emplace_back(std::format(" {:04X} angle {:08X} /* {}/65536 */", l->offset + offsetof(AttackData, angle), attack.angle.load_raw(), attack.angle));
|
||||
l->lines.emplace_back(std::format(" {:04X} distance_y {:08X} /* {:g} */", l->offset + offsetof(AttackData, distance_y), attack.distance_y.load_raw(), attack.distance_y));
|
||||
l->lines.emplace_back(std::format(" {:04X} a8 {:04X} /* {} */", l->offset + offsetof(AttackData, unknown_a8), attack.unknown_a8, attack.unknown_a8));
|
||||
l->lines.emplace_back(std::format(" {:04X} a9 {:04X} /* {} */", l->offset + offsetof(AttackData, unknown_a9), attack.unknown_a9, attack.unknown_a9));
|
||||
@@ -3107,18 +3107,18 @@ std::string disassemble_quest_script(
|
||||
auto disassemble_label_as_movement_data = [&](shared_ptr<Label> l) -> void {
|
||||
disassemble_label_as_struct.template operator()<MovementData>(l, [&](const MovementData& movement) -> void {
|
||||
l->lines.emplace_back(" // As MovementData");
|
||||
l->lines.emplace_back(std::format(" {:04X} idle_move_speed {:08X} /* {:g} */", l->offset + offsetof(MovementData, idle_move_speed), movement.idle_move_speed.load_raw(), movement.idle_move_speed));
|
||||
l->lines.emplace_back(std::format(" {:04X} idle_anim_speed {:08X} /* {:g} */", l->offset + offsetof(MovementData, idle_animation_speed), movement.idle_animation_speed.load_raw(), movement.idle_animation_speed));
|
||||
l->lines.emplace_back(std::format(" {:04X} move_speed {:08X} /* {:g} */", l->offset + offsetof(MovementData, move_speed), movement.move_speed.load_raw(), movement.move_speed));
|
||||
l->lines.emplace_back(std::format(" {:04X} animation_speed {:08X} /* {:g} */", l->offset + offsetof(MovementData, animation_speed), movement.animation_speed.load_raw(), movement.animation_speed));
|
||||
l->lines.emplace_back(std::format(" {:04X} a1 {:08X} /* {:g} */", l->offset + offsetof(MovementData, unknown_a1), movement.unknown_a1.load_raw(), movement.unknown_a1));
|
||||
l->lines.emplace_back(std::format(" {:04X} a2 {:08X} /* {:g} */", l->offset + offsetof(MovementData, unknown_a2), movement.unknown_a2.load_raw(), movement.unknown_a2));
|
||||
l->lines.emplace_back(std::format(" {:04X} a3 {:08X} /* {} */", l->offset + offsetof(MovementData, unknown_a3), movement.unknown_a3, movement.unknown_a3));
|
||||
l->lines.emplace_back(std::format(" {:04X} a4 {:08X} /* {} */", l->offset + offsetof(MovementData, unknown_a4), movement.unknown_a4, movement.unknown_a4));
|
||||
l->lines.emplace_back(std::format(" {:04X} a5 {:08X} /* {} */", l->offset + offsetof(MovementData, unknown_a5), movement.unknown_a5, movement.unknown_a5));
|
||||
l->lines.emplace_back(std::format(" {:04X} a6 {:08X} /* {} */", l->offset + offsetof(MovementData, unknown_a6), movement.unknown_a6, movement.unknown_a6));
|
||||
l->lines.emplace_back(std::format(" {:04X} a7 {:08X} /* {} */", l->offset + offsetof(MovementData, unknown_a7), movement.unknown_a7, movement.unknown_a7));
|
||||
l->lines.emplace_back(std::format(" {:04X} a8 {:08X} /* {} */", l->offset + offsetof(MovementData, unknown_a8), movement.unknown_a8, movement.unknown_a8));
|
||||
l->lines.emplace_back(std::format(" {:04X} fparam0 {:08X} /* {:g} */", l->offset + offsetof(MovementData, fparam0), movement.fparam0.load_raw(), movement.fparam0));
|
||||
l->lines.emplace_back(std::format(" {:04X} fparam1 {:08X} /* {:g} */", l->offset + offsetof(MovementData, fparam1), movement.fparam1.load_raw(), movement.fparam1));
|
||||
l->lines.emplace_back(std::format(" {:04X} fparam2 {:08X} /* {:g} */", l->offset + offsetof(MovementData, fparam2), movement.fparam2.load_raw(), movement.fparam2));
|
||||
l->lines.emplace_back(std::format(" {:04X} fparam3 {:08X} /* {:g} */", l->offset + offsetof(MovementData, fparam3), movement.fparam3.load_raw(), movement.fparam3));
|
||||
l->lines.emplace_back(std::format(" {:04X} fparam4 {:08X} /* {:g} */", l->offset + offsetof(MovementData, fparam4), movement.fparam4.load_raw(), movement.fparam4));
|
||||
l->lines.emplace_back(std::format(" {:04X} fparam5 {:08X} /* {:g} */", l->offset + offsetof(MovementData, fparam5), movement.fparam5.load_raw(), movement.fparam5));
|
||||
l->lines.emplace_back(std::format(" {:04X} iparam0 {:08X} /* {} */", l->offset + offsetof(MovementData, iparam0), movement.iparam0, movement.iparam0));
|
||||
l->lines.emplace_back(std::format(" {:04X} iparam1 {:08X} /* {} */", l->offset + offsetof(MovementData, iparam1), movement.iparam1, movement.iparam1));
|
||||
l->lines.emplace_back(std::format(" {:04X} iparam2 {:08X} /* {} */", l->offset + offsetof(MovementData, iparam2), movement.iparam2, movement.iparam2));
|
||||
l->lines.emplace_back(std::format(" {:04X} iparam3 {:08X} /* {} */", l->offset + offsetof(MovementData, iparam3), movement.iparam3, movement.iparam3));
|
||||
l->lines.emplace_back(std::format(" {:04X} iparam4 {:08X} /* {} */", l->offset + offsetof(MovementData, iparam4), movement.iparam4, movement.iparam4));
|
||||
l->lines.emplace_back(std::format(" {:04X} iparam5 {:08X} /* {} */", l->offset + offsetof(MovementData, iparam5), movement.iparam5, movement.iparam5));
|
||||
});
|
||||
};
|
||||
auto disassemble_label_as_image_data = [&](shared_ptr<Label> l) -> void {
|
||||
|
||||
Reference in New Issue
Block a user