From dd5d75e2b93d4d2266ed47ee859392f55f6dbe25 Mon Sep 17 00:00:00 2001 From: inspectredc <78732756+inspectredc@users.noreply.github.com> Date: Mon, 10 Jun 2024 05:09:36 +0100 Subject: [PATCH] Fix Preset and Yaw in Macro Factory (#130) * Fix Preset and Yaw in Macro Factory * remove leftover macro --- src/factories/sm64/MacroFactory.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/factories/sm64/MacroFactory.cpp b/src/factories/sm64/MacroFactory.cpp index a3e5feb..b7ff67d 100644 --- a/src/factories/sm64/MacroFactory.cpp +++ b/src/factories/sm64/MacroFactory.cpp @@ -36,7 +36,7 @@ ExportResult SM64::MacroCodeExporter::Export(std::ostream &write, std::shared_pt } write << object.preset << ", "; - write << object.yaw << ", "; + write << "CONVERT_YAW(" << object.yaw << "), "; write << object.posX << ", "; write << object.posY << ", "; write << object.posZ; @@ -89,8 +89,9 @@ std::optional> SM64::MacroFactory::parse(std::vecto break; } - int16_t yaw = ((presetYaw >> 9) * 45) / 0x10; - int16_t preset = (presetYaw - ((yaw * 0x10 / 45) << 9)) - 0x1F; + int16_t yaw = ((presetYaw >> 9) & 0x7F) << 1; + int16_t preset = (presetYaw & 0x1FF) - 0x1F; + auto posX = reader.ReadInt16(); auto posY = reader.ReadInt16(); auto posZ = reader.ReadInt16();