diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs
new file mode 100644
index 0000000..0db671d
--- /dev/null
+++ b/MainForm.Designer.cs
@@ -0,0 +1,326 @@
+namespace RoboSpot_RSL_Editor
+{
+ partial class MainForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.btnLoadShowFile = new System.Windows.Forms.Button();
+ this.dlgOpenRSL = new System.Windows.Forms.OpenFileDialog();
+ this.listAllShowfiles = new System.Windows.Forms.ListBox();
+ this.lblAllShowfileNames = new System.Windows.Forms.Label();
+ this.txtCamIP = new System.Windows.Forms.TextBox();
+ this.lblLastUsedCamera = new System.Windows.Forms.Label();
+ this.btnClearUI = new System.Windows.Forms.Button();
+ this.txtShowVersion = new System.Windows.Forms.TextBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.chkPosBtnShown = new System.Windows.Forms.CheckBox();
+ this.chkColorBtnShown = new System.Windows.Forms.CheckBox();
+ this.chkTargetCrossShown = new System.Windows.Forms.CheckBox();
+ this.chkTraceCursor = new System.Windows.Forms.CheckBox();
+ this.chkTracePanInvert = new System.Windows.Forms.CheckBox();
+ this.chkTraceTiltInvert = new System.Windows.Forms.CheckBox();
+ this.txtTraceType = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.txtExportedFilename = new System.Windows.Forms.TextBox();
+ this.chkPosShowInScene = new System.Windows.Forms.CheckBox();
+ this.chkDmxDimmersShown = new System.Windows.Forms.CheckBox();
+ this.SuspendLayout();
+ //
+ // btnLoadShowFile
+ //
+ this.btnLoadShowFile.Location = new System.Drawing.Point(10, 9);
+ this.btnLoadShowFile.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnLoadShowFile.Name = "btnLoadShowFile";
+ this.btnLoadShowFile.Size = new System.Drawing.Size(432, 22);
+ this.btnLoadShowFile.TabIndex = 0;
+ this.btnLoadShowFile.Text = "Load .rsl";
+ this.btnLoadShowFile.UseVisualStyleBackColor = true;
+ this.btnLoadShowFile.Click += new System.EventHandler(this.btnLoadShowFile_Click);
+ //
+ // dlgOpenRSL
+ //
+ this.dlgOpenRSL.Filter = "RoboSpot Showfiles (*.rsl)|*.rsl";
+ //
+ // listAllShowfiles
+ //
+ this.listAllShowfiles.FormattingEnabled = true;
+ this.listAllShowfiles.ItemHeight = 15;
+ this.listAllShowfiles.Location = new System.Drawing.Point(10, 129);
+ this.listAllShowfiles.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.listAllShowfiles.Name = "listAllShowfiles";
+ this.listAllShowfiles.Size = new System.Drawing.Size(203, 199);
+ this.listAllShowfiles.TabIndex = 2;
+ //
+ // lblAllShowfileNames
+ //
+ this.lblAllShowfileNames.AutoSize = true;
+ this.lblAllShowfileNames.Location = new System.Drawing.Point(10, 112);
+ this.lblAllShowfileNames.Name = "lblAllShowfileNames";
+ this.lblAllShowfileNames.Size = new System.Drawing.Size(114, 15);
+ this.lblAllShowfileNames.TabIndex = 3;
+ this.lblAllShowfileNames.Text = "All Showfiles Names";
+ //
+ // txtCamIP
+ //
+ this.txtCamIP.Location = new System.Drawing.Point(140, 35);
+ this.txtCamIP.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.txtCamIP.Name = "txtCamIP";
+ this.txtCamIP.ReadOnly = true;
+ this.txtCamIP.Size = new System.Drawing.Size(302, 23);
+ this.txtCamIP.TabIndex = 4;
+ //
+ // lblLastUsedCamera
+ //
+ this.lblLastUsedCamera.AutoSize = true;
+ this.lblLastUsedCamera.Location = new System.Drawing.Point(20, 38);
+ this.lblLastUsedCamera.Name = "lblLastUsedCamera";
+ this.lblLastUsedCamera.Size = new System.Drawing.Size(114, 15);
+ this.lblLastUsedCamera.TabIndex = 5;
+ this.lblLastUsedCamera.Text = "Last Used Camera IP";
+ //
+ // btnClearUI
+ //
+ this.btnClearUI.Location = new System.Drawing.Point(448, 9);
+ this.btnClearUI.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.btnClearUI.Name = "btnClearUI";
+ this.btnClearUI.Size = new System.Drawing.Size(85, 22);
+ this.btnClearUI.TabIndex = 6;
+ this.btnClearUI.Text = "Clear";
+ this.btnClearUI.UseVisualStyleBackColor = true;
+ this.btnClearUI.Click += new System.EventHandler(this.btnClearUI_Click);
+ //
+ // txtShowVersion
+ //
+ this.txtShowVersion.Location = new System.Drawing.Point(140, 89);
+ this.txtShowVersion.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.txtShowVersion.Name = "txtShowVersion";
+ this.txtShowVersion.ReadOnly = true;
+ this.txtShowVersion.Size = new System.Drawing.Size(85, 23);
+ this.txtShowVersion.TabIndex = 7;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(57, 92);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(77, 15);
+ this.label1.TabIndex = 8;
+ this.label1.Text = "Show Version";
+ //
+ // chkPosBtnShown
+ //
+ this.chkPosBtnShown.AutoCheck = false;
+ this.chkPosBtnShown.AutoSize = true;
+ this.chkPosBtnShown.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkPosBtnShown.Location = new System.Drawing.Point(290, 91);
+ this.chkPosBtnShown.Name = "chkPosBtnShown";
+ this.chkPosBtnShown.Size = new System.Drawing.Size(152, 19);
+ this.chkPosBtnShown.TabIndex = 9;
+ this.chkPosBtnShown.Text = "Position Buttons Shown";
+ this.chkPosBtnShown.UseVisualStyleBackColor = true;
+ //
+ // chkColorBtnShown
+ //
+ this.chkColorBtnShown.AutoCheck = false;
+ this.chkColorBtnShown.AutoSize = true;
+ this.chkColorBtnShown.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkColorBtnShown.Location = new System.Drawing.Point(304, 158);
+ this.chkColorBtnShown.Name = "chkColorBtnShown";
+ this.chkColorBtnShown.Size = new System.Drawing.Size(138, 19);
+ this.chkColorBtnShown.TabIndex = 10;
+ this.chkColorBtnShown.Text = "Color Buttons Shown";
+ this.chkColorBtnShown.UseVisualStyleBackColor = true;
+ //
+ // chkTargetCrossShown
+ //
+ this.chkTargetCrossShown.AutoCheck = false;
+ this.chkTargetCrossShown.AutoSize = true;
+ this.chkTargetCrossShown.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkTargetCrossShown.Location = new System.Drawing.Point(313, 183);
+ this.chkTargetCrossShown.Name = "chkTargetCrossShown";
+ this.chkTargetCrossShown.Size = new System.Drawing.Size(129, 19);
+ this.chkTargetCrossShown.TabIndex = 11;
+ this.chkTargetCrossShown.Text = "Target Cross Shown";
+ this.chkTargetCrossShown.UseVisualStyleBackColor = true;
+ //
+ // chkTraceCursor
+ //
+ this.chkTraceCursor.AutoCheck = false;
+ this.chkTraceCursor.AutoSize = true;
+ this.chkTraceCursor.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkTraceCursor.Location = new System.Drawing.Point(351, 225);
+ this.chkTraceCursor.Name = "chkTraceCursor";
+ this.chkTraceCursor.Size = new System.Drawing.Size(91, 19);
+ this.chkTraceCursor.TabIndex = 12;
+ this.chkTraceCursor.Text = "Trace Cursor";
+ this.chkTraceCursor.UseVisualStyleBackColor = true;
+ //
+ // chkTracePanInvert
+ //
+ this.chkTracePanInvert.AutoCheck = false;
+ this.chkTracePanInvert.AutoSize = true;
+ this.chkTracePanInvert.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkTracePanInvert.Location = new System.Drawing.Point(363, 250);
+ this.chkTracePanInvert.Name = "chkTracePanInvert";
+ this.chkTracePanInvert.Size = new System.Drawing.Size(79, 19);
+ this.chkTracePanInvert.TabIndex = 13;
+ this.chkTracePanInvert.Text = "Pan Invert";
+ this.chkTracePanInvert.UseVisualStyleBackColor = true;
+ //
+ // chkTraceTiltInvert
+ //
+ this.chkTraceTiltInvert.AutoCheck = false;
+ this.chkTraceTiltInvert.AutoSize = true;
+ this.chkTraceTiltInvert.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkTraceTiltInvert.Location = new System.Drawing.Point(367, 275);
+ this.chkTraceTiltInvert.Name = "chkTraceTiltInvert";
+ this.chkTraceTiltInvert.Size = new System.Drawing.Size(75, 19);
+ this.chkTraceTiltInvert.TabIndex = 14;
+ this.chkTraceTiltInvert.Text = "Tilt Invert";
+ this.chkTraceTiltInvert.UseVisualStyleBackColor = true;
+ //
+ // txtTraceType
+ //
+ this.txtTraceType.Location = new System.Drawing.Point(357, 299);
+ this.txtTraceType.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.txtTraceType.Name = "txtTraceType";
+ this.txtTraceType.ReadOnly = true;
+ this.txtTraceType.Size = new System.Drawing.Size(85, 23);
+ this.txtTraceType.TabIndex = 15;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(290, 302);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(61, 15);
+ this.label2.TabIndex = 16;
+ this.label2.Text = "Trace Type";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(29, 65);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(105, 15);
+ this.label3.TabIndex = 18;
+ this.label3.Text = "Exported Filename";
+ //
+ // txtExportedFilename
+ //
+ this.txtExportedFilename.Location = new System.Drawing.Point(140, 62);
+ this.txtExportedFilename.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.txtExportedFilename.Name = "txtExportedFilename";
+ this.txtExportedFilename.ReadOnly = true;
+ this.txtExportedFilename.Size = new System.Drawing.Size(302, 23);
+ this.txtExportedFilename.TabIndex = 17;
+ //
+ // chkPosShowInScene
+ //
+ this.chkPosShowInScene.AutoCheck = false;
+ this.chkPosShowInScene.AutoSize = true;
+ this.chkPosShowInScene.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkPosShowInScene.Location = new System.Drawing.Point(340, 116);
+ this.chkPosShowInScene.Name = "chkPosShowInScene";
+ this.chkPosShowInScene.Size = new System.Drawing.Size(102, 19);
+ this.chkPosShowInScene.TabIndex = 19;
+ this.chkPosShowInScene.Text = "Show in Scene";
+ this.chkPosShowInScene.UseVisualStyleBackColor = true;
+ //
+ // chkDmxDimmersShown
+ //
+ this.chkDmxDimmersShown.AutoCheck = false;
+ this.chkDmxDimmersShown.AutoSize = true;
+ this.chkDmxDimmersShown.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.chkDmxDimmersShown.Location = new System.Drawing.Point(300, 352);
+ this.chkDmxDimmersShown.Name = "chkDmxDimmersShown";
+ this.chkDmxDimmersShown.Size = new System.Drawing.Size(142, 19);
+ this.chkDmxDimmersShown.TabIndex = 20;
+ this.chkDmxDimmersShown.Text = "DMX Dimmers Shown";
+ this.chkDmxDimmersShown.UseVisualStyleBackColor = true;
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(543, 475);
+ this.Controls.Add(this.chkDmxDimmersShown);
+ this.Controls.Add(this.chkPosShowInScene);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.txtExportedFilename);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.txtTraceType);
+ this.Controls.Add(this.chkTraceTiltInvert);
+ this.Controls.Add(this.chkTracePanInvert);
+ this.Controls.Add(this.chkTraceCursor);
+ this.Controls.Add(this.chkTargetCrossShown);
+ this.Controls.Add(this.chkColorBtnShown);
+ this.Controls.Add(this.chkPosBtnShown);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.txtShowVersion);
+ this.Controls.Add(this.btnClearUI);
+ this.Controls.Add(this.lblLastUsedCamera);
+ this.Controls.Add(this.txtCamIP);
+ this.Controls.Add(this.lblAllShowfileNames);
+ this.Controls.Add(this.listAllShowfiles);
+ this.Controls.Add(this.btnLoadShowFile);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
+ this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
+ this.MaximizeBox = false;
+ this.Name = "MainForm";
+ this.Text = "RoboSpot RSL Editor";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private Button btnLoadShowFile;
+ private OpenFileDialog dlgOpenRSL;
+ private ListBox listAllShowfiles;
+ private Label lblAllShowfileNames;
+ private TextBox txtCamIP;
+ private Label lblLastUsedCamera;
+ private Button btnClearUI;
+ private TextBox txtShowVersion;
+ private Label label1;
+ private CheckBox chkPosBtnShown;
+ private CheckBox chkColorBtnShown;
+ private CheckBox chkTargetCrossShown;
+ private CheckBox chkTraceCursor;
+ private CheckBox chkTracePanInvert;
+ private CheckBox chkTraceTiltInvert;
+ private TextBox txtTraceType;
+ private Label label2;
+ private Label label3;
+ private TextBox txtExportedFilename;
+ private CheckBox chkPosShowInScene;
+ private CheckBox chkDmxDimmersShown;
+ }
+}
\ No newline at end of file
diff --git a/MainForm.cs b/MainForm.cs
new file mode 100644
index 0000000..e588c3a
--- /dev/null
+++ b/MainForm.cs
@@ -0,0 +1,186 @@
+using System.Globalization;
+using System.Text;
+
+namespace RoboSpot_RSL_Editor
+{
+ public partial class MainForm : Form
+ {
+ public MainForm()
+ {
+ InitializeComponent();
+ }
+
+ private void btnLoadShowFile_Click(object sender, EventArgs e)
+ {
+ if (dlgOpenRSL.ShowDialog() == DialogResult.OK)
+ {
+ clearUI();
+ FileStream fs = new FileStream(dlgOpenRSL.FileName, FileMode.Open);
+
+ List showfileContents = new List();
+ int hexIn;
+ for (int i = 0; (hexIn = fs.ReadByte()) != -1; i++)
+ {
+ String hex = string.Format("{0:X2}", hexIn);
+ showfileContents.Add(hex);
+ }
+ fs.Close();
+
+ String[] lines = showfileContents.ToArray();
+
+
+ if (lines.Length == 43438)
+ {
+ if (lines[0] != "02")
+ {
+ DialogResult result = MessageBox.Show("File header seems incorrect. Still try read the showfile ?", "Header incorrect", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+ if (result == DialogResult.Yes)
+ {
+ processFile(lines);
+ }
+ }
+ else
+ {
+ processFile(lines);
+ }
+ } else
+ {
+ DialogResult result = MessageBox.Show("File size seems incorrect. Still try read the showfile ?", "Size incorrect", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+ if (result == DialogResult.Yes)
+ {
+ processFile(lines);
+ }
+ }
+ }
+ }
+
+ private String rawToString(string input)
+ {
+ int value = Convert.ToInt32(input, 16);
+ char charValue = (char)value;
+ return charValue.ToString();
+ }
+
+ private void clearUI()
+ {
+ txtCamIP.Clear();
+ listAllShowfiles.Items.Clear();
+ txtShowVersion.Clear();
+ this.Text = Application.ProductName;
+
+ chkPosBtnShown.Checked = false;
+ chkPosShowInScene.Checked = false;
+
+ chkColorBtnShown.Checked = false;
+
+ chkTargetCrossShown.Checked = false;
+
+ chkTraceCursor.Checked = false;
+ chkTracePanInvert.Checked = false;
+ chkTraceTiltInvert.Checked = false;
+ txtTraceType.Clear();
+
+ txtExportedFilename.Clear();
+
+ chkDmxDimmersShown.Checked = false;
+ }
+
+ private void btnClearUI_Click(object sender, EventArgs e)
+ {
+ clearUI();
+ }
+
+ private void processFile(string[] input)
+ {
+ List all_showfile_chars_as_string = new List();
+
+ foreach (string hx in input[58..71])
+ {
+ txtCamIP.AppendText(rawToString(hx));
+ }
+
+ foreach (string hx in input[32812..32971])
+ {
+ string value;
+ if (hx == "00")
+ {
+ value = rawToString("20");
+ }
+ else
+ {
+ value = rawToString(hx);
+ }
+ all_showfile_chars_as_string.Add(value);
+ }
+
+
+ if (input[2722].ToString() == "01")
+ {
+ chkPosBtnShown.Checked = true;
+ }
+
+ if (input[32976].ToString() == "01")
+ {
+ chkColorBtnShown.Checked = true;
+ }
+
+ if (input[32780].ToString() == "01")
+ {
+ chkTargetCrossShown.Checked = true;
+ }
+
+ if (input[2622].ToString() == "01")
+ {
+ chkTraceCursor.Checked = true;
+ }
+
+
+ if (input[2723].ToString() == "01")
+ {
+ chkPosShowInScene.Checked = true;
+ }
+
+ if (input[2623].ToString() == "01")
+ {
+ chkTracePanInvert.Checked = true;
+ }
+
+ if (input[2624].ToString() == "01")
+ {
+ chkTraceTiltInvert.Checked = true;
+ }
+
+ if (input[33248].ToString() == "01")
+ {
+ chkDmxDimmersShown.Checked = true;
+ }
+
+ if (input[2626].ToString() == "E7")
+ {
+ txtTraceType.AppendText("CAMERA");
+ } else
+ {
+ txtTraceType.AppendText("FOLLOWSPOT");
+ }
+
+ foreach (string hx in input[31712..31742])
+ {
+ txtExportedFilename.AppendText(rawToString(hx));
+ }
+
+ string all_showfiles = String.Join("", all_showfile_chars_as_string);
+
+ this.Text = Application.ProductName + " - " + dlgOpenRSL.FileName;
+
+ txtShowVersion.AppendText(input[2]);
+
+ for (int i = 0; i < 10; i++)
+ {
+ string showfile = all_showfiles.Substring(i * 16, 15);
+ listAllShowfiles.Items.Add(showfile);
+ }
+
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/MainForm.resx b/MainForm.resx
new file mode 100644
index 0000000..78006cb
--- /dev/null
+++ b/MainForm.resx
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
new file mode 100644
index 0000000..b0713b0
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,17 @@
+namespace RoboSpot_RSL_Editor
+{
+ internal static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ // To customize application configuration such as set high DPI settings or default font,
+ // see https://aka.ms/applicationconfiguration.
+ ApplicationConfiguration.Initialize();
+ Application.Run(new MainForm());
+ }
+ }
+}
\ No newline at end of file
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE - wrong_header.rsl b/ROBOSPOT SHOWFILES/HF22 BASE - wrong_header.rsl
new file mode 100644
index 0000000..627019d
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE - wrong_header.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE 4col.rsl b/ROBOSPOT SHOWFILES/HF22 BASE 4col.rsl
new file mode 100644
index 0000000..d2798da
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE 4col.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE 5col.rsl b/ROBOSPOT SHOWFILES/HF22 BASE 5col.rsl
new file mode 100644
index 0000000..03085e5
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE 5col.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE art uni 0.rsl b/ROBOSPOT SHOWFILES/HF22 BASE art uni 0.rsl
new file mode 100644
index 0000000..80b5f3b
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE art uni 0.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE art uni 1.rsl b/ROBOSPOT SHOWFILES/HF22 BASE art uni 1.rsl
new file mode 100644
index 0000000..b2683fd
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE art uni 1.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE col hidden.rsl b/ROBOSPOT SHOWFILES/HF22 BASE col hidden.rsl
new file mode 100644
index 0000000..ef7bcc5
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE col hidden.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE col shown.rsl b/ROBOSPOT SHOWFILES/HF22 BASE col shown.rsl
new file mode 100644
index 0000000..4d34a0e
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE col shown.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE empty map.rsl b/ROBOSPOT SHOWFILES/HF22 BASE empty map.rsl
new file mode 100644
index 0000000..bc899f5
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE empty map.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE left inv.rsl b/ROBOSPOT SHOWFILES/HF22 BASE left inv.rsl
new file mode 100644
index 0000000..9d00acc
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE left inv.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE max file charactersz.rsl b/ROBOSPOT SHOWFILES/HF22 BASE max file charactersz.rsl
new file mode 100644
index 0000000..952c6fd
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE max file charactersz.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE no col.rsl b/ROBOSPOT SHOWFILES/HF22 BASE no col.rsl
new file mode 100644
index 0000000..b02a51e
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE no col.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE no dmx dim.rsl b/ROBOSPOT SHOWFILES/HF22 BASE no dmx dim.rsl
new file mode 100644
index 0000000..85f44cd
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE no dmx dim.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE no inv.rsl b/ROBOSPOT SHOWFILES/HF22 BASE no inv.rsl
new file mode 100644
index 0000000..bfd44ac
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE no inv.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE pass on.rsl b/ROBOSPOT SHOWFILES/HF22 BASE pass on.rsl
new file mode 100644
index 0000000..057c360
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE pass on.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE pass1234.rsl b/ROBOSPOT SHOWFILES/HF22 BASE pass1234.rsl
new file mode 100644
index 0000000..485b55f
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE pass1234.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE pass5242.rsl b/ROBOSPOT SHOWFILES/HF22 BASE pass5242.rsl
new file mode 100644
index 0000000..7f6dc3c
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE pass5242.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE pos shown.rsl b/ROBOSPOT SHOWFILES/HF22 BASE pos shown.rsl
new file mode 100644
index 0000000..f3f8af5
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE pos shown.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE pos shw in scene.rsl b/ROBOSPOT SHOWFILES/HF22 BASE pos shw in scene.rsl
new file mode 100644
index 0000000..c9e2de5
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE pos shw in scene.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE trace cam pan.rsl b/ROBOSPOT SHOWFILES/HF22 BASE trace cam pan.rsl
new file mode 100644
index 0000000..70ada2d
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE trace cam pan.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE trace cam pt.rsl b/ROBOSPOT SHOWFILES/HF22 BASE trace cam pt.rsl
new file mode 100644
index 0000000..6c32453
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE trace cam pt.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE trace cam tilt.rsl b/ROBOSPOT SHOWFILES/HF22 BASE trace cam tilt.rsl
new file mode 100644
index 0000000..6139db1
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE trace cam tilt.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE trace follow.rsl b/ROBOSPOT SHOWFILES/HF22 BASE trace follow.rsl
new file mode 100644
index 0000000..6bdf695
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE trace follow.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE trace on cam.rsl b/ROBOSPOT SHOWFILES/HF22 BASE trace on cam.rsl
new file mode 100644
index 0000000..9fd5ae0
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE trace on cam.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE trget off.rsl b/ROBOSPOT SHOWFILES/HF22 BASE trget off.rsl
new file mode 100644
index 0000000..8f77560
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE trget off.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE trget on.rsl b/ROBOSPOT SHOWFILES/HF22 BASE trget on.rsl
new file mode 100644
index 0000000..f05a781
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE trget on.rsl differ
diff --git a/ROBOSPOT SHOWFILES/HF22 BASE.rsl b/ROBOSPOT SHOWFILES/HF22 BASE.rsl
new file mode 100644
index 0000000..54d5c0f
Binary files /dev/null and b/ROBOSPOT SHOWFILES/HF22 BASE.rsl differ
diff --git a/ROBOSPOT SHOWFILES/IMMERSION v1 12fixt.rsl b/ROBOSPOT SHOWFILES/IMMERSION v1 12fixt.rsl
new file mode 100644
index 0000000..e60373e
Binary files /dev/null and b/ROBOSPOT SHOWFILES/IMMERSION v1 12fixt.rsl differ
diff --git a/ROBOSPOT SHOWFILES/WRONG FILE.rsl b/ROBOSPOT SHOWFILES/WRONG FILE.rsl
new file mode 100644
index 0000000..1d03a8e
Binary files /dev/null and b/ROBOSPOT SHOWFILES/WRONG FILE.rsl differ
diff --git a/ROBOSPOT SHOWFILES/dmp/robospot.cfg.rsl b/ROBOSPOT SHOWFILES/dmp/robospot.cfg.rsl
new file mode 100644
index 0000000..8996f4a
Binary files /dev/null and b/ROBOSPOT SHOWFILES/dmp/robospot.cfg.rsl differ
diff --git a/ROBOSPOT SHOWFILES/robospot_rsl.grammar b/ROBOSPOT SHOWFILES/robospot_rsl.grammar
new file mode 100644
index 0000000..8efc754
--- /dev/null
+++ b/ROBOSPOT SHOWFILES/robospot_rsl.grammar
@@ -0,0 +1,13 @@
+
+
+
+ Grammar for RSL files
+
+
+
+
+
+
+
+
+
diff --git a/RoboSpot RSL Editor.csproj b/RoboSpot RSL Editor.csproj
new file mode 100644
index 0000000..06b9290
--- /dev/null
+++ b/RoboSpot RSL Editor.csproj
@@ -0,0 +1,12 @@
+
+
+
+ WinExe
+ net6.0-windows
+ RoboSpot_RSL_Editor
+ enable
+ true
+ enable
+
+
+
\ No newline at end of file
diff --git a/RoboSpot RSL Editor.sln b/RoboSpot RSL Editor.sln
new file mode 100644
index 0000000..f69645a
--- /dev/null
+++ b/RoboSpot RSL Editor.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.2.32602.215
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RoboSpot RSL Editor", "RoboSpot RSL Editor.csproj", "{BC40B8AD-56BA-4F37-89ED-3E5928BDE03B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BC40B8AD-56BA-4F37-89ED-3E5928BDE03B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BC40B8AD-56BA-4F37-89ED-3E5928BDE03B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BC40B8AD-56BA-4F37-89ED-3E5928BDE03B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BC40B8AD-56BA-4F37-89ED-3E5928BDE03B}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {AB13DC70-46BD-404F-B3DD-22907419708B}
+ EndGlobalSection
+EndGlobal