Improve Script and added ApplyPatchToROM with Asar

This commit is contained in:
Justin Scofield
2022-08-06 13:19:24 -04:00
parent cd74e36d02
commit b0370b5c0d
2 changed files with 24 additions and 4 deletions

View File

@@ -1,19 +1,28 @@
#include "script.h"
#include <asar.h>
#include <interface-lib.h>
#include <array>
#include <fstream>
#include <sstream>
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "app/core/constants.h"
#include "app/rom.h"
namespace yaze {
namespace app {
namespace snes_asm {
absl::Status Script::ApplyPatchToROM(ROM& rom) {
if (!asar_patch(patch_filename_, rom_.data(), patch_size_, rom_.size())) {
return absl::InternalError("Unable to apply patch");
}
return absl::OkStatus();
}
absl::StatusOr<absl::string_view> Script::GenerateMosaicChangeAssembly(
std::array<int, core::kNumOverworldMaps> mosaic_tiles) {
std::fstream file("assets/asm/mosaic_change.asm",
@@ -23,8 +32,8 @@ absl::StatusOr<absl::string_view> Script::GenerateMosaicChangeAssembly(
"Couldn't open mosaic change template file");
}
std::stringstream assembly;
assembly << absl::StrCat("org ", kDefaultMosaicHook);
assembly << "org ";
assembly << kDefaultMosaicHook;
assembly << file.rdbuf();
file.close();

View File

@@ -1,15 +1,17 @@
#ifndef YAZE_APP_ASM_SCRIPT_H
#define YAZE_APP_ASM_SCRIPT_H
#include <asar.h>
#include <interface-lib.h>
#include <array>
#include <fstream>
#include <sstream>
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/strings/string_view.h"
#include "app/core/constants.h"
#include "app/rom.h"
namespace yaze {
namespace app {
@@ -19,8 +21,17 @@ constexpr char kDefaultMosaicHook[] = "$02AADB";
class Script {
public:
Script() = default;
absl::Status ApplyPatchToROM(ROM& rom);
absl::StatusOr<absl::string_view> GenerateMosaicChangeAssembly(
std::array<int, core::kNumOverworldMaps> mosaic_tiles);
private:
int64_t patch_size_;
std::string patch_filename_;
std::string patch_contents_;
};
} // namespace snes_asm