From 284cf952654ee48c9a177ffc0e1a0fd809272388 Mon Sep 17 00:00:00 2001 From: Persephone Bubblegum-Holiday Date: Mon, 31 Mar 2025 18:26:04 -0700 Subject: [PATCH] Add Software --- .gitignore | 4 + LICENSE | 9 ++ PC2SSTPlayer/INIFile.cs | 28 ++++ PC2SSTPlayer/PC2SSTPlayer.csproj | 14 ++ PC2SSTPlayer/Program.cs | 67 ++++++++ ...nkConnection2-Firmware-Servo-GuestStar.ino | 104 ++++++++++++ .../PinkConnection2-TestApp.Gtk.csproj | 17 ++ .../PinkConnection2-TestApp.Gtk/Program.cs | 14 ++ .../PinkConnection2-TestApp.Mac/Icon.icns | Bin 0 -> 114177 bytes .../PinkConnection2-TestApp.Mac/Info.plist | 20 +++ .../PinkConnection2-TestApp.Mac.csproj | 19 +++ .../PinkConnection2-TestApp.Mac/Program.cs | 14 ++ .../PinkConnection2-TestApp.Wpf.csproj | 17 ++ .../PinkConnection2-TestApp.Wpf/Program.cs | 14 ++ .../PinkConnection2-TestApp/MainForm.cs | 105 ++++++++++++ .../PinkConnection2-TestApp.csproj | 13 ++ PinkConnection2-TestApp/build_linux.sh | 2 + PinkConnection2-TestApp/build_mac.sh | 2 + PinkConnection2-TestApp/build_windows.bat | 3 + rshw2sst/Program.cs | 149 ++++++++++++++++++ rshw2sst/RSHWFile.cs | 31 ++++ rshw2sst/rshw2sst.csproj | 11 ++ 22 files changed, 657 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 PC2SSTPlayer/INIFile.cs create mode 100644 PC2SSTPlayer/PC2SSTPlayer.csproj create mode 100644 PC2SSTPlayer/Program.cs create mode 100644 PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Icon.icns create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Info.plist create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs create mode 100644 PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj create mode 100755 PinkConnection2-TestApp/build_linux.sh create mode 100755 PinkConnection2-TestApp/build_mac.sh create mode 100644 PinkConnection2-TestApp/build_windows.bat create mode 100644 rshw2sst/Program.cs create mode 100644 rshw2sst/RSHWFile.cs create mode 100644 rshw2sst/rshw2sst.csproj diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..74b6220 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*/*/bin/ +*/*/obj/ +*/bin/ +*/obj/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8ff9a07 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2025 Persephone (KawaiiZenbo) Bubblegum-Holiday + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/PC2SSTPlayer/INIFile.cs b/PC2SSTPlayer/INIFile.cs new file mode 100644 index 0000000..41cf682 --- /dev/null +++ b/PC2SSTPlayer/INIFile.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.IO; + +namespace SSTServoPlayer +{ + public class INIFile + { + public Dictionary Data { get; set; } + + public INIFile(Dictionary data) + { + Data = data; + } + + public static INIFile Load(string inPath) + { + Dictionary outData = new Dictionary(); + string[] rawFile = File.ReadAllLines(inPath); + foreach (string line in rawFile) + { + if (line.StartsWith(";") || line.Trim() == "") continue; + outData.Add(line.Split("=")[0].Trim(), line.Split("=")[1].Trim()); + } + return new INIFile(outData); + } + } +} diff --git a/PC2SSTPlayer/PC2SSTPlayer.csproj b/PC2SSTPlayer/PC2SSTPlayer.csproj new file mode 100644 index 0000000..0438bed --- /dev/null +++ b/PC2SSTPlayer/PC2SSTPlayer.csproj @@ -0,0 +1,14 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + diff --git a/PC2SSTPlayer/Program.cs b/PC2SSTPlayer/Program.cs new file mode 100644 index 0000000..d144f7f --- /dev/null +++ b/PC2SSTPlayer/Program.cs @@ -0,0 +1,67 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.IO.Ports; +using System.Text; +using System.Timers; + +namespace SSTServoPlayer +{ + public class Program + { + static INIFile Config; + static string PathPrefix="/"; + static byte[] Signals; + static SerialPort port = null; + static System.Timers.Timer FrameTimer; + static long index = 0; + static int frameSkip = 6; + + static void Main(string[] args) + { + Config = INIFile.Load(args[0]); + PathPrefix = Path.GetFullPath(args[0]).Replace("manifest.ini", ""); + Signals = File.ReadAllBytes(PathPrefix+Config.Data["data"]); + port = new SerialPort(args[1], 9600, Parity.None, 8, StopBits.One); + port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); + port.Open(); + FrameTimer = new System.Timers.Timer((1000d/double.Parse(Config.Data["frames-per-second"]))*frameSkip); + FrameTimer.Elapsed += PlaySignal; + FrameTimer.AutoReset = true; + + PlayAudio(); + FrameTimer.Start(); + Console.ReadLine(); + port.Close(); + } + + private static void port_DataReceived(object sender, SerialDataReceivedEventArgs e) + { + Console.Write(port.ReadExisting()); + } + + static void PlayAudio() + { + Process.Start("mpv", PathPrefix+Config.Data["audio"]); + } + + static void PlaySignal(Object sender, ElapsedEventArgs e) + { + if (index == Signals.Length) + { + FrameTimer.Stop(); + Console.WriteLine("Complete!"); + return; + } + byte b = Signals[index]; + + byte byte1 = (byte)(64 | ((b & 8) | (b & 4) | (b & 2) | (b & 1))); + byte byte2 = (byte)(64 | (((b & 128) | (b & 64) | (b & 32) | (b & 16)) >> 4)); + port.Write(((char)byte1).ToString()); + port.Write(((char)byte2).ToString()); + //port.Write(((char)b).ToString()); + //Console.WriteLine(byte1.ToString("B8") + " " + byte2.ToString("B8")); + index+=frameSkip; + } + } +} diff --git a/PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino b/PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino new file mode 100644 index 0000000..7429856 --- /dev/null +++ b/PinkConnection2-Firmware-Servo-GuestStar/PinkConnection2-Firmware-Servo-GuestStar.ino @@ -0,0 +1,104 @@ +// PINKCONNECTION2 Client Program for Helen Henny/Chuck E./Guest Star Cyberamic Servo + +#include +#include + +Servo servoChannel[8]; +byte onDegrees[8] = { 90, 0, 0, 0, 0, 0, 0, 0 }; // these are incomplete, i need to tune them when i get the servos in +byte offDegrees[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; + +int byte1 = 0; +int byte2 = 0; + +void setup() { + servoChannel[0].attach(2); + servoChannel[1].attach(3); + servoChannel[2].attach(4); + servoChannel[3].attach(5); + servoChannel[4].attach(6); + servoChannel[5].attach(7); + servoChannel[6].attach(8); + servoChannel[7].attach(9); + pinMode(A0, OUTPUT); + pinMode(A1, OUTPUT); + pinMode(A2, OUTPUT); + pinMode(A3, OUTPUT); + pinMode(A4, OUTPUT); + pinMode(A5, OUTPUT); + pinMode(10, OUTPUT); + pinMode(11, OUTPUT); + for (int i = 0; i < 8; i++) servoChannel[i].write(offDegrees[i]); + Serial.begin(9600); +} + +void loop() { + if (Serial.available() > 1) { + byte1 = Serial.read(); + byte2 = Serial.read(); + if ((byte1 & 64) && (byte2 & 64)) + if (byte1 & 1) { + servoChannel[0].write(onDegrees[0]); + digitalWrite(A0, 1); + } else { + servoChannel[0].write(offDegrees[0]); + digitalWrite(A0, 0); + } + + if (byte1 & 2) { + servoChannel[1].write(onDegrees[1]); + digitalWrite(A1, 1); + } else { + servoChannel[1].write(offDegrees[1]); + digitalWrite(A1, 0); + } + + if (byte1 & 4) { + servoChannel[2].write(onDegrees[2]); + digitalWrite(A2, 1); + } else { + servoChannel[2].write(offDegrees[2]); + digitalWrite(A2, 0); + } + + if (byte1 & 8) { + servoChannel[2].write(onDegrees[3]); + digitalWrite(A3, 1); + } else { + servoChannel[2].write(offDegrees[3]); + digitalWrite(A3, 0); + } + + if (byte2 & 1) { + servoChannel[4].write(onDegrees[4]); + digitalWrite(A4, 1); + } else { + servoChannel[4].write(offDegrees[4]); + digitalWrite(A4, 0); + } + + if (byte2 & 2) { + servoChannel[4].write(onDegrees[5]); + digitalWrite(A5, 1); + } else { + servoChannel[4].write(offDegrees[5]); + digitalWrite(A5, 0); + } + + if (byte2 & 4) { + servoChannel[6].write(onDegrees[6]); + digitalWrite(10, 1); + } else { + servoChannel[6].write(offDegrees[6]); + digitalWrite(10, 0); + } + + if (byte2 & 8) { + servoChannel[7].write(onDegrees[7]); + digitalWrite(11, 1); + } else { + servoChannel[7].write(offDegrees[7]); + digitalWrite(11, 0); + } + + } +} diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj b/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj new file mode 100644 index 0000000..534afb7 --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/PinkConnection2-TestApp.Gtk.csproj @@ -0,0 +1,17 @@ + + + + WinExe + net8.0 + PinkConnection2_TestApp.Gtk + + + + + + + + + + + diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs b/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs new file mode 100644 index 0000000..60cdf2a --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp.Gtk/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PinkConnection2_TestApp.Gtk +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Gtk).Run(new MainForm()); + } + } +} diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Icon.icns b/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..8f385bb4a566b103508f8e67794100af1354a65c GIT binary patch literal 114177 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

apYKp0_}_fy@yGX9pZw%q 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 + + + + CFBundleName + PinkConnection2-TestApp + CFBundleIdentifier + me.kawaiizenbo.PinkConnection2-TestApp + CFBundleShortVersionString + 1.0 + LSMinimumSystemVersion + 10.15 + CFBundleDevelopmentRegion + en + NSHumanReadableCopyright + + CFBundleIconFile + Icon.icns + + diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj b/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj new file mode 100644 index 0000000..106e10a --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/PinkConnection2-TestApp.Mac.csproj @@ -0,0 +1,19 @@ + + + + Exe + net8.0 + PinkConnection2_TestApp.Mac + + osx-x64;osx-arm64 + + + + + + + + + + + diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs b/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs new file mode 100644 index 0000000..77932fe --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp.Mac/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PinkConnection2_TestApp.Mac +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Mac64).Run(new MainForm()); + } + } +} diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj b/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj new file mode 100644 index 0000000..2c5fc3c --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/PinkConnection2-TestApp.Wpf.csproj @@ -0,0 +1,17 @@ + + + + WinExe + net8.0-windows + PinkConnection2_TestApp.Wpf + + + + + + + + + + + diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs b/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs new file mode 100644 index 0000000..7459017 --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp.Wpf/Program.cs @@ -0,0 +1,14 @@ +using System; +using Eto.Forms; + +namespace PinkConnection2_TestApp.Wpf +{ + class Program + { + [STAThread] + public static void Main(string[] args) + { + new Application(Eto.Platforms.Wpf).Run(new MainForm()); + } + } +} diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs b/PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs new file mode 100644 index 0000000..f893f7a --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp/MainForm.cs @@ -0,0 +1,105 @@ +using System; +using System.IO.Ports; + +using Eto.Forms; +using Eto.Drawing; + +namespace PinkConnection2_TestApp +{ + public class MainForm : Form + { + SerialPort port = null; + byte b = 0; + + TextBox CommandTextBox = new TextBox { MaxLength = 2 }; + DropDown SerialPortDropDown = new DropDown(); + + public MainForm() + { + Title = "PinkConnection2 Test App"; + Size = new Size(480, 300); + Maximizable = false; + Resizable = false; + + foreach (string s in SerialPort.GetPortNames()) + { + SerialPortDropDown.Items.Add(s); + } + SerialPortDropDown.SelectedValueChanged += (sender, e) => selectSerialPort(); + + DynamicLayout layout = new DynamicLayout { DefaultSpacing = new Size(10, 10), DefaultPadding = new Padding(5, 5, 5, 5) }; + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Serial Port" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(SerialPortDropDown, true); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Channels" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(new Button { Text = "Channel 1", Command = new Command((sender, e) => { if ((b&1)==1) b-=1; else b+=1; sendFrame(); }) }, true); + layout.Add(new Button { Text = "Channel 2", Command = new Command((sender, e) => { if ((b&2)==2) b-=2; else b+=2; sendFrame(); }) }, true); + layout.Add(new Button { Text = "Channel 3", Command = new Command((sender, e) => { if ((b&4)==4) b-=4; else b+=4; sendFrame(); }) }, true); + layout.Add(new Button { Text = "Channel 4", Command = new Command((sender, e) => { if ((b&8)==8) b-=8; else b+=8; sendFrame(); }) }, true); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(new Button { Text = "Channel 5", Command = new Command((sender, e) => { if ((b&16)==16) b-=16; else b+=16; sendFrame(); }) }, true); + layout.Add(new Button { Text = "Channel 6", Command = new Command((sender, e) => { if ((b&32)==32) b-=32; else b+=32; sendFrame(); }) }, true); + layout.Add(new Button { Text = "Channel 7", Command = new Command((sender, e) => { if ((b&64)==64) b-=64; else b+=64; sendFrame(); }) }, true); + layout.Add(new Button { Text = "Channel 8", Command = new Command((sender, e) => { if ((b&128)==128) b-=128; else b+=128; sendFrame(); }) }, true); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.BeginHorizontal(); + layout.Add(new Label { Text = "Send Command" }); + layout.EndHorizontal(); + + layout.BeginHorizontal(); + layout.Add(CommandTextBox, true); + layout.Add(new Button { Text = "Send", Command = new Command((sender, e) => sendRawSafe()) }); + layout.EndHorizontal(); + layout.EndVertical(); + + layout.BeginVertical(); + layout.Add(null, true); + layout.EndVertical(); + + Content = layout; + } + + void sendFrame() + { + byte byte1 = (byte)(64 | ((b & 8) | (b & 4) | (b & 2) | (b & 1))); + byte byte2 = (byte)(64 | (((b & 128) | (b & 64) | (b & 32) | (b & 16)) >> 4)); + port.Write(((char)byte1).ToString()); + port.Write(((char)byte2).ToString()); + } + + void sendRawSafe() + { + if (CommandTextBox.Text.Length != 2) + { + MessageBox.Show("Command Length must not be less than 2"); + return; + } + port.Write(CommandTextBox.Text); + } + + void selectSerialPort() + { + if (port != null) port.Close(); + port = new SerialPort((string)SerialPortDropDown.SelectedKey, 9600, Parity.None, 8, StopBits.One); + port.Open(); + } + } +} diff --git a/PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj b/PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj new file mode 100644 index 0000000..5400071 --- /dev/null +++ b/PinkConnection2-TestApp/PinkConnection2-TestApp/PinkConnection2-TestApp.csproj @@ -0,0 +1,13 @@ + + + + netstandard2.0 + PinkConnection2_TestApp + + + + + + + + diff --git a/PinkConnection2-TestApp/build_linux.sh b/PinkConnection2-TestApp/build_linux.sh new file mode 100755 index 0000000..8ab2542 --- /dev/null +++ b/PinkConnection2-TestApp/build_linux.sh @@ -0,0 +1,2 @@ +cd PinkConnection2-TestApp.Gtk +dotnet build diff --git a/PinkConnection2-TestApp/build_mac.sh b/PinkConnection2-TestApp/build_mac.sh new file mode 100755 index 0000000..cfb329a --- /dev/null +++ b/PinkConnection2-TestApp/build_mac.sh @@ -0,0 +1,2 @@ +cd PinkConnection2-TestApp.Mac +dotnet build diff --git a/PinkConnection2-TestApp/build_windows.bat b/PinkConnection2-TestApp/build_windows.bat new file mode 100644 index 0000000..3755ca0 --- /dev/null +++ b/PinkConnection2-TestApp/build_windows.bat @@ -0,0 +1,3 @@ +@ECHO OFF +cd PinkConnection2-TestApp.Wpf +dotnet build diff --git a/rshw2sst/Program.cs b/rshw2sst/Program.cs new file mode 100644 index 0000000..fa5641e --- /dev/null +++ b/rshw2sst/Program.cs @@ -0,0 +1,149 @@ +using System; +using System.Collections; +using System.IO; + +namespace rshw2sst +{ + public class Program + { + static bool usingRSHW = false; + static int charaIndex = 0; + + public static void Main(string[] args) + { + Console.WriteLine("RSHW and CSHW Data Converter"); + if (args[0] == "help") + { + Console.WriteLine("Usage: rshw2sst \n" + + "This will output a SST Showtape for 1 Cyberamic Character\n" + + "If an RSHW file is used, it will convert the bits according to Rosetta\n" + ); + } + if (!File.Exists(args[0])) + { + Console.WriteLine("FATAL: Specified file does not exist."); + return; + } + switch (Path.GetExtension(args[0]).ToLower()) + { + case ".rshw": + usingRSHW = true; + break; + case ".cshw": + usingRSHW = false; + break; + default: + Console.WriteLine("FATAL: Only RSHW and CSHW files are supported."); + return; + } + switch (args[1].ToLower()) + { + case "chuck": + charaIndex = 0; + break; + case "helen": + charaIndex = 1; + break; + case "munch": + charaIndex = 2; + break; + case "jasper": + charaIndex = 3; + break; + case "pasqually": + charaIndex = 4; + break; + case "bella": + Console.WriteLine("you wish!!!"); + return; + default: + Console.WriteLine("FATAL: Invalid character."); + return; + } + if (!Directory.Exists(args[2])) Directory.CreateDirectory(args[2]); + RSHWFile file = RSHWLoader.Load(args[0]); + if (file.signalData == null) + { + Console.WriteLine("FATAL: This file contains no signal data."); + return; + } + if (file.audioData != null) File.WriteAllBytes(args[2] + "/audio_out.wav", file.audioData); + if (file.videoData != null) File.WriteAllBytes(args[2] + "/video_out.mp4", file.videoData); + Console.WriteLine("Wrote out audio and video data."); + + List rshwBits = new List(); + int countlength = 0; + if (file.signalData[0] != 0) + { + countlength = 1; + BitArray bit = new BitArray(300); + rshwBits.Add(bit); + } + for (int i = 0; i < file.signalData.Length; i++) + { + if (file.signalData[i] == 0) + { + countlength += 1; + BitArray bit = new BitArray(300); + rshwBits.Add(bit); + } + else + { + rshwBits[countlength - 1].Set(file.signalData[i], true); + } + } + Console.WriteLine("Loaded RSHW signal data."); + + List writeOut = new List(); + long bitsOut = 0; + foreach (BitArray bits in rshwBits) + { + bitsOut++; + if (bitsOut % 6 != 0) continue; + byte frameByte = 0; + Dictionary[] mapping = RosettaR12; + if (usingRSHW) mapping = Rosetta3St; + foreach (KeyValuePair movement in mapping[charaIndex]) + { + if (bits.Get(movement.Key)) frameByte += movement.Value; + } + writeOut.Add(frameByte); + } + File.WriteAllBytes(args[2] + "/signals_out.sts", writeOut.ToArray()); + Console.WriteLine("Wrote out signal data."); + + File.WriteAllText(args[2] + "/manifest.ini", $"; Exported by RSHW2SST\nname={Path.GetFileNameWithoutExtension(args[0])} {args[1]}\nvideo=video_out.mp4\naudio=audio_out.wav\ndata=signals_out.sts\nframes-per-second=10\nbits-per-frame=8"); + Console.WriteLine("Wrote out manifest."); + if (file.videoData == null) Console.WriteLine("Warning: Video data was blank, you will need to add the file manually."); + Console.WriteLine("Complete!"); + } + + public static Dictionary[] Rosetta3St = + { + new Dictionary + { {1, 1}, {8, 2}, {7, 4}, {6, 8}, {5, 16}, {4, 32}, {2, 64}, {19, 128} }, // chuck + new Dictionary + { {185, 1}, {180, 2}, {179, 4}, {178, 8}, {184, 16}, {183, 32}, {181, 64}, {169, 128} }, // helen + new Dictionary + { {45, 1}, {55, 2}, {54, 4}, {44, 8}, {43, 16}, {41, 32}, {60, 64}, {59, 128} }, // munch + new Dictionary + { {166, 1}, {158, 2}, {157, 4}, {156, 8}, {153, 16}, {152, 32}, {151, 64}, {163, 128} }, // jasper + new Dictionary + { {30, 1}, {21, 2}, {25, 4}, {29, 8}, {28, 16}, {26, 32}, {31, 64}, {35, 128} } // pasqually + }; + + public static Dictionary[] RosettaR12 = + { + new Dictionary + { {1, 1}, {4, 2}, {3, 4}, {2, 8}, {5, 16}, {8, 32}, {6, 64}, {7, 128} }, // chuck + new Dictionary + { {65, 1}, {68, 2}, {67, 4}, {66, 8}, {69, 16}, {72, 32}, {70, 64}, {71, 128} }, // helen + new Dictionary + { {49, 1}, {51, 2}, {50, 4}, {53, 8}, {56, 16}, {54, 32}, {55, 64}, {52, 128} }, // munch + new Dictionary + { {17, 1}, {20, 2}, {19, 4}, {18, 8}, {21, 16}, {24, 32}, {22, 64}, {23, 128} }, // jasper + new Dictionary + { {33, 1}, {35, 2}, {34, 4}, {37, 8}, {40, 16}, {38, 32}, {39, 64}, {36, 128} } // pasqually + }; + } +} diff --git a/rshw2sst/RSHWFile.cs b/rshw2sst/RSHWFile.cs new file mode 100644 index 0000000..d155ddf --- /dev/null +++ b/rshw2sst/RSHWFile.cs @@ -0,0 +1,31 @@ +using System.IO; +using System.Reflection; +using System.Runtime.Serialization.Formatters.Binary; + +sealed class AntiUnityBinder : System.Runtime.Serialization.SerializationBinder +{ + public override Type BindToType(string assemblyName, string typeName) + { + return Type.GetType(String.Format("RSHWFile, " + Assembly.GetExecutingAssembly().FullName)); + } +} + +[System.Serializable] +public class RSHWFile +{ + public byte[]? audioData { get; set; } + public int[]? signalData { get; set; } + public byte[]? videoData { get; set; } +} + +public class RSHWLoader +{ + public static RSHWFile Load(string path) + { + BinaryFormatter formatter = new BinaryFormatter(); + formatter.Binder = new AntiUnityBinder(); + FileStream stream = File.OpenRead(path); + return (RSHWFile)formatter.Deserialize(stream); + } +} + diff --git a/rshw2sst/rshw2sst.csproj b/rshw2sst/rshw2sst.csproj new file mode 100644 index 0000000..0586f06 --- /dev/null +++ b/rshw2sst/rshw2sst.csproj @@ -0,0 +1,11 @@ + + + + Exe + net8.0 + enable + enable + true + + +