feat: add initial hook parameter with default val

* untested
This commit is contained in:
Justin Scofield
2022-08-07 13:25:34 -04:00
parent 465b3fc49b
commit b510ad3fc6
2 changed files with 17 additions and 5 deletions

View File

@@ -76,7 +76,8 @@ absl::Status Script::ApplyPatchToROM(ROM &rom) {
}
absl::Status Script::GenerateMosaicChangeAssembly(
ROM &rom, char mosaic_tiles[core::kNumOverworldMaps], int routine_offset) {
ROM &rom, char mosaic_tiles[core::kNumOverworldMaps], int routine_offset,
int hook_offset) {
std::fstream file("assets/asm/mosaic_change.asm",
std::ios::out | std::ios::in);
if (!file.is_open()) {
@@ -89,9 +90,19 @@ absl::Status Script::GenerateMosaicChangeAssembly(
file.close();
auto assembly_string = assembly.str();
if (!string_replace(assembly_string, "<HOOK>", kMosaicChangeOffset)) {
return absl::InternalError(
"Mosaic template did not have proper `<HOOK>` to replace.");
if (!hook_offset) {
// TODO: TESTME
if (!string_replace(assembly_string, "<HOOK>",
absl::StrFormat("$%06x", hook_offset))) {
return absl::InternalError(
"Mosaic template did not have proper `<HOOK>` to replace.");
}
} else {
if (!string_replace(assembly_string, "<HOOK>", kMosaicChangeOffset)) {
return absl::InternalError(
"Mosaic template did not have proper `<HOOK>` to replace.");
}
}
if (!string_replace(

View File

@@ -28,7 +28,8 @@ class Script {
Script() { asar_init_with_dll_path("assets/libasar.dll"); }
absl::Status GenerateMosaicChangeAssembly(
ROM& rom, char mosaic_tiles[core::kNumOverworldMaps], int routine_offset);
ROM& rom, char mosaic_tiles[core::kNumOverworldMaps], int routine_offset,
int hook_offset = 0);
private:
absl::Status ApplyPatchToROM(ROM& rom);