4#include "absl/flags/flag.h"
5#include "absl/flags/declare.h"
15 if (arg_vec.size() < 2) {
16 return absl::InvalidArgumentError(
"Usage: gfx export-sheet <sheet_id> --to <file>");
19 int sheet_id = std::stoi(arg_vec[0]);
20 std::string output_file = arg_vec[1];
22 std::string rom_file = absl::GetFlag(FLAGS_rom);
23 if (rom_file.empty()) {
24 return absl::InvalidArgumentError(
"ROM file must be provided via --rom flag.");
30 return absl::AbortedError(
"Failed to load ROM.");
34 auto sheet = arena.gfx_sheet(sheet_id);
35 if (!sheet.is_active()) {
36 return absl::NotFoundError(
"Graphics sheet not found.");
41 std::vector<uint8_t> header;
42 auto status =
gfx::SaveCgx(sheet.depth(), output_file, sheet.vector(), header);
47 std::cout <<
"Successfully exported graphics sheet " << sheet_id <<
" to " << output_file << std::endl;
49 return absl::OkStatus();
55 if (arg_vec.size() < 2) {
56 return absl::InvalidArgumentError(
"Usage: gfx import-sheet <sheet_id> --from <file>");
59 int sheet_id = std::stoi(arg_vec[0]);
60 std::string input_file = arg_vec[1];
62 std::string rom_file = absl::GetFlag(FLAGS_rom);
63 if (rom_file.empty()) {
64 return absl::InvalidArgumentError(
"ROM file must be provided via --rom flag.");
70 return absl::AbortedError(
"Failed to load ROM.");
73 std::vector<uint8_t> cgx_data, cgx_loaded, cgx_header;
74 auto status =
gfx::LoadCgx(8, input_file, cgx_data, cgx_loaded, cgx_header);
80 auto sheet = arena.gfx_sheet(sheet_id);
81 if (!sheet.is_active()) {
82 return absl::NotFoundError(
"Graphics sheet not found.");
87 sheet.set_data(cgx_loaded);
90 auto save_status = rom.
SaveToFile({.save_new =
false});
91 if (!save_status.ok()) {
95 std::cout <<
"Successfully imported graphics sheet " << sheet_id <<
" from " << input_file << std::endl;
96 std::cout <<
"✅ ROM saved to: " << rom.
filename() << std::endl;
98 return absl::OkStatus();
The Rom class is used to load, save, and modify Rom data.
absl::Status LoadFromFile(const std::string &filename, bool z3_load=true)
absl::Status SaveToFile(const SaveSettings &settings)
ABSL_DECLARE_FLAG(std::string, rom)
absl::Status HandleGfxExportLegacy(const std::vector< std::string > &arg_vec)
absl::Status HandleGfxImportLegacy(const std::vector< std::string > &arg_vec)
absl::Status LoadCgx(uint8_t bpp, std::string_view filename, std::vector< uint8_t > &cgx_data, std::vector< uint8_t > &cgx_loaded, std::vector< uint8_t > &cgx_header)
Load Cgx file (graphical content)
absl::Status SaveCgx(uint8_t bpp, std::string_view filename, const std::vector< uint8_t > &cgx_data, const std::vector< uint8_t > &cgx_header)
Save Cgx file (graphical content)
Main namespace for the application.