diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..8e817933 Binary files /dev/null and b/.DS_Store differ diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..ddb6ff85 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "visualstudiotoolsforunity.vstuc" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..da60e25a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,10 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Unity", + "type": "vstuc", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..12dd4d4f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,70 @@ +{ + "files.exclude": { + "**/.DS_Store": true, + "**/.git": true, + "**/.vs": true, + "**/.gitmodules": true, + "**/.vsconfig": true, + "**/*.booproj": true, + "**/*.pidb": true, + "**/*.suo": true, + "**/*.user": true, + "**/*.userprefs": true, + "**/*.unityproj": true, + "**/*.dll": true, + "**/*.exe": true, + "**/*.pdf": true, + "**/*.mid": true, + "**/*.midi": true, + "**/*.wav": true, + "**/*.gif": true, + "**/*.ico": true, + "**/*.jpg": true, + "**/*.jpeg": true, + "**/*.png": true, + "**/*.psd": true, + "**/*.tga": true, + "**/*.tif": true, + "**/*.tiff": true, + "**/*.3ds": true, + "**/*.3DS": true, + "**/*.fbx": true, + "**/*.FBX": true, + "**/*.lxo": true, + "**/*.LXO": true, + "**/*.ma": true, + "**/*.MA": true, + "**/*.obj": true, + "**/*.OBJ": true, + "**/*.asset": true, + "**/*.cubemap": true, + "**/*.flare": true, + "**/*.mat": true, + "**/*.meta": true, + "**/*.prefab": true, + "**/*.unity": true, + "build/": true, + "Build/": true, + "Library/": true, + "library/": true, + "obj/": true, + "Obj/": true, + "Logs/": true, + "logs/": true, + "ProjectSettings/": true, + "UserSettings/": true, + "temp/": true, + "Temp/": true + }, + "files.associations": { + "*.asset": "yaml", + "*.meta": "yaml", + "*.prefab": "yaml", + "*.unity": "yaml", + }, + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "*.sln": "*.csproj", + }, + "dotnet.defaultSolution": "Digital-Logic-Sim.sln" +} \ No newline at end of file diff --git a/Assets/.DS_Store b/Assets/.DS_Store new file mode 100644 index 00000000..4d4fd844 Binary files /dev/null and b/Assets/.DS_Store differ diff --git a/Assets/Build/DLS.unity b/Assets/Build/DLS.unity index 209cbc4f..f04c457e 100644 --- a/Assets/Build/DLS.unity +++ b/Assets/Build/DLS.unity @@ -242,9 +242,9 @@ MonoBehaviour: m_EditorClassIdentifier: openSaveDirectory: 0 openInMainMenu: 0 - testProjectName: MainTest + testProjectName: abc openA: 1 - chipToOpenA: BuzzTest + chipToOpenA: abc chipToOpenB: TEST MergeSplit testVecA: {x: 100, y: 0.5333334} testVecB: {x: 1.71, y: 0.0025} diff --git a/Assets/Scripts/.DS_Store b/Assets/Scripts/.DS_Store new file mode 100644 index 00000000..320c1ca5 Binary files /dev/null and b/Assets/Scripts/.DS_Store differ diff --git a/Assets/Scripts/DLS.asmdef b/Assets/Scripts/DLS.asmdef index 73295ad9..a1cb2884 100644 --- a/Assets/Scripts/DLS.asmdef +++ b/Assets/Scripts/DLS.asmdef @@ -1,17 +1,18 @@ { - "name": "DLS", - "rootNamespace": "", - "references": [ - "GUID:d4f8eab5cdd4a544c9923829818c11c0", - "GUID:2b65bcfb6aad3f1459e94b356ff58293" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false + "name": "DLS", + "rootNamespace": "", + "references": [ + "Assembly-Seb", + "DLS.Description", + "DLSModdingAPI" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false } \ No newline at end of file diff --git a/Assets/Scripts/Description/.DS_Store b/Assets/Scripts/Description/.DS_Store new file mode 100644 index 00000000..8b789bbc Binary files /dev/null and b/Assets/Scripts/Description/.DS_Store differ diff --git a/Assets/Scripts/Description/Helpers/ChipTypeHelper.cs b/Assets/Scripts/Description/Helpers/ChipTypeHelper.cs index 3d1e60d0..c645a155 100644 --- a/Assets/Scripts/Description/Helpers/ChipTypeHelper.cs +++ b/Assets/Scripts/Description/Helpers/ChipTypeHelper.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using UnityEngine; namespace DLS.Description { @@ -16,21 +17,44 @@ public static class ChipTypeHelper { ChipType.TriStateBuffer, "3-STATE BUFFER" }, // ---- Memory ---- { ChipType.dev_Ram_8Bit, "dev.RAM-8" }, + { ChipType.Rom_256x2x8, $"ROM 256{mulSymbol}x2x8" }, { ChipType.Rom_256x16, $"ROM 256{mulSymbol}16" }, + { ChipType.Rom_256x32, $"ROM 256{mulSymbol}32" }, // ---- Split / Merge ---- { ChipType.Split_4To1Bit, "4-1BIT" }, { ChipType.Split_8To1Bit, "8-1BIT" }, { ChipType.Split_8To4Bit, "8-4BIT" }, + { ChipType.Split_16To1Bit, "16-1BIT" }, + { ChipType.Split_16To4Bit, "16-4BIT" }, + { ChipType.Split_16To8Bit, "16-8BIT" }, { ChipType.Merge_4To8Bit, "4-8BIT" }, { ChipType.Merge_1To8Bit, "1-8BIT" }, { ChipType.Merge_1To4Bit, "1-4BIT" }, + { ChipType.Merge_1To16Bit, "1-16BIT" }, + { ChipType.Merge_4To16Bit, "4-16BIT" }, + { ChipType.Merge_8To16Bit, "8-16BIT" }, // ---- Displays ----- { ChipType.DisplayRGB, "RGB DISPLAY" }, { ChipType.DisplayDot, "DOT DISPLAY" }, { ChipType.SevenSegmentDisplay, "7-SEGMENT" }, { ChipType.DisplayLED, "LED" }, + { ChipType.DisplayRGBLED, "RGBLED" }, + { ChipType.DisplayUTF, "Text Display"}, + // ---- Ports ---- + {ChipType.PortIn_1Bit, "PORT-IN-1"}, + {ChipType.PortIn_4Bit, "PORT-IN-4"}, + {ChipType.PortIn_8Bit, "PORT-IN-8"}, + {ChipType.PortIn_16Bit, "PORT-IN-16"}, + {ChipType.PortOut_1Bit, "PORT-OUT-1"}, + {ChipType.PortOut_4Bit, "PORT-OUT-4"}, + {ChipType.PortOut_8Bit, "PORT-OUT-8"}, + {ChipType.PortOut_16Bit, "PORT-OUT-16"}, + + { ChipType.Complex_Internet_Interface, "Complex Internet Interface" }, + + // ---- Buzzer ---- { ChipType.Buzzer, "BUZZER" }, // ---- Not really chips (but convenient to treat them as such anyway) ---- @@ -43,24 +67,25 @@ public static class ChipTypeHelper { ChipType.Out_4Bit, "OUT-4" }, { ChipType.Out_8Bit, "OUT-8" }, { ChipType.Key, "KEY" }, + // ---- Buses ---- { ChipType.Bus_1Bit, "BUS-1" }, { ChipType.Bus_4Bit, "BUS-4" }, { ChipType.Bus_8Bit, "BUS-8" }, { ChipType.BusTerminus_1Bit, "BUS-TERMINUS-1" }, { ChipType.BusTerminus_4Bit, "BUS-TERMINUS-4" }, - { ChipType.BusTerminus_8Bit, "BUS-TERMINUS-8" } + { ChipType.BusTerminus_8Bit, "BUS-TERMINUS-8" }, }; public static string GetName(ChipType type) => Names[type]; public static bool IsBusType(ChipType type) => IsBusOriginType(type) || IsBusTerminusType(type); - public static bool IsBusOriginType(ChipType type) => type is ChipType.Bus_1Bit or ChipType.Bus_4Bit or ChipType.Bus_8Bit; + public static bool IsBusOriginType(ChipType type) => type is ChipType.Bus_1Bit or ChipType.Bus_4Bit or ChipType.Bus_8Bit or ChipType.Bus_16Bit; - public static bool IsBusTerminusType(ChipType type) => type is ChipType.BusTerminus_1Bit or ChipType.BusTerminus_4Bit or ChipType.BusTerminus_8Bit; + public static bool IsBusTerminusType(ChipType type) => type is ChipType.BusTerminus_1Bit or ChipType.BusTerminus_4Bit or ChipType.BusTerminus_8Bit or ChipType.BusTerminus_16Bit; - public static bool IsRomType(ChipType type) => type == ChipType.Rom_256x16; + public static bool IsRomType(ChipType type) => type is ChipType.Rom_256x2x8 or ChipType.Rom_256x16 or ChipType.Rom_256x32; public static ChipType GetCorrespondingBusTerminusType(ChipType type) { @@ -108,5 +133,10 @@ public static (bool isInput, bool isOutput, PinBitCount numBits) IsInputOrOutput _ => (false, false, PinBitCount.Bit1) }; } + public static bool IsPortChip(ChipType type) + { + return type is ChipType.PortIn_1Bit or ChipType.PortIn_4Bit or ChipType.PortIn_8Bit or ChipType.PortIn_16Bit + || type is ChipType.PortOut_1Bit or ChipType.PortOut_4Bit or ChipType.PortOut_8Bit or ChipType.PortOut_16Bit; + } } } \ No newline at end of file diff --git a/Assets/Scripts/Description/Types/.DS_Store b/Assets/Scripts/Description/Types/.DS_Store new file mode 100644 index 00000000..b2a33f03 Binary files /dev/null and b/Assets/Scripts/Description/Types/.DS_Store differ diff --git a/Assets/Scripts/Description/Types/ChipDescription.cs b/Assets/Scripts/Description/Types/ChipDescription.cs index b5b0e67f..69d14336 100644 --- a/Assets/Scripts/Description/Types/ChipDescription.cs +++ b/Assets/Scripts/Description/Types/ChipDescription.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using UnityEngine; namespace DLS.Description @@ -11,6 +12,7 @@ public class ChipDescription // ---- Data ---- public string DLSVersion; + public List DependsOnModIDs = new(); public string Name; public NameDisplayLocation NameLocation; public ChipType ChipType; diff --git a/Assets/Scripts/Description/Types/ProjectDescription.cs b/Assets/Scripts/Description/Types/ProjectDescription.cs index a8dc0f33..5010fc98 100644 --- a/Assets/Scripts/Description/Types/ProjectDescription.cs +++ b/Assets/Scripts/Description/Types/ProjectDescription.cs @@ -81,6 +81,7 @@ public class ChipCollection [JsonIgnore] string displayName_open; public bool IsToggledOpen; public string Name; + public List DependsOnModIDs = new(); public ChipCollection(string name, params string[] chips) { diff --git a/Assets/Scripts/Description/Types/SubTypes/ChipTypes.cs b/Assets/Scripts/Description/Types/SubTypes/ChipTypes.cs index 610f0298..b8294562 100644 --- a/Assets/Scripts/Description/Types/SubTypes/ChipTypes.cs +++ b/Assets/Scripts/Description/Types/SubTypes/ChipTypes.cs @@ -3,6 +3,7 @@ namespace DLS.Description public enum ChipType { Custom, + Modded, // ---- Basic Chips ---- Nand, @@ -12,21 +13,31 @@ public enum ChipType // ---- Memory ---- dev_Ram_8Bit, + Rom_256x2x8, Rom_256x16, + Rom_256x32, // ---- Displays ---- SevenSegmentDisplay, DisplayRGB, DisplayDot, DisplayLED, + DisplayRGBLED, + DisplayUTF, // ---- Merge / Split ---- Merge_1To4Bit, Merge_1To8Bit, Merge_4To8Bit, + Merge_1To16Bit, + Merge_4To16Bit, + Merge_8To16Bit, Split_4To1Bit, Split_8To4Bit, Split_8To1Bit, + Split_16To1Bit, + Split_16To4Bit, + Split_16To8Bit, // ---- In / Out Pins ---- In_1Bit, @@ -45,6 +56,21 @@ public enum ChipType BusTerminus_4Bit, Bus_8Bit, BusTerminus_8Bit, + Bus_16Bit, + BusTerminus_16Bit, + + // ---- PORT Chips ---- + + PortIn_1Bit, + PortIn_4Bit, + PortIn_8Bit, + PortIn_16Bit, + PortOut_1Bit, + PortOut_4Bit, + PortOut_8Bit, + PortOut_16Bit, + + Complex_Internet_Interface, // ---- Audio ---- Buzzer diff --git a/Assets/Scripts/Description/Types/SubTypes/DisplayDescription.cs b/Assets/Scripts/Description/Types/SubTypes/DisplayDescription.cs index 258c5e23..93ac544f 100644 --- a/Assets/Scripts/Description/Types/SubTypes/DisplayDescription.cs +++ b/Assets/Scripts/Description/Types/SubTypes/DisplayDescription.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using UnityEngine; namespace DLS.Description @@ -9,12 +10,14 @@ public struct DisplayDescription public int SubChipID; public Vector2 Position; public float Scale; + public List DependsOnModIDs; public DisplayDescription(int subChipID, Vector2 position, float scale) { SubChipID = subChipID; Position = position; Scale = scale; + DependsOnModIDs = new(); } } } \ No newline at end of file diff --git a/Assets/Scripts/Description/Types/SubTypes/PinDescription.cs b/Assets/Scripts/Description/Types/SubTypes/PinDescription.cs index 62745260..d2aee0d6 100644 --- a/Assets/Scripts/Description/Types/SubTypes/PinDescription.cs +++ b/Assets/Scripts/Description/Types/SubTypes/PinDescription.cs @@ -20,13 +20,24 @@ public PinDescription(string name, int id, Vector2 position, PinBitCount bitCoun Colour = colour; ValueDisplayMode = valueDisplayMode; } + + public PinDescription(string name, int id) + { + Name = name; + ID = id; + Position = Vector2.zero; + BitCount = PinBitCount.Bit1; + Colour = PinColour.Red; + ValueDisplayMode = PinValueDisplayMode.Off; + } } public enum PinBitCount { Bit1 = 1, Bit4 = 4, - Bit8 = 8 + Bit8 = 8, + Bit16 = 16 } public enum PinColour diff --git a/Assets/Scripts/External.meta b/Assets/Scripts/External.meta new file mode 100644 index 00000000..c5078e88 --- /dev/null +++ b/Assets/Scripts/External.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d9f746dfb1d6491a8e8380700334b82 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/External/PortHttpServer.cs b/Assets/Scripts/External/PortHttpServer.cs new file mode 100644 index 00000000..5e02a1a1 --- /dev/null +++ b/Assets/Scripts/External/PortHttpServer.cs @@ -0,0 +1,204 @@ +// Simple HTTP server for PortIn/PortOut chips +// This is a minimal implementation for macOS/Unity using System.Net +using System; +using System.Collections.Generic; +using System.Net; +using System.Text; +using System.Threading; +using UnityEngine; + +namespace DLS.External +{ + public static class PortHttpServer + { + private static HttpListener listener; + private static Thread serverThread; + + private static Dictionary names = new(); + private static Dictionary portOutValues = new(); + private static Dictionary portInValues = new(); + private static bool running = false; + static bool isSyncing = false; // Prevents infinite sync loops + + // --- Sync with PortSocketServer --- + public static Action OnSetPortName; + public static Action OnSetPortOutValue; + public static Action OnSetPortInValue; + + static PortHttpServer() + { + // Register sync callbacks for WebSocket server + OnSetPortName += (port, name) => { + DLS.External.PortSocketServer.SetPortName(port, name, true); + }; + OnSetPortOutValue += (port, value) => { + DLS.External.PortSocketServer.SetPortOutValue(port, value,true); + }; + OnSetPortInValue += (port, value) => { + DLS.External.PortSocketServer.SyncSetPortInValue(port, value, true); + }; + } + + public static void Start() + { + if (running) return; + running = true; + listener = new HttpListener(); + listener.Prefixes.Add("http://localhost:9999/"); + serverThread = new Thread(ServerLoop); + serverThread.Start(); + } + + public static void Stop() + { + running = false; + try + { + listener?.Abort(); // Forcefully aborts any blocking GetContext + listener?.Close(); // Disposes the listener + } + catch { } + listener = null; + if (serverThread != null && serverThread.IsAlive) + { + try { serverThread.Join(500); } catch { } + } + serverThread = null; + } + + public static void StartBoth() + { + if (!running) Start(); + DLS.External.PortSocketServer.Start(); + } + + public static void SetPortName(uint port, string name) + { + lock (names) + { + names[port] = name; + } + BroadcastPortStates(); + OnSetPortName?.Invoke(port, name); + } + + public static void SetPortOutValue(uint port, uint value) + { + lock (portOutValues) + { + portOutValues[port] = value; + } + BroadcastPortStates(); + OnSetPortOutValue?.Invoke(port, value); + } + + public static void SyncSetPortInValue(uint port, uint value, bool isSync = false) + { + if (isSyncing && isSync) return; // Prevent infinite sync only if called as a sync + if (isSync) isSyncing = true; + uint safeValue = value; + lock (portInValues) portInValues[port] = safeValue; + BroadcastPortStates(); + OnSetPortInValue?.Invoke(port, safeValue); + if (isSync) isSyncing = false; + } + + // New: direct input from user or external, not a sync + public static void SetPortInValue(uint port, uint value) + { + SyncSetPortInValue(port, value, false); + } + + public static uint GetPortInValue(uint port) + { + if (portInValues.TryGetValue(port, out var value)) + { + return value; + }else + { + portInValues[port] = 0; + return 0; + } + } + + private static void ServerLoop() + { + try { listener.Start(); } catch { return; } + while (running) + { + try + { + var ctx = listener.GetContext(); + var req = ctx.Request; + var resp = ctx.Response; + string path = req.Url.AbsolutePath.ToLower(); + if (path == "/") + { + // Show all port outs and ins + StringBuilder sb = new StringBuilder(); + sb.AppendLine("

Port Chips

"); + sb.AppendLine("

Port Out

    "); + lock (portOutValues) + foreach (var kv in portOutValues) + sb.AppendLine($"
  • {kv.Key}: {names[kv.Key]}: {kv.Value}
  • "); + sb.AppendLine("

PortIn

    "); + lock (portInValues) + foreach (var kv in portInValues) + sb.AppendLine($"
  • {kv.Key}: {names[kv.Key]}: {kv.Value}
  • "); + sb.AppendLine("
"); + WriteString(resp, sb.ToString()); + } + else if (path == "/setin" && req.HttpMethod == "GET") + { + string name = req.QueryString["name"] ?? ""; + string valueStr = req.QueryString["value"] ?? "0"; + Debug.Log($"Setting port in {name} to {valueStr}"); + uint value = uint.TryParse(valueStr, out var v) ? v : 0; + uint id = uint.TryParse(name, out var w) ? w : 0; + if (id == 0) + { + resp.StatusCode = 400; + WriteString(resp, "Invalid port ID"); + return; + } + if (!portInValues.ContainsKey(id)) + { + resp.StatusCode = 404; + WriteString(resp, "Port not found"); + return; + } + lock (portInValues) portInValues[id] = value; + resp.Redirect("/"); + resp.Close(); + } + else + { + resp.StatusCode = 404; + WriteString(resp, "Not found"); + } + } + catch (HttpListenerException) + { + // Listener was stopped/aborted, exit thread + break; + } + catch { } + } + } + + private static void WriteString(HttpListenerResponse resp, string s) + { + byte[] buf = Encoding.UTF8.GetBytes(s); + resp.ContentType = "text/html"; + resp.ContentLength64 = buf.Length; + resp.OutputStream.Write(buf, 0, buf.Length); + resp.Close(); + } + + private static void BroadcastPortStates() + { + // This method should broadcast the current state of ports to all connected clients + // Implementation depends on the specific requirements and is not provided here + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/External/PortHttpServer.cs.meta b/Assets/Scripts/External/PortHttpServer.cs.meta new file mode 100644 index 00000000..e7c431ce --- /dev/null +++ b/Assets/Scripts/External/PortHttpServer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1143f2ee6643043789764ff44876b33b \ No newline at end of file diff --git a/Assets/Scripts/External/PortSocketServer.cs b/Assets/Scripts/External/PortSocketServer.cs new file mode 100644 index 00000000..91acb514 --- /dev/null +++ b/Assets/Scripts/External/PortSocketServer.cs @@ -0,0 +1,234 @@ +// WebSocket server for PortIn/PortOut chips, similar to PortHttpServer +// Uses System.Net.WebSockets for WebSocket support +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.WebSockets; +using System.Threading; +using System.Threading.Tasks; +using UnityEngine; + +namespace DLS.External +{ + public static class PortSocketServer + { + private static HttpListener httpListener; + private static List allSockets = new(); + private static Dictionary names = new(); + private static Dictionary portOutValues = new(); + private static Dictionary portInValues = new(); + private static bool running = false; + private const int Port = 9001; + private static Thread serverThread; + private static bool isSyncing = false; // Prevents infinite sync loops + + // --- Sync with PortHttpServer --- + public static Action OnSetPortName; + public static Action OnSetPortOutValue; + public static Action OnSetPortInValue; + + static PortSocketServer() + { + // Register sync callbacks for HTTP server + OnSetPortName += (port, name) => { + if (!isSyncing) DLS.External.PortHttpServer.SetPortName(port, name); + }; + OnSetPortOutValue += (port, value) => { + if (!isSyncing) DLS.External.PortHttpServer.SetPortOutValue(port, value); + }; + OnSetPortInValue += (port, value) => { + if (!isSyncing) DLS.External.PortHttpServer.SetPortInValue(port, value); + }; + } + + public static void Start() + { + if (running) return; + running = true; + httpListener = new HttpListener(); + httpListener.Prefixes.Add($"http://*:{Port}/ws/"); + serverThread = new Thread(ServerLoop) { IsBackground = true }; + serverThread.Start(); + } + + public static void Stop() + { + running = false; + try { httpListener?.Abort(); httpListener?.Close(); } catch { } + httpListener = null; + lock (allSockets) foreach (var ws in allSockets) try { ws.Abort(); ws.Dispose(); } catch { } + allSockets.Clear(); + if (serverThread != null && serverThread.IsAlive) try { serverThread.Join(500); } catch { } + serverThread = null; + } + + private static async void ServerLoop() + { + try { httpListener.Start(); } catch (Exception e) { Debug.LogError($"WebSocket server failed to start: {e.Message}"); return; } + while (running) + { + try + { + var ctx = await httpListener.GetContextAsync(); + if (ctx.Request.IsWebSocketRequest) + { + _ = HandleWebSocket(ctx); + } + else + { + ctx.Response.StatusCode = 400; + ctx.Response.Close(); + } + } + catch { break; } + } + } + + private static async Task HandleWebSocket(HttpListenerContext ctx) + { + WebSocket ws = null; + try + { + var wsCtx = await ctx.AcceptWebSocketAsync(null); + ws = wsCtx.WebSocket; + lock (allSockets) allSockets.Add(ws); + await SendAllPortStates(ws); + var buffer = new ArraySegment(new byte[4096]); + while (ws.State == WebSocketState.Open && running) + { + var result = await ws.ReceiveAsync(buffer, CancellationToken.None); + if (result.MessageType == WebSocketMessageType.Close) break; + var msg = System.Text.Encoding.UTF8.GetString(buffer.Array, 0, result.Count); + HandleMessage(ws, msg); + } + } + catch (Exception e) { Debug.LogWarning($"WebSocket error: {e.Message}"); } + finally + { + if (ws != null) + { + lock (allSockets) allSockets.Remove(ws); + try { ws.Dispose(); } catch { } + } + } + } + + public static void StartBoth() + { + if (!running) Start(); + DLS.External.PortHttpServer.Start(); + } + + public static void SetPortName(uint port, string name, bool isSync = false) + { + lock (names) { names[port] = name; } + BroadcastPortStates(); + if (isSync){return;} // Prevent infinite sync loops + OnSetPortName?.Invoke(port, name); + } + + public static void SetPortOutValue(uint port, uint value, bool isSync = false) + { + lock (portOutValues) { portOutValues[port] = value; } + // Prevent infinite sync loops + BroadcastPortStates(); + if (isSync) return; + OnSetPortOutValue?.Invoke(port, value); + } + + public static uint GetPortInValue(uint port) + { + lock (portInValues) + { + if (portInValues.TryGetValue(port, out var value)) + return value; + portInValues[port] = 0; + return 0; + } + } + + // Called by HTTP server to sync PortIn value + public static void SyncSetPortInValue(uint port, uint value, bool isSync = false) + { + uint safeValue = value; + lock (portInValues) portInValues[port] = safeValue; + BroadcastPortStates(); + if (isSync) return; // Prevent infinite sync loops + OnSetPortInValue?.Invoke(port, safeValue); + } + + // New: direct input from user or external, not a sync + public static void SetPortInValue(uint port, uint value) + { + SyncSetPortInValue(port, value, false); + } + + private static void HandleMessage(WebSocket ws, string message) + { + try + { + var msg = JsonUtility.FromJson(message); + if (msg.type == "setin") + { + lock (portInValues) portInValues[msg.port] = msg.value; + BroadcastPortStates(); + } + } + catch (Exception e) + { + Debug.LogWarning($"WebSocket message error: {e.Message}"); + } + } + + private static void BroadcastPortStates() + { + var json = GetAllPortStatesJson(); + var bytes = System.Text.Encoding.UTF8.GetBytes(json); + lock (allSockets) + { + foreach (var ws in allSockets) + { + if (ws.State == WebSocketState.Open) + { + try { ws.SendAsync(new ArraySegment(bytes), WebSocketMessageType.Text, true, CancellationToken.None); } catch { } + } + } + } + } + + private static async Task SendAllPortStates(WebSocket ws) + { + var json = GetAllPortStatesJson(); + var bytes = System.Text.Encoding.UTF8.GetBytes(json); + if (ws.State == WebSocketState.Open) + { + try { await ws.SendAsync(new ArraySegment(bytes), WebSocketMessageType.Text, true, CancellationToken.None); } catch { } + } + } + + private static string GetAllPortStatesJson() + { + var portOutList = new List(); + var portInList = new List(); + lock (portOutValues) + foreach (var kv in portOutValues) + portOutList.Add(new PortEntry { port = kv.Key, name = names.TryGetValue(kv.Key, out var n) ? n : "", value = kv.Value }); + lock (portInValues) + foreach (var kv in portInValues) + portInList.Add(new PortEntry { port = kv.Key, name = names.TryGetValue(kv.Key, out var n) ? n : "", value = kv.Value }); + var state = new PortStateMsg + { + portOut = portOutList.ToArray(), + portIn = portInList.ToArray() + }; + return JsonUtility.ToJson(state); + } + + [Serializable] + private struct PortMsg { public string type; public uint port; public uint value; } + [Serializable] + private struct PortStateMsg { public PortEntry[] portOut; public PortEntry[] portIn; } + [Serializable] + private struct PortEntry { public uint port; public string name; public uint value; } + } +} diff --git a/Assets/Scripts/External/PortSocketServer.cs.meta b/Assets/Scripts/External/PortSocketServer.cs.meta new file mode 100644 index 00000000..ecb6c4ae --- /dev/null +++ b/Assets/Scripts/External/PortSocketServer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: a0ffc75a68f8e4a47beca5ee4b0fe1b0 \ No newline at end of file diff --git a/Assets/Scripts/Game/Elements/DevPinInstance.cs b/Assets/Scripts/Game/Elements/DevPinInstance.cs index 7827e687..9333c83c 100644 --- a/Assets/Scripts/Game/Elements/DevPinInstance.cs +++ b/Assets/Scripts/Game/Elements/DevPinInstance.cs @@ -42,6 +42,7 @@ public DevPinInstance(PinDescription pinDescription, bool isInput) PinBitCount.Bit1 => new Vector2Int(1, 1), PinBitCount.Bit4 => new Vector2Int(2, 2), PinBitCount.Bit8 => new Vector2Int(4, 2), + PinBitCount.Bit16 => new Vector2Int(4, 4), _ => throw new Exception("Bit count not implemented") }; StateGridSize = BitCount switch diff --git a/Assets/Scripts/Game/Elements/SubChipInstance.cs b/Assets/Scripts/Game/Elements/SubChipInstance.cs index d85725ee..a070161a 100644 --- a/Assets/Scripts/Game/Elements/SubChipInstance.cs +++ b/Assets/Scripts/Game/Elements/SubChipInstance.cs @@ -233,11 +233,13 @@ static List CreateDisplayInstances(ChipDescription chipDesc) static DisplayInstance CreateDisplayInstance(DisplayDescription displayDesc, ChipDescription chipDesc) { - DisplayInstance instance = new(); - instance.Desc = displayDesc; - instance.DisplayType = chipDesc.ChipType; + DisplayInstance instance = new() + { + Desc = displayDesc, + DisplayType = chipDesc.ChipType + }; - if (chipDesc.ChipType == ChipType.Custom) + if (chipDesc.ChipType == ChipType.Custom) { ChipDescription childDesc = GetDescriptionOfDisplayedSubChip(chipDesc, displayDesc.SubChipID); instance.ChildDisplays = CreateDisplayInstances(childDesc); @@ -309,6 +311,7 @@ public static float PinHeightFromBitCount(PinBitCount bitCount) PinBitCount.Bit1 => DrawSettings.PinRadius * 2, PinBitCount.Bit4 => DrawSettings.PinHeight4Bit, PinBitCount.Bit8 => DrawSettings.PinHeight8Bit, + PinBitCount.Bit16 => DrawSettings.PinHeight16Bit, _ => throw new Exception("Bit count not implemented " + bitCount) }; } diff --git a/Assets/Scripts/Game/Interaction/ChipInteractionController.cs b/Assets/Scripts/Game/Interaction/ChipInteractionController.cs index da9491d3..b3b96d7e 100644 --- a/Assets/Scripts/Game/Interaction/ChipInteractionController.cs +++ b/Assets/Scripts/Game/Interaction/ChipInteractionController.cs @@ -2,9 +2,13 @@ using System.Linq; using DLS.Description; using DLS.Graphics; +using DLS.ModdingAPI; +using DLS.Mods; using DLS.SaveSystem; using Seb.Helpers; using UnityEngine; +using PinBitCount = DLS.Description.PinBitCount; +using PinDescription = DLS.Description.PinDescription; namespace DLS.Game { @@ -239,9 +243,25 @@ void HandleMouseInput() if (HasControl) UpdatePositionsToMouse(); // --- Mouse button input --- - if (InputHelper.IsMouseDownThisFrame(MouseButton.Left)) HandleLeftMouseDown(); + if (InputHelper.IsMouseDownThisFrame(MouseButton.Left)) + { + ModLoader.NotifyMods((mod, args) => mod.OnMouseClick(args), new IMod.InputEventArgs + { + Position = InputHelper.MousePosWorld, + Button = IMod.MouseButton.Left + }); + HandleLeftMouseDown(); + } if (InputHelper.IsMouseUpThisFrame(MouseButton.Left)) HandleLeftMouseUp(); - if (InputHelper.IsMouseDownThisFrame(MouseButton.Right)) HandleRightMouseDown(); + if (InputHelper.IsMouseDownThisFrame(MouseButton.Right)) + { + ModLoader.NotifyMods((mod, args) => mod.OnMouseClick(args), new IMod.InputEventArgs + { + Position = InputHelper.MousePosWorld, + Button = IMod.MouseButton.Right + }); + HandleRightMouseDown(); + } // Shift + scroll to increase vertical spacing between elements when placing multiple at a time // (disabled if elements were duplicated since then we want to preserve relative positions) @@ -565,7 +585,16 @@ void FinishMovingElements() return; } - hasMoved |= (element.MoveStartPosition != element.Position); + hasMoved |= element.MoveStartPosition != element.Position; + + if (hasMoved) + { + ModLoader.NotifyMods((mod, args) => mod.OnMoveChip(args, element.Position), new IMod.ChipEventArgs + { + ChipName = element is SubChipInstance subchip ? subchip.Description.Name : string.Empty, + Position = element.MoveStartPosition + }); + } } if (hasMoved) ActiveDevChip.UndoController.RecordMoveElements(SelectedElements); @@ -598,8 +627,16 @@ void FinishPlacingNewElements() if (elementToPlace is SubChipInstance subchip) { ActiveDevChip.AddNewSubChip(subchip, false); + ModLoader.NotifyMods((mod, args) => mod.OnPlaceChip(args), new IMod.ChipEventArgs + { + ChipName = subchip.Description.Name, + Position = subchip.Position + }); + } + else if (elementToPlace is DevPinInstance devPin) + { + ActiveDevChip.AddNewDevPin(devPin, false); } - else if (elementToPlace is DevPinInstance devPin) ActiveDevChip.AddNewDevPin(devPin, false); } foreach (WireInstance wire in DuplicatedWires) @@ -630,6 +667,12 @@ void ExitWireEditMode() if (wireToEdit != null && isMovingWireEditPoint) { wireToEdit.SetWirePoint(wireEditPointOld, wireEditPointSelectedIndex); + ModLoader.NotifyMods((mod, args) => mod.OnEditWire(args), new IMod.WireEventArgs + { + SourcePinName = wireToEdit.SourcePin.Name, + TargetPinName = wireToEdit.TargetPin.Name, + BitCount = (int) wireToEdit.bitCount + }); } wireToEdit = null; @@ -841,6 +884,12 @@ void CompleteConnection(WireInstance.ConnectionInfo info) WireToPlace.FinishPlacingWire(info); ActiveDevChip.AddWire(WireToPlace, false); ActiveDevChip.UndoController.RecordAddWire(WireToPlace); + ModLoader.NotifyMods((mod, args) => mod.OnPlaceWire(args), new IMod.WireEventArgs + { + SourcePinName = WireToPlace.SourcePin.Name, + TargetPinName = WireToPlace.TargetPin.Name, + BitCount = (int) WireToPlace.bitCount + }); } } diff --git a/Assets/Scripts/Game/Interaction/KeyboardShortcuts.cs b/Assets/Scripts/Game/Interaction/KeyboardShortcuts.cs index 21f9dbd0..725b2e48 100644 --- a/Assets/Scripts/Game/Interaction/KeyboardShortcuts.cs +++ b/Assets/Scripts/Game/Interaction/KeyboardShortcuts.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; +using DLS.ModdingAPI; using Seb.Helpers; using UnityEngine; @@ -29,8 +31,8 @@ public static class KeyboardShortcuts // ---- Single key shortcuts ---- public static bool CancelShortcutTriggered => InputHelper.IsKeyDownThisFrame(KeyCode.Escape); - public static bool ConfirmShortcutTriggered => InputHelper.IsKeyDownThisFrame(KeyCode.Return) || InputHelper.IsKeyDownThisFrame(KeyCode.KeypadEnter); - public static bool DeleteShortcutTriggered => InputHelper.IsKeyDownThisFrame(KeyCode.Backspace) || InputHelper.IsKeyDownThisFrame(KeyCode.Delete); + public static bool ConfirmShortcutTriggered => (InputHelper.IsKeyDownThisFrame(KeyCode.Return) || InputHelper.IsKeyDownThisFrame(KeyCode.KeypadEnter)) && InputHelper.ShiftIsHeld; + public static bool DeleteShortcutTriggered => (InputHelper.IsKeyDownThisFrame(KeyCode.Backspace) || InputHelper.IsKeyDownThisFrame(KeyCode.Delete)) && InputHelper.ShiftIsHeld; public static bool SimNextStepShortcutTriggered => InputHelper.IsKeyDownThisFrame(KeyCode.Space) && !InputHelper.CtrlIsHeld; public static bool SimPauseToggleShortcutTriggered => CtrlShortcutTriggered(KeyCode.Space); @@ -51,5 +53,20 @@ public static class KeyboardShortcuts static bool CtrlShortcutTriggered(KeyCode key) => InputHelper.IsKeyDownThisFrame(key) && InputHelper.CtrlIsHeld && !(InputHelper.AltIsHeld || InputHelper.ShiftIsHeld); static bool CtrlShiftShortcutTriggered(KeyCode key) => InputHelper.IsKeyDownThisFrame(key) && InputHelper.CtrlIsHeld && InputHelper.ShiftIsHeld && !(InputHelper.AltIsHeld); static bool ShiftShortcutTriggered(KeyCode key) => InputHelper.IsKeyDownThisFrame(key) && InputHelper.ShiftIsHeld && !(InputHelper.AltIsHeld || InputHelper.CtrlIsHeld); + + // ---- Modded shortcuts ---- + public static bool GetModdedShortcut(string shortcutName) + { + if (Registry.ModdedShortcuts.TryGetValue(shortcutName, out var shortcut)) + { + bool keyTriggered = InputHelper.IsKeyDownThisFrame(shortcut.Key); + bool modifierConditionMet = shortcut.ModifierCondition?.Invoke() ?? true; + + return keyTriggered && modifierConditionMet; + } + + Debug.LogWarning($"Shortcut '{shortcutName}' is not registered."); + return false; + } } } \ No newline at end of file diff --git a/Assets/Scripts/Game/Main/Main.cs b/Assets/Scripts/Game/Main/Main.cs index 247a085f..8e480cf6 100644 --- a/Assets/Scripts/Game/Main/Main.cs +++ b/Assets/Scripts/Game/Main/Main.cs @@ -4,6 +4,7 @@ using System.Linq; using DLS.Description; using DLS.Graphics; +using DLS.Mods; using DLS.SaveSystem; using UnityEngine; @@ -24,6 +25,8 @@ public static class Main public static void Init(AudioState audioState) { SavePaths.EnsureDirectoryExists(SavePaths.ProjectsPath); + SavePaths.EnsureDirectoryExists(SavePaths.ModsPath); + ModLoader.InitializeMods(SavePaths.ModsPath); SaveAndApplyAppSettings(Loader.LoadAppSettings()); Main.audioState = audioState; } @@ -59,6 +62,9 @@ public static void SaveAndApplyAppSettings(AppSettings newSettings) public static void LoadMainMenu() { + // Stop port servers when returning to main menu + DLS.External.PortHttpServer.Stop(); + DLS.External.PortSocketServer.Stop(); UIDrawer.SetActiveMenu(UIDrawer.MenuType.MainMenu); } @@ -68,8 +74,12 @@ public static void CreateOrLoadProject(string projectName, string startupChipNam else ActiveProject = CreateProject(projectName); ActiveProject.LoadDevChipOrCreateNewIfDoesntExist(startupChipName); + ActiveProject.StartSimulation(); ActiveProject.audioState = audioState; + // Start port servers when project is loaded + DLS.External.PortHttpServer.StartBoth(); + DLS.External.PortSocketServer.StartBoth(); UIDrawer.SetActiveMenu(UIDrawer.MenuType.None); } diff --git a/Assets/Scripts/Game/Main/UnityMain.cs b/Assets/Scripts/Game/Main/UnityMain.cs index bca26bf9..7d0e9815 100644 --- a/Assets/Scripts/Game/Main/UnityMain.cs +++ b/Assets/Scripts/Game/Main/UnityMain.cs @@ -1,5 +1,6 @@ using DLS.Graphics; using DLS.Simulation; +using DLS.External; using Seb.Helpers; using Seb.Vis; using Seb.Vis.UI; @@ -62,6 +63,7 @@ public class UnityMain : MonoBehaviour void Awake() { + PortHttpServer.Start(); instance = this; audioUnity = FindFirstObjectByType(); ResetStatics(); @@ -154,6 +156,7 @@ void EditorDebugUpdate() void OnDestroy() { if (Project.ActiveProject != null) Project.ActiveProject.NotifyExit(); + PortHttpServer.Stop(); } void OnValidate() diff --git a/Assets/Scripts/Game/Project/BuiltinChipCreator.cs b/Assets/Scripts/Game/Project/BuiltinChipCreator.cs index c757f1e1..05751ba8 100644 --- a/Assets/Scripts/Game/Project/BuiltinChipCreator.cs +++ b/Assets/Scripts/Game/Project/BuiltinChipCreator.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using DLS.Description; using UnityEngine; using static DLS.Graphics.DrawSettings; @@ -29,20 +30,31 @@ public static ChipDescription[] CreateAllBuiltinChipDescriptions() CreatePulse(), // ---- Memory ---- dev_CreateRAM_8(), - CreateROM_8(), + CreateROM(ChipType.Rom_256x2x8), + CreateROM(ChipType.Rom_256x16), + CreateROM(ChipType.Rom_256x32), // ---- Merge / Split ---- CreateBitConversionChip(ChipType.Split_4To1Bit, PinBitCount.Bit4, PinBitCount.Bit1, 1, 4), CreateBitConversionChip(ChipType.Split_8To4Bit, PinBitCount.Bit8, PinBitCount.Bit4, 1, 2), CreateBitConversionChip(ChipType.Split_8To1Bit, PinBitCount.Bit8, PinBitCount.Bit1, 1, 8), + CreateBitConversionChip(ChipType.Split_16To1Bit, PinBitCount.Bit16, PinBitCount.Bit1, 1, 16), + CreateBitConversionChip(ChipType.Split_16To4Bit, PinBitCount.Bit16, PinBitCount.Bit4, 1, 4), + CreateBitConversionChip(ChipType.Split_16To8Bit, PinBitCount.Bit16, PinBitCount.Bit8, 1, 2), CreateBitConversionChip(ChipType.Merge_1To8Bit, PinBitCount.Bit1, PinBitCount.Bit8, 8, 1), CreateBitConversionChip(ChipType.Merge_1To4Bit, PinBitCount.Bit1, PinBitCount.Bit4, 4, 1), CreateBitConversionChip(ChipType.Merge_4To8Bit, PinBitCount.Bit4, PinBitCount.Bit8, 2, 1), + CreateBitConversionChip(ChipType.Merge_1To16Bit, PinBitCount.Bit1, PinBitCount.Bit16, 16, 1), + CreateBitConversionChip(ChipType.Merge_4To16Bit, PinBitCount.Bit4, PinBitCount.Bit16, 4, 1), + CreateBitConversionChip(ChipType.Merge_8To16Bit, PinBitCount.Bit8, PinBitCount.Bit16, 2, 1), + // ---- Displays ---- CreateDisplay7Seg(), CreateDisplayRGB(), CreateDisplayDot(), CreateDisplayLED(), + CreateDisplayRGBLED(), + CreateDisplayUTF16Bit(), // ---- Bus ---- CreateBus(PinBitCount.Bit1), CreateBusTerminus(PinBitCount.Bit1), @@ -51,10 +63,48 @@ public static ChipDescription[] CreateAllBuiltinChipDescriptions() CreateBus(PinBitCount.Bit8), CreateBusTerminus(PinBitCount.Bit8), // ---- Audio ---- - CreateBuzzer() + CreateBuzzer(), + CreatePortIn(PinBitCount.Bit1), + CreatePortIn(PinBitCount.Bit4), + CreatePortIn(PinBitCount.Bit8), + CreatePortIn(PinBitCount.Bit16), + CreatePortOut(PinBitCount.Bit1), + CreatePortOut(PinBitCount.Bit4), + CreatePortOut(PinBitCount.Bit8), + CreatePortOut(PinBitCount.Bit16), + CreateComplexChip(), }; } + static ChipDescription CreateComplexChip() + { + Color col = new(0.1f, 0.1f, 0.1f); + + PinDescription[] inputPins = + { + CreatePinDescription("Clock", 0), + CreatePinDescription("IP 1", 1, PinBitCount.Bit16), + CreatePinDescription("IP 2", 2, PinBitCount.Bit16), + CreatePinDescription("IP 3", 3, PinBitCount.Bit16), + CreatePinDescription("IP 4", 4, PinBitCount.Bit16), + CreatePinDescription("PORT", 5, PinBitCount.Bit16), + CreatePinDescription("DATA 1", 6, PinBitCount.Bit16), + CreatePinDescription("DATA 2", 7, PinBitCount.Bit16), + CreatePinDescription("SEND", 8) + }; + + PinDescription[] outputPins = { CreatePinDescription("DATA", 9, PinBitCount.Bit16), + CreatePinDescription("ISDATA?", 10, PinBitCount.Bit16) }; + + float height = SubChipInstance.MinChipHeightForPins(inputPins, null); + + Vector2 size = new(CalculateGridSnappedWidth(GridSize * 9), height); + + return CreateBuiltinChipDescription(ChipType.Complex_Internet_Interface, size, col, inputPins, outputPins, null, NameDisplayLocation.Hidden); + } + + + static ChipDescription CreateNand() { Color col = new(0.73f, 0.26f, 0.26f); @@ -100,22 +150,76 @@ static ChipDescription dev_CreateRAM_8() return CreateBuiltinChipDescription(ChipType.dev_Ram_8Bit, size, col, inputPins, outputPins); } - static ChipDescription CreateROM_8() + static ChipDescription CreateROM(ChipType type) { - PinDescription[] inputPins = - { - CreatePinDescription("ADDRESS", 0, PinBitCount.Bit8) - }; - PinDescription[] outputPins = - { - CreatePinDescription("OUT B", 1, PinBitCount.Bit8), - CreatePinDescription("OUT A", 2, PinBitCount.Bit8) - }; + switch(type){ + case ChipType.Rom_256x2x8: + { + PinDescription[] inputPins = + { + CreatePinDescription("ADDRESS", 0, PinBitCount.Bit8) + }; + PinDescription[] outputPins = + { + CreatePinDescription("OUT B", 1, PinBitCount.Bit8), + CreatePinDescription("OUT A", 2, PinBitCount.Bit8) + }; - Color col = new(0.25f, 0.35f, 0.5f); - Vector2 size = new(GridSize * 12, SubChipInstance.MinChipHeightForPins(inputPins, outputPins)); + Color col = new(0.25f, 0.35f, 0.5f); + Vector2 size = new(GridSize * 12, SubChipInstance.MinChipHeightForPins(inputPins, outputPins)); - return CreateBuiltinChipDescription(ChipType.Rom_256x16, size, col, inputPins, outputPins); + return CreateBuiltinChipDescription(ChipType.Rom_256x2x8, size, col, inputPins, outputPins); + } + case ChipType.Rom_256x16: + { + PinDescription[] inputPins = + { + CreatePinDescription("ADDRESS", 0, PinBitCount.Bit8) + }; + PinDescription[] outputPins = + { + CreatePinDescription("OUT A", 1, PinBitCount.Bit16) + }; + + Color col = new(0.25f, 0.35f, 0.5f); + Vector2 size = new(GridSize * 12, SubChipInstance.MinChipHeightForPins(inputPins, outputPins)); + + return CreateBuiltinChipDescription(ChipType.Rom_256x16, size, col, inputPins, outputPins); + } + case ChipType.Rom_256x32: + { + PinDescription[] inputPins = + { + CreatePinDescription("ADDRESS", 0, PinBitCount.Bit8) + }; + PinDescription[] outputPins = + { + CreatePinDescription("OUT B", 1, PinBitCount.Bit16), + CreatePinDescription("OUT A", 2, PinBitCount.Bit16) + }; + + Color col = new(0.25f, 0.35f, 0.5f); + Vector2 size = new(GridSize * 12, SubChipInstance.MinChipHeightForPins(inputPins, outputPins)); + + return CreateBuiltinChipDescription(ChipType.Rom_256x32, size, col, inputPins, outputPins); + } + default: + { + PinDescription[] inputPins = + { + CreatePinDescription("ADDRESS", 0, PinBitCount.Bit8) + }; + PinDescription[] outputPins = + { + CreatePinDescription("OUT A", 1, PinBitCount.Bit16) + }; + + Color col = new(0.25f, 0.35f, 0.5f); + Vector2 size = new(GridSize * 12, SubChipInstance.MinChipHeightForPins(inputPins, outputPins)); + + return CreateBuiltinChipDescription(ChipType.Rom_256x16, size, col, inputPins, outputPins); + } + } } static ChipDescription CreateInputKeyChip() @@ -222,30 +326,30 @@ static ChipDescription CreateDisplay7Seg() static ChipDescription CreateDisplayRGB() { - float height = GridSize * 21; - float width = height; - float displayWidth = height - GridSize * 2; + float displayWidth = GridSize * 19; Color col = new(0.1f, 0.1f, 0.1f); - Vector2 size = new(width, height); PinDescription[] inputPins = { CreatePinDescription("ADDRESS", 0, PinBitCount.Bit8), - CreatePinDescription("RED", 1, PinBitCount.Bit4), - CreatePinDescription("GREEN", 2, PinBitCount.Bit4), - CreatePinDescription("BLUE", 3, PinBitCount.Bit4), + CreatePinDescription("RED", 1, PinBitCount.Bit8), + CreatePinDescription("GREEN", 2, PinBitCount.Bit8), + CreatePinDescription("BLUE", 3, PinBitCount.Bit8), CreatePinDescription("RESET", 4), CreatePinDescription("WRITE", 5), CreatePinDescription("REFRESH", 6), CreatePinDescription("CLOCK", 7) }; + float height = SubChipInstance.MinChipHeightForPins(inputPins, null); + float width = height; + Vector2 size = new(width, height); PinDescription[] outputPins = { - CreatePinDescription("R OUT", 8, PinBitCount.Bit4), - CreatePinDescription("G OUT", 9, PinBitCount.Bit4), - CreatePinDescription("B OUT", 10, PinBitCount.Bit4) + CreatePinDescription("R OUT", 8, PinBitCount.Bit8), + CreatePinDescription("G OUT", 9, PinBitCount.Bit8), + CreatePinDescription("B OUT", 10, PinBitCount.Bit8) }; DisplayDescription[] displays = @@ -342,7 +446,66 @@ static ChipDescription CreateBus(PinBitCount bitCount) return CreateBuiltinChipDescription(type, BusChipSize(bitCount), col, inputs, outputs, null, NameDisplayLocation.Hidden); } + static ChipDescription CreateDisplayRGBLED() + { + PinDescription[] inputPins = + { + CreatePinDescription("IN", 0), + CreatePinDescription("RED", 1, PinBitCount.Bit8), + CreatePinDescription("GREEN", 2, PinBitCount.Bit8), + CreatePinDescription("BLUE", 3, PinBitCount.Bit8), + }; + float height = SubChipInstance.MinChipHeightForPins(inputPins, null); + float width = height; + float displayWidth = height - GridSize * 0.5f; + + Color col = new(0.1f, 0.1f, 0.1f); + Vector2 size = new(width, height); + + + DisplayDescription[] displays = + { + new() + { + Position = Vector2.zero, + Scale = displayWidth, + SubChipID = -1 + } + }; + + return CreateBuiltinChipDescription(ChipType.DisplayRGBLED, size, col, inputPins, null, displays, NameDisplayLocation.Hidden); + } + + static ChipDescription CreateDisplayUTF16Bit() + { + PinDescription[] inputPins = + { + CreatePinDescription("ON", 0), + CreatePinDescription("Address", 1, PinBitCount.Bit4), + CreatePinDescription("Letter", 2, PinBitCount.Bit16) + }; + float height = SubChipInstance.MinChipHeightForPins(inputPins, null); + float width = height * 2.5f; + float displayWidth = width - GridSize * 0.5f; + + Color col = new(0f, 0f, 0f); + Vector2 size = new(width, height); + + + DisplayDescription[] displays = + { + new() + { + Position = Vector2.zero, + Scale = displayWidth, + SubChipID = -1 + } + }; + + return CreateBuiltinChipDescription(ChipType.DisplayUTF, size, col, inputPins, null, displays, NameDisplayLocation.Hidden); + } + static ChipDescription CreateDisplayLED() { PinDescription[] inputPins = @@ -389,7 +552,7 @@ static ChipDescription CreateBusTerminus(PinBitCount bitCount) } - static ChipDescription CreateBuiltinChipDescription(ChipType type, Vector2 size, Color col, PinDescription[] inputs, PinDescription[] outputs, DisplayDescription[] displays = null, NameDisplayLocation nameLoc = NameDisplayLocation.Centre) + public static ChipDescription CreateBuiltinChipDescription(ChipType type, Vector2 size, Color col, PinDescription[] inputs, PinDescription[] outputs, DisplayDescription[] displays = null, NameDisplayLocation nameLoc = NameDisplayLocation.Centre) { string name = ChipTypeHelper.GetName(type); ValidatePinIDs(inputs, outputs, name); @@ -409,7 +572,7 @@ static ChipDescription CreateBuiltinChipDescription(ChipType type, Vector2 size, }; } - static PinDescription CreatePinDescription(string name, int id, PinBitCount bitCount = PinBitCount.Bit1) => + public static PinDescription CreatePinDescription(string name, int id, PinBitCount bitCount = PinBitCount.Bit1) => new( name, id, @@ -443,5 +606,45 @@ void AddPins(PinDescription[] pins) } } } + + static ChipDescription CreatePortIn(PinBitCount bitCount) + { + ChipType type = bitCount switch + { + PinBitCount.Bit1 => ChipType.PortIn_1Bit, + PinBitCount.Bit4 => ChipType.PortIn_4Bit, + PinBitCount.Bit8 => ChipType.PortIn_8Bit, + PinBitCount.Bit16 => ChipType.PortIn_16Bit, + _ => throw new Exception("Port In bit count not implemented") + }; + string name = $"PORT-IN-{(int)bitCount}"; + PinDescription[] outputPins = { CreatePinDescription("OUT", 0, bitCount) }; + + Color col = new(0f, 1f, 0f); + Vector2 size = new(2.1f, 0.7f); + + return CreateBuiltinChipDescription(type, size, col, null, outputPins, null); + } + + static ChipDescription CreatePortOut(PinBitCount bitCount) + { + ChipType type = bitCount switch + { + PinBitCount.Bit1 => ChipType.PortOut_1Bit, + PinBitCount.Bit4 => ChipType.PortOut_4Bit, + PinBitCount.Bit8 => ChipType.PortOut_8Bit, + PinBitCount.Bit16 => ChipType.PortOut_16Bit, + _ => throw new Exception("Port Out bit count not implemented") + }; + string name = $"PORT-OUT-{(int)bitCount}"; + PinDescription[] inputPins = { CreatePinDescription("IN", 0, bitCount) }; + float height = SubChipInstance.MinChipHeightForPins(inputPins, null); + float width = height; + + Color col = new(0f, 1f, 0f); + Vector2 size = new(2.1f, 0.7f); + + return CreateBuiltinChipDescription(type, size, col, inputPins, null, null); + } } } \ No newline at end of file diff --git a/Assets/Scripts/Game/Project/BuiltinCollectionCreator.cs b/Assets/Scripts/Game/Project/BuiltinCollectionCreator.cs index f7e6508a..aa9885a1 100644 --- a/Assets/Scripts/Game/Project/BuiltinCollectionCreator.cs +++ b/Assets/Scripts/Game/Project/BuiltinCollectionCreator.cs @@ -37,9 +37,15 @@ public static ChipCollection[] CreateDefaultChipCollections() ChipType.Merge_1To4Bit, ChipType.Merge_1To8Bit, ChipType.Merge_4To8Bit, + ChipType.Merge_1To16Bit, + ChipType.Merge_4To16Bit, + ChipType.Merge_8To16Bit, ChipType.Split_4To1Bit, ChipType.Split_8To4Bit, - ChipType.Split_8To1Bit + ChipType.Split_8To1Bit, + ChipType.Split_16To1Bit, + ChipType.Split_16To4Bit, + ChipType.Split_16To8Bit ), CreateChipCollection("BUS", ChipType.Bus_1Bit, @@ -50,11 +56,26 @@ public static ChipCollection[] CreateDefaultChipCollections() ChipType.SevenSegmentDisplay, ChipType.DisplayDot, ChipType.DisplayRGB, - ChipType.DisplayLED + ChipType.DisplayLED, + ChipType.DisplayRGBLED, + ChipType.DisplayUTF ), CreateChipCollection("MEMORY", - ChipType.Rom_256x16 - ) + ChipType.Rom_256x2x8, + ChipType.Rom_256x16, + ChipType.Rom_256x32 + ), + CreateChipCollection("PORTS", + ChipType.PortIn_1Bit, + ChipType.PortIn_4Bit, + ChipType.PortIn_8Bit, + ChipType.PortIn_16Bit, + ChipType.PortOut_1Bit, + ChipType.PortOut_4Bit, + ChipType.PortOut_8Bit, + ChipType.PortOut_16Bit, + ChipType.Complex_Internet_Interface + ), }; } diff --git a/Assets/Scripts/Game/Project/ChipLibrary.cs b/Assets/Scripts/Game/Project/ChipLibrary.cs index 602a6427..ce509701 100644 --- a/Assets/Scripts/Game/Project/ChipLibrary.cs +++ b/Assets/Scripts/Game/Project/ChipLibrary.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Linq; using DLS.Description; +using DLS.Mods; +using UnityEngine; namespace DLS.Game { @@ -9,11 +11,12 @@ public class ChipLibrary public readonly List allChips = new(); readonly HashSet builtinChipNames = new(ChipDescription.NameComparer); + readonly HashSet moddedChipNames = new(ChipDescription.NameComparer); readonly Dictionary descriptionFromNameLookup = new(ChipDescription.NameComparer); readonly List hiddenChips = new(); - public ChipLibrary(ChipDescription[] customChips, ChipDescription[] builtinChips) + public ChipLibrary(ChipDescription[] customChips, ChipDescription[] builtinChips, ChipDescription[] moddedChips) { // Add built-in chips to list of all chips foreach (ChipDescription chip in builtinChips) @@ -25,6 +28,13 @@ public ChipLibrary(ChipDescription[] customChips, ChipDescription[] builtinChips builtinChipNames.Add(chip.Name); } + // Add modded chips to list of all chips + foreach (ChipDescription chip in moddedChips) + { + AddChipToLibrary(chip); + moddedChipNames.Add(chip.Name); + } + // Add custom chips to list of all chips foreach (ChipDescription chip in customChips) { @@ -39,7 +49,10 @@ void RebuildChipDescriptionLookup() descriptionFromNameLookup.Clear(); foreach (ChipDescription desc in allChips) { - descriptionFromNameLookup.Add(desc.Name, desc); + if (!descriptionFromNameLookup.ContainsKey(desc.Name)) + { + descriptionFromNameLookup.Add(desc.Name, desc); + } } foreach (ChipDescription desc in hiddenChips) @@ -53,7 +66,16 @@ void RebuildChipDescriptionLookup() public bool HasChip(string name) => TryGetChipDescription(name, out _); - public ChipDescription GetChipDescription(string name) => descriptionFromNameLookup[name]; + public ChipDescription GetChipDescription(string name) + { + try { + return descriptionFromNameLookup[name]; + } + catch (KeyNotFoundException) + { + return null; + } + } public bool TryGetChipDescription(string name, out ChipDescription description) => descriptionFromNameLookup.TryGetValue(name, out description); @@ -105,7 +127,7 @@ public string[] GetAllCustomChipNames() foreach (ChipDescription chip in allChips) { - if (!IsBuiltinChip(chip.Name)) + if (!IsBuiltinChip(chip.Name) && !(chip.ChipType == ChipType.Modded)) { customChipNames.Add(chip.Name); } diff --git a/Assets/Scripts/Game/Project/ModdedChipCreator.cs b/Assets/Scripts/Game/Project/ModdedChipCreator.cs new file mode 100644 index 00000000..d389d4f7 --- /dev/null +++ b/Assets/Scripts/Game/Project/ModdedChipCreator.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using DLS.Description; +using DLS.ModdingAPI; +using UnityEngine; +using PinDescription = DLS.Description.PinDescription; + +namespace DLS.Game +{ + public static class ModdedChipCreator + { + static List unbuiltChips = new(); + public static List ModdedChips = new(); + private static readonly Dictionary> ModdedChipFunctions = new(); + + public static ChipDescription[] CreateAllModdedChipDescriptions() + { + unbuiltChips = Registry.moddedChips; + foreach (ChipBuilder chip in unbuiltChips) + { + RegisterChip(chip.modID, chip.name, chip.size, chip.color, ConvertToDescriptionPins(chip.inputs), ConvertToDescriptionPins(chip.outputs), chip.displays != null ? ModdedDisplayCreator.RegisterDisplays(chip.displays) : null, chip.hideName, chip.simulationFunction); + } + return ModdedChips.ToArray(); + } + + static void RegisterChip( + string modID, + string name, + Vector2 size, + Color col, + PinDescription[] inputs = null, + PinDescription[] outputs = null, + DisplayDescription[] displays = null, + bool hideName = false, + Action simulationFunction = null) + { + // Register the chip description + ChipDescription chipDescription = CreateModdedChipDescription(name, ChipType.Modded, size, col, inputs, outputs, displays, hideName); + chipDescription.DependsOnModIDs.Add(modID); + ModdedChips.Add(chipDescription); + + // Register the simulation function + if (simulationFunction != null) + { + ModdedChipFunctions[chipDescription] = simulationFunction; + } + } + + static ChipDescription CreateModdedChipDescription(string name, ChipType type, Vector2 size, Color col, PinDescription[] inputs = null, PinDescription[] outputs = null, DisplayDescription[] displays = null, bool hideName = false) + { + ValidatePinIDs(inputs, outputs, name); + + return new ChipDescription + { + Name = name, + NameLocation = hideName ? NameDisplayLocation.Hidden : NameDisplayLocation.Centre, + Colour = col, + Size = new Vector2(size.x, size.y), + InputPins = inputs ?? Array.Empty(), + OutputPins = outputs ?? Array.Empty(), + SubChips = Array.Empty(), + Wires = Array.Empty(), + Displays = displays, + ChipType = type + }; + } + + static PinDescription[] ConvertToDescriptionPins(ModdingAPI.PinDescription[] moddingPins) + { + if (moddingPins == null) return null; + + return moddingPins.Select(pin => new PinDescription( + pin.Name, + pin.ID, + pin.Position, + (Description.PinBitCount) pin.BitCount, + (Description.PinColour) pin.Colour, + (Description.PinValueDisplayMode) pin.ValueDisplayMode + )).ToArray(); + } + + public static bool TryGetSimulationFunction(ChipDescription chipDescription, out Action simulationFunction) + { + return ModdedChipFunctions.TryGetValue(chipDescription, out simulationFunction); + } + + static void ValidatePinIDs(PinDescription[] inputs, PinDescription[] outputs, string chipName) + { + HashSet pinIDs = new(); + + AddPins(inputs); + AddPins(outputs); + return; + + void AddPins(PinDescription[] pins) + { + if (pins == null) return; + foreach (PinDescription pin in pins) + { + if (!pinIDs.Add(pin.ID)) + { + throw new Exception($"Pin has duplicate ID ({pin.ID}) in modded chip: {chipName}"); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Game/Project/ModdedChipCreator.cs.meta b/Assets/Scripts/Game/Project/ModdedChipCreator.cs.meta new file mode 100644 index 00000000..0078f94e --- /dev/null +++ b/Assets/Scripts/Game/Project/ModdedChipCreator.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b63348c6a526e7846ab863f2d9d473fb \ No newline at end of file diff --git a/Assets/Scripts/Game/Project/ModdedCollectionCreator.cs b/Assets/Scripts/Game/Project/ModdedCollectionCreator.cs new file mode 100644 index 00000000..117bf468 --- /dev/null +++ b/Assets/Scripts/Game/Project/ModdedCollectionCreator.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using System.Linq; +using DLS.Description; +using DLS.ModdingAPI; + +namespace DLS.Game +{ + public static class ModdedCollectionCreator + { + static List unbuiltCollections = new(); + public static List ModdedCollections = new(); + + static ModdedCollectionCreator() + { + unbuiltCollections = Registry.moddedCollections; + foreach(CollectionBuilder collection in unbuiltCollections) + { + RegisterCollection(collection.name, collection.chips.Select(chip => chip.name).ToArray()); + } + } + public static void RegisterCollection(string name, string[] chipNames) + { + ModdedCollections.Add(new ChipCollection(name, chipNames)); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Game/Project/ModdedCollectionCreator.cs.meta b/Assets/Scripts/Game/Project/ModdedCollectionCreator.cs.meta new file mode 100644 index 00000000..d577f1e5 --- /dev/null +++ b/Assets/Scripts/Game/Project/ModdedCollectionCreator.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 893d399dbc5f0524fb19be71c34bb475 \ No newline at end of file diff --git a/Assets/Scripts/Game/Project/ModdedDisplayCreator.cs b/Assets/Scripts/Game/Project/ModdedDisplayCreator.cs new file mode 100644 index 00000000..87f5f56d --- /dev/null +++ b/Assets/Scripts/Game/Project/ModdedDisplayCreator.cs @@ -0,0 +1,37 @@ +using System.Collections.Generic; +using UnityEngine; +using DLS.Description; +using DLS.ModdingAPI; +using System; + +namespace DLS.Game +{ + public static class ModdedDisplayCreator + { + public static List ModdedDisplays = new(); + public static Dictionary> ModdedDrawFunctions = new(); + + public static DisplayDescription[] RegisterDisplays(DisplayBuilder[] displays) + { + List descriptions = new(); + foreach (DisplayBuilder display in displays) + { + descriptions.Add(RegisterDisplay(display.Position, display.Scale, display.DrawFunction)); + } + return descriptions.ToArray(); + } + + public static DisplayDescription RegisterDisplay(Vector2 position, float scale, Action drawFunction) + { + DisplayDescription displayDescription = new(-1, position, scale); + ModdedDisplays.Add(displayDescription); + ModdedDrawFunctions[displayDescription] = drawFunction; + return displayDescription; + } + + public static bool TryGetDrawFunction(DisplayDescription displayDescription, out Action drawFunction) + { + return ModdedDrawFunctions.TryGetValue(displayDescription, out drawFunction); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Game/Project/ModdedDisplayCreator.cs.meta b/Assets/Scripts/Game/Project/ModdedDisplayCreator.cs.meta new file mode 100644 index 00000000..def12e10 --- /dev/null +++ b/Assets/Scripts/Game/Project/ModdedDisplayCreator.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 44039eececa77894b831a4c537b7cf62 \ No newline at end of file diff --git a/Assets/Scripts/Game/Project/Project.cs b/Assets/Scripts/Game/Project/Project.cs index e2a5be6e..fb132e1f 100644 --- a/Assets/Scripts/Game/Project/Project.cs +++ b/Assets/Scripts/Game/Project/Project.cs @@ -5,11 +5,14 @@ using System.Threading; using DLS.Description; using DLS.Graphics; +using DLS.ModdingAPI; +using DLS.Mods; using DLS.SaveSystem; using DLS.Simulation; using Seb.Helpers; using UnityEngine; using Debug = UnityEngine.Debug; +using PinDescription = DLS.Description.PinDescription; namespace DLS.Game { @@ -258,6 +261,12 @@ public void LoadDevChipOrCreateNewIfDoesntExist(string chipName) { CreateBlankDevChip(); } + + ModLoader.NotifyMods((mod, args) => mod.OnProjectLoad(args), new IMod.ProjectEventArgs + { + ProjectName = this.description.ProjectName + }); + RegisterAllPortLabelsWithHttpServer(); } void SetNewActiveDevChip(DevChipInstance devChip) @@ -345,6 +354,32 @@ public void DeleteChip(string chipToDeleteName) } } + public void DeleteModdedChip(ChipDescription chipToDelete) + { + bool simReloadRequired = ChipContainsSubchipIndirectly(ViewedChip, chipToDelete.Name); + + if (ChipContainsSubChipDirectly(ViewedChip, chipToDelete.Name)) + { + ViewedChip.UndoController.Clear(); + } + + ModdedChipCreator.ModdedChips.RemoveAll(chip => ChipDescription.NameMatch(chip.Name, chipToDelete.Name)); + + // Delete chip save file, remove from library, and update project description + UpdateAndSaveAffectedChips(chipToDelete, null, true); + chipLibrary.RemoveChip(chipToDelete.Name); + EnsureChipRemovedFromCollections(chipToDelete.Name); + SetStarred(chipToDelete.Name, false, false, false); // ensure removed from starred list + UpdateAndSaveProjectDescription(); + + // Remove any instances of the deleted chip from the active chip + ViewedChip.DeleteSubchipsByName(chipToDelete.Name); + if (simReloadRequired) + { + ViewedChip.RebuildSimulation(); + } + } + // Test if chip's subchips (or any of their subchips, etc...) contain the target subchip bool ChipContainsSubchipIndirectly(DevChipInstance devChip, string targetSubchip) { @@ -483,7 +518,19 @@ public void ToggleGridDisplay() public void NotifyExit() { + ModLoader.NotifyMods((mod, args) => mod.OnProjectUnload(args), new IMod.ProjectEventArgs + { + ProjectName = description.ProjectName + }); + simThreadActive = false; + + // List moddedChipsCopy = new(ModdedChipCreator.ModdedChips); + // foreach (ChipDescription chip in moddedChipsCopy) + // { + + // DeleteModdedChip(chip); + // } } void SimThread() @@ -690,5 +737,19 @@ void EnsureChipRemovedFromCollections(string chipNameToRemove) } } } + + // Register all PortIn/PortOut subchip labels with the HTTP server for the current DevChipInstance + void RegisterAllPortLabelsWithHttpServer() + { + var devChip = editModeChip; + foreach (var subchip in devChip.GetSubchips()) + { + if (DLS.Description.ChipTypeHelper.IsPortChip(subchip.ChipType)) + { + string label = string.IsNullOrEmpty(subchip.Label) ? subchip.Description.Name : subchip.Label; + DLS.External.PortHttpServer.SetPortName((uint)subchip.ID, label); + } + } + } } } \ No newline at end of file diff --git a/Assets/Scripts/Graphics/DrawSettings.cs b/Assets/Scripts/Graphics/DrawSettings.cs index 3f3ff864..7c0f2ebc 100644 --- a/Assets/Scripts/Graphics/DrawSettings.cs +++ b/Assets/Scripts/Graphics/DrawSettings.cs @@ -13,11 +13,14 @@ public static class DrawSettings public const float PinHeight1Bit = 0.185f; public const float PinHeight4Bit = 0.3f; public const float PinHeight8Bit = 0.43f; + public const float PinHeight16Bit = 0.6f; // 16 Bit pins are twice as high as 8 Bit pins public const float PinRadius = PinHeight1Bit / 2; public const FontType FontBold = FontType.JetbrainsMonoBold; public const FontType FontRegular = FontType.JetbrainsMonoRegular; + public const FontType FontAscii = FontType.Noto; + public const float FontSizeChipName = 0.25f; public const float FontSizePinLabel = 0.2f; diff --git a/Assets/Scripts/Graphics/UI/Menus/BottomBarUI.cs b/Assets/Scripts/Graphics/UI/Menus/BottomBarUI.cs index 932230d8..ceec4ddd 100644 --- a/Assets/Scripts/Graphics/UI/Menus/BottomBarUI.cs +++ b/Assets/Scripts/Graphics/UI/Menus/BottomBarUI.cs @@ -1,6 +1,9 @@ using System; +using System.Collections.Generic; +using System.Linq; using DLS.Description; using DLS.Game; +using DLS.Mods; using Seb.Helpers; using Seb.Types; using Seb.Vis; @@ -188,6 +191,24 @@ static void DrawBottomBar(Project project) for (int i = 0; i < project.description.StarredList.Count; i++) { StarredItem starred = project.description.StarredList[i]; + object desc = starred.IsCollection + ? GetChipCollectionByName(starred.Name) + : project.chipLibrary.GetChipDescription(starred.Name); + + List dependsOnModIDs = starred.IsCollection + ? ((ChipCollection) desc)?.DependsOnModIDs + : ((ChipDescription) desc)?.DependsOnModIDs; + + if (desc == null) + { + continue; + } + + if (dependsOnModIDs != null && !dependsOnModIDs.All(ModLoader.IsModLoaded)) + { + continue; + } + bool isToggledOpenCollection = activeCollection != null && ChipDescription.NameMatch(starred.Name, activeCollection.Name); string buttonName = starred.GetDisplayStringForBottomBar(isToggledOpenCollection); @@ -365,6 +386,14 @@ static ChipCollection GetChipCollectionByName(string name) } } + foreach (ChipCollection c in ModdedCollectionCreator.ModdedCollections) + { + if (ChipDescription.NameMatch(c.Name, name)) + { + return c; + } + } + throw new Exception("Failed to find collection with name: " + name); } diff --git a/Assets/Scripts/Graphics/UI/Menus/ChipLabelMenu.cs b/Assets/Scripts/Graphics/UI/Menus/ChipLabelMenu.cs index 8f907e9c..745d8e8f 100644 --- a/Assets/Scripts/Graphics/UI/Menus/ChipLabelMenu.cs +++ b/Assets/Scripts/Graphics/UI/Menus/ChipLabelMenu.cs @@ -1,4 +1,6 @@ using DLS.Game; +using DLS.Description; +using DLS.External; using Seb.Types; using Seb.Vis; using Seb.Vis.UI; @@ -64,6 +66,10 @@ public static void DrawMenu() static void Confirm(string newName) { subChip.Label = newName; + if (ChipTypeHelper.IsPortChip(subChip.ChipType)) + { + PortHttpServer.SetPortName((uint)subChip.ID, newName); + } UIDrawer.SetActiveMenu(UIDrawer.MenuType.None); } diff --git a/Assets/Scripts/Graphics/UI/Menus/ChipLibraryMenu.cs b/Assets/Scripts/Graphics/UI/Menus/ChipLibraryMenu.cs index 4a333008..1441d78e 100644 --- a/Assets/Scripts/Graphics/UI/Menus/ChipLibraryMenu.cs +++ b/Assets/Scripts/Graphics/UI/Menus/ChipLibraryMenu.cs @@ -2,6 +2,7 @@ using System.Linq; using DLS.Description; using DLS.Game; +using DLS.Mods; using Seb.Helpers; using Seb.Types; using Seb.Vis; @@ -61,9 +62,15 @@ public static class ChipLibraryMenu static ChipCollection lastAutoOpenedCollection; static List collections => project.description.ChipCollections; + static List moddedCollections => ModdedCollectionCreator.ModdedCollections; static Project project => Project.ActiveProject; + static ChipCollection GetCollectionAtIndex(int index) + { + return index < collections.Count ? collections[index] : moddedCollections[index - collections.Count]; + } + public static void DrawMenu() { MenuHelper.DrawBackgroundOverlay(); @@ -138,6 +145,23 @@ static void DrawStarredPanel(Vector2 topLeft, Vector2 size) static void DrawStarredEntry(Vector2 topLeft, float width, int index, bool isLayoutPass) { StarredItem starredItem = project.description.StarredList[index]; + object desc = starredItem.IsCollection + ? GetCollectionAtIndex(index) + : project.chipLibrary.GetChipDescription(starredItem.Name); + + List dependsOnModIDs = starredItem.IsCollection + ? ((ChipCollection) desc)?.DependsOnModIDs + : ((ChipDescription) desc)?.DependsOnModIDs; + + if (desc == null) + { + return; + } + + if (dependsOnModIDs != null && !dependsOnModIDs.All(ModLoader.IsModLoaded)) + { + return; + } ButtonTheme theme = GetButtonTheme(starredItem.IsCollection, index == selectedStarredItemIndex); interactableStates_starredList[0] = index < project.description.StarredList.Count - 1; // can move down @@ -160,13 +184,13 @@ static void DrawCollectionsPanel(Vector2 topLeft, Vector2 size) Bounds2D panelBoundsMinusHeader = Bounds2D.CreateFromTopLeftAndSize(UI.PrevBounds.BottomLeft, new Vector2(size.x, size.y - UI.PrevBounds.Height)); Bounds2D panelContentBounds = Bounds2D.Shrink(panelBoundsMinusHeader, PanelUIPadding); - UI.DrawScrollView(ID_CollectionsScrollbar, panelContentBounds.TopLeft, panelContentBounds.Size, UILayoutHelper.DefaultSpacing, Anchor.TopLeft, ActiveUITheme.ScrollTheme, drawCollectionEntry, collections.Count); + UI.DrawScrollView(ID_CollectionsScrollbar, panelContentBounds.TopLeft, panelContentBounds.Size, UILayoutHelper.DefaultSpacing, Anchor.TopLeft, ActiveUITheme.ScrollTheme, drawCollectionEntry, collections.Count + moddedCollections.Count); MenuHelper.DrawReservedMenuPanel(panelID, panelBounds, false); } static void DrawCollectionEntry(Vector2 topLeft, float width, int collectionIndex, bool isLayoutPass) { - ChipCollection collection = collections[collectionIndex]; + ChipCollection collection = GetCollectionAtIndex(collectionIndex); string label = collection.GetDisplayString(); bool collectionHighlighted = collectionIndex == selectedCollectionIndex; @@ -189,7 +213,12 @@ static void DrawCollectionEntry(Vector2 topLeft, float width, int collectionInde { for (int chipIndex = 0; chipIndex < collection.Chips.Count; chipIndex++) { - string chipName = collection.Chips[chipIndex]; + ChipDescription chip = project.chipLibrary.GetChipDescription(collection.Chips[chipIndex]); + if (chip == null || !chip.DependsOnModIDs.All(ModLoader.IsModLoaded)) + { + continue; + } + string chipName = chip.Name; ButtonTheme activeChipTheme = collectionIndex == selectedCollectionIndex && chipIndex == selectedChipInCollectionIndex ? ActiveUITheme.ChipLibraryChipToggleOn : ActiveUITheme.ChipLibraryChipToggleOff; Vector2 chipLabelPos = new(topLeft.x + nestedInset, UI.PrevBounds.Bottom - UILayoutHelper.DefaultSpacing); bool chipPressed = UI.Button(chipName, activeChipTheme, chipLabelPos, new Vector2(width - nestedInset, 2), true, false, false, Anchor.TopLeft, true, 1, isScrolling); @@ -230,7 +259,7 @@ static void DrawSelectedItemPanel(Vector2 topLeft, Vector2 size) if (hasChipSelected) { // ---- Draw ---- - ChipCollection collection = collections[selectedCollectionIndex]; + ChipCollection collection = GetCollectionAtIndex(selectedCollectionIndex); string selectedChipName = collection.Chips[selectedChipInCollectionIndex]; bool canStepUpInCollection = selectedChipInCollectionIndex > 0; bool canStepDownInCollection = selectedChipInCollectionIndex < collection.Chips.Count - 1; @@ -297,18 +326,19 @@ static void DrawSelectedItemPanel(Vector2 topLeft, Vector2 size) else if (hasCollectionSelected) { // ---- Draw ---- - ChipCollection collection = collections[selectedCollectionIndex]; + ChipCollection collection = GetCollectionAtIndex(selectedCollectionIndex); ButtonTheme colSource = GetButtonTheme(true, true); DrawHeader(collection.Name, colSource.buttonCols.normal, colSource.textCols.normal, ref topLeft, panelContentBounds.Width); bool isStarred = project.description.IsStarred(collection.Name, true); - bool toggleStarred = DrawHorizontalButtonGroup(buttonName_starUnstar[isStarred ? 1 : 0], null, ref topLeft, panelContentBounds.Width) == 0; + bool[] canStar = new[] {!moddedCollections.Contains(collection)}; + bool toggleStarred = DrawHorizontalButtonGroup(buttonName_starUnstar[isStarred ? 1 : 0], canStar, ref topLeft, panelContentBounds.Width) == 0; - interactableStates_move[0] = selectedCollectionIndex > 0; - interactableStates_move[1] = selectedCollectionIndex < collections.Count - 1; + interactableStates_move[0] = selectedCollectionIndex > 0 && !moddedCollections.Contains(collection); + interactableStates_move[1] = selectedCollectionIndex < collections.Count - 1 && !moddedCollections.Contains(collection); int buttonIndexOrganize = DrawHorizontalButtonGroup(buttonNames_moveSingleStep, interactableStates_move, ref topLeft, panelContentBounds.Width); - bool canRenameOrDelete = !ChipDescription.NameMatch(collection.Name, defaultOtherChipsCollectionName); + bool canRenameOrDelete = !ChipDescription.NameMatch(collection.Name, defaultOtherChipsCollectionName) && !moddedCollections.Contains(collection); interactableStates_renameDelete[0] = canRenameOrDelete; interactableStates_renameDelete[1] = canRenameOrDelete; int buttonIndexEditCollection = DrawHorizontalButtonGroup(buttonNames_collectionRenameOrDelete, interactableStates_renameDelete, ref topLeft, panelContentBounds.Width); @@ -342,7 +372,7 @@ static void DrawSelectedItemPanel(Vector2 topLeft, Vector2 size) int indexEnd = selectedCollectionIndex - 1; (collections[indexStart], collections[indexEnd]) = (collections[indexEnd], collections[indexStart]); selectedCollectionIndex = indexEnd; - collection = collections[selectedCollectionIndex]; + collection = GetCollectionAtIndex(selectedCollectionIndex); } else if (buttonIndexOrganize == 1) // Move collection down { @@ -350,7 +380,7 @@ static void DrawSelectedItemPanel(Vector2 topLeft, Vector2 size) int indexEnd = selectedCollectionIndex + 1; (collections[indexStart], collections[indexEnd]) = (collections[indexEnd], collections[indexStart]); selectedCollectionIndex = indexEnd; - collection = collections[selectedCollectionIndex]; + collection = GetCollectionAtIndex(selectedCollectionIndex); } } else if (hasStarredItemSelected) diff --git a/Assets/Scripts/Graphics/UI/Menus/MainMenu.cs b/Assets/Scripts/Graphics/UI/Menus/MainMenu.cs index 97f8205d..7a974f41 100644 --- a/Assets/Scripts/Graphics/UI/Menus/MainMenu.cs +++ b/Assets/Scripts/Graphics/UI/Menus/MainMenu.cs @@ -136,6 +136,7 @@ public static void OnMenuOpened() activeMenuScreen = MenuScreen.Main; activePopup = PopupKind.None; selectedProjectIndex = -1; + ModWarningPopup.MenuShown = false; } static void DrawMainScreen() diff --git a/Assets/Scripts/Graphics/UI/Menus/ModWarningPopup.cs b/Assets/Scripts/Graphics/UI/Menus/ModWarningPopup.cs new file mode 100644 index 00000000..d073fffb --- /dev/null +++ b/Assets/Scripts/Graphics/UI/Menus/ModWarningPopup.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using DLS.Game; +using DLS.Mods; +using Seb.Vis; +using Seb.Vis.UI; +using UnityEngine; +using UnityEngine.TextCore.Text; + +namespace DLS.Graphics +{ + public static class ModWarningPopup + { + public static bool MenuShown = false; + public static void DrawMenu() + { + MenuHelper.DrawBackgroundOverlay(); + Draw.ID panelID = UI.ReservePanel(); + DrawSettings.UIThemeDLS theme = DrawSettings.ActiveUITheme; + + Vector2 pos = UI.Centre + Vector2.up * (UI.HalfHeight * 0.25f); + + // Collect chip names hidden due to missing mods + string hiddenChipNames = string.Join("\n", Project.ActiveProject.chipLibrary.allChips + .Where(chip => chip.DependsOnModIDs != null && !chip.DependsOnModIDs.All(ModLoader.IsModLoaded)) + .Select(chip => chip.Name)); + + // Format chip names and their dependencies + string hiddenChipsDependencies = string.Join("\n", Project.ActiveProject.chipLibrary.allChips + .Where(chip => chip.DependsOnModIDs != null && !chip.DependsOnModIDs.All(ModLoader.IsModLoaded)) + .Select(chip => $"{chip.Name,-30}{string.Join(", ", chip.DependsOnModIDs.Where(id => !ModLoader.IsModLoaded(id))),30}")); + + using (UI.BeginBoundsScope(true)) + { + // Draw warning text + UI.DrawText( + "Some chips contain subchips from mods that are not loaded.\nThe following chips have been disabled until their\nassociated mods have been loaded:", + theme.FontBold, + theme.FontSizeRegular, + pos, + Anchor.TextCentre, + Color.white + ); + + UI.DrawText( + $"{"Chip Name", -30}{"Mod ID", 30}", + theme.FontBold, + theme.FontSizeRegular, + UI.GetCurrentBoundsScope().BottomLeft + Vector2.down * 3f, + Anchor.TextCentreLeft, + Color.white + ); + + // Draw list of missing mod IDs + UI.DrawText( + hiddenChipsDependencies, + theme.FontRegular, + theme.FontSizeRegular, + UI.GetCurrentBoundsScope().BottomLeft + Vector2.down * 1.5f, + Anchor.TextCentreLeft, + Color.white + ); + + bool result = UI.Button( + "OK", + theme.ButtonTheme, + UI.GetCurrentBoundsScope().CentreBottom + Vector2.down * 3f, + size: (UI.GetCurrentBoundsScope().Width - DrawSettings.DefaultButtonSpacing * 6) * Vector2.right + ); + + MenuHelper.DrawReservedMenuPanel(panelID, UI.GetCurrentBoundsScope()); + + if (result || KeyboardShortcuts.CancelShortcutTriggered) + { + UIDrawer.SetActiveMenu(UIDrawer.MenuType.None); + } + } + } + + public static void OnMenuOpened() + { + MenuShown = true; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Graphics/UI/Menus/ModWarningPopup.cs.meta b/Assets/Scripts/Graphics/UI/Menus/ModWarningPopup.cs.meta new file mode 100644 index 00000000..77e389f3 --- /dev/null +++ b/Assets/Scripts/Graphics/UI/Menus/ModWarningPopup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d51e67903e3b19c49b7ed29f39cafe25 \ No newline at end of file diff --git a/Assets/Scripts/Graphics/UI/Menus/RebindKeyChipMenu.cs b/Assets/Scripts/Graphics/UI/Menus/RebindKeyChipMenu.cs index 3e0b4880..4db27113 100644 --- a/Assets/Scripts/Graphics/UI/Menus/RebindKeyChipMenu.cs +++ b/Assets/Scripts/Graphics/UI/Menus/RebindKeyChipMenu.cs @@ -1,4 +1,5 @@ using DLS.Game; +using DLS.Simulation; using Seb.Helpers; using Seb.Vis; using Seb.Vis.UI; @@ -8,7 +9,6 @@ namespace DLS.Graphics { public static class RebindKeyChipMenu { - public const string allowedChars = "1234567890QWERTYUIOPASDFGHJKLZXCVBNM"; static SubChipInstance keyChip; static string chosenKey; @@ -25,13 +25,10 @@ public static void DrawMenu() if (InputHelper.AnyKeyOrMouseDownThisFrame && !string.IsNullOrEmpty(InputHelper.InputStringThisFrame)) { char activeChar = char.ToUpper(InputHelper.InputStringThisFrame[0]); - if (allowedChars.Contains(activeChar)) - { - chosenKey = activeChar.ToString(); - } + chosenKey = activeChar.ToString(); } - UI.DrawText("Press a key to rebind\n (alphanumeric only)", theme.FontBold, theme.FontSizeRegular, pos, Anchor.TextCentre, Color.white * 0.8f); + UI.DrawText("Press a key to rebind", theme.FontBold, theme.FontSizeRegular, pos, Anchor.TextCentre, Color.white * 0.8f); UI.DrawPanel(UI.PrevBounds.CentreBottom + Vector2.down, Vector2.one * 3.5f, new Color(0.1f, 0.1f, 0.1f), Anchor.CentreTop); UI.DrawText(chosenKey, theme.FontBold, theme.FontSizeRegular * 1.5f, UI.PrevBounds.Centre, Anchor.TextCentre, Color.white); diff --git a/Assets/Scripts/Graphics/UI/Menus/RomEditMenu.cs b/Assets/Scripts/Graphics/UI/Menus/RomEditMenu.cs index 7cb9c60b..2c369f76 100644 --- a/Assets/Scripts/Graphics/UI/Menus/RomEditMenu.cs +++ b/Assets/Scripts/Graphics/UI/Menus/RomEditMenu.cs @@ -1,6 +1,7 @@ using System; using System.Text; using DLS.Game; +using DLS.Description; using Seb.Helpers; using Seb.Types; using Seb.Vis; @@ -206,6 +207,27 @@ static bool ValidateInputString(string text) return true; } + + static long TwosComplement(ulong value, int bitWidth) + { + if (bitWidth <= 0 || bitWidth > 64) + throw new ArgumentOutOfRangeException(nameof(bitWidth), "bitWidth must be between 1 and 64."); + + // Create a mask for the specified bit width + ulong mask = (1UL << bitWidth) - 1; + value = value & mask; // Ensure value fits within bitWidth + + // Check if the sign bit is set + ulong signBit = 1UL << (bitWidth - 1); + if ((value & signBit) != 0) + { + // If sign bit is set, convert to negative value + // Subtract 2^bitWidth to get the negative representation + return (long)value - (long)(1UL << bitWidth); + } + + return (long)value; + } // Convert from uint to display string with given display mode static string UIntToDisplayString(uint raw, DataDisplayMode displayFormat, int bitCount) @@ -213,9 +235,9 @@ static string UIntToDisplayString(uint raw, DataDisplayMode displayFormat, int b return displayFormat switch { DataDisplayMode.Binary => Convert.ToString(raw, 2).PadLeft(bitCount, '0'), - DataDisplayMode.DecimalSigned => Maths.TwosComplement(raw, bitCount) + "", - DataDisplayMode.DecimalUnsigned => raw + "", - DataDisplayMode.HEX => raw.ToString("X").PadLeft(bitCount / 4, '0'), + DataDisplayMode.DecimalSigned => TwosComplement(raw, bitCount).ToString(), + DataDisplayMode.DecimalUnsigned => raw.ToString(), + DataDisplayMode.HEX => raw.ToString("X").PadLeft((bitCount + 3) / 4, '0'), // Proper hex padding _ => throw new NotImplementedException("Unsupported display format: " + displayFormat) }; } @@ -224,64 +246,110 @@ static string UIntToDisplayString(uint raw, DataDisplayMode displayFormat, int b static uint DisplayStringToUInt(string displayString, DataDisplayMode stringFormat, int bitCount) { displayString = displayString.Replace(" ", string.Empty); + if (displayString == string.Empty) + { + return 0; + } + if (displayString.Length > bitCount) + { + displayString = displayString.Substring(0,bitCount-1); + } + + Debug.Log("Display " + displayString); uint uintVal; - + switch (stringFormat) { case DataDisplayMode.Binary: - uintVal = Convert.ToUInt32(displayString, 2); + if (bitCount <= 32) + { + uintVal = Convert.ToUInt32(displayString, 2); + } + else + { + // For >32 bits, truncate to 32 bits + ulong value = Convert.ToUInt64(displayString, 2); + uintVal = (uint)(value & 0xFFFFFFFF); + } break; + case DataDisplayMode.DecimalSigned: - { - int signedValue = int.Parse(displayString); - uint unsignedRange = 1u << bitCount; - if (signedValue < 0) + if (bitCount <= 32) { - uintVal = (uint)(signedValue + unsignedRange); + int signedValue = int.Parse(displayString); + if (signedValue < 0) + { + // Convert negative signed value to unsigned representation + uintVal = (uint)(signedValue + (1L << bitCount)); + } + else + { + uintVal = (uint)signedValue; + } } else { - uintVal = (uint)signedValue; + // For >32 bits, still return uint (truncated) + long signedValue = long.Parse(displayString); + if (signedValue < 0) + { + uintVal = (uint)(signedValue + (1L << Math.Min(bitCount, 32))); + } + else + { + uintVal = (uint)signedValue; + } } - break; - } + case DataDisplayMode.DecimalUnsigned: - uintVal = uint.Parse(displayString); + if (bitCount <= 32) + { + uintVal = uint.Parse(displayString); + } + else + { + // Parse as ulong but truncate to uint + ulong value = ulong.Parse(displayString); + uintVal = (uint)(value & 0xFFFFFFFF); + } break; + case DataDisplayMode.HEX: - int value = Convert.ToInt32(displayString, 16); - uintVal = (uint)value; + if (bitCount <= 32) + { + uintVal = Convert.ToUInt32(displayString, 16); + } + else + { + ulong value = Convert.ToUInt64(displayString, 16); + uintVal = (uint)(value & 0xFFFFFFFF); + } break; + default: throw new NotImplementedException("Unsupported display format: " + stringFormat); } + Debug.Log(uintVal); return uintVal; } static bool TryParseDisplayStringToUInt(string displayString, DataDisplayMode stringFormat, int bitCount, out uint raw) { - try - { - raw = DisplayStringToUInt(displayString, stringFormat, bitCount); - uint maxVal = (1u << bitCount) - 1; + raw = DisplayStringToUInt(displayString, stringFormat, bitCount); + long maxVal = (long) Math.Pow(2,bitCount) - 1; + uint max = (uint) maxVal; - // If value is too large to fit in given bit-count, clamp the result and return failure - // (note: maybe makes more sense to wrap the result, but I think it's more obvious to player what happened if it just clamps) - if (raw > maxVal) - { - raw = maxVal; - return false; - } - - return true; - } - catch (Exception) + // If value is too large to fit in given bit-count, clamp the result and return failure + // (note: maybe makes more sense to wrap the result, but I think it's more obvious to player what happened if it just clamps) + if (raw > max) { - raw = 0; + raw = max; return false; } + + return true; } static void SaveChangesToROM() @@ -341,7 +409,14 @@ public static void OnMenuOpened() { romChip = (SubChipInstance)ContextMenu.interactionContext; RowCount = romChip.InternalData.Length; - ActiveRomDataBitCount = 16; // + ActiveRomDataBitCount = romChip.ChipType switch + { + ChipType.Rom_256x2x8 => 16, + ChipType.Rom_256x16 => 16, + ChipType.Rom_256x32 => 32, + _ => 16 + }; + ID_DataDisplayMode = new UIHandle("ROM_DataDisplayMode", romChip.ID); ID_scrollbar = new UIHandle("ROM_EditScrollbar", romChip.ID); diff --git a/Assets/Scripts/Graphics/UI/Menus/SearchPopup.cs b/Assets/Scripts/Graphics/UI/Menus/SearchPopup.cs index 203fdf1f..b6cc7a1f 100644 --- a/Assets/Scripts/Graphics/UI/Menus/SearchPopup.cs +++ b/Assets/Scripts/Graphics/UI/Menus/SearchPopup.cs @@ -3,6 +3,7 @@ using System.Linq; using DLS.Description; using DLS.Game; +using DLS.Mods; using Seb.Helpers; using Seb.Types; using Seb.Vis; @@ -131,6 +132,13 @@ static void CreateFilteredChipsList(string searchString) HashSet remainingChipNames = new(allChipNames); remainingChipNames.ExceptWith(recentChipNames); + // Filter out chips with null descriptions or unloaded mod dependencies + remainingChipNames.RemoveWhere(chipName => + { + ChipDescription desc = Project.ActiveProject.chipLibrary.GetChipDescription(chipName); + return desc == null || (desc.DependsOnModIDs != null && !desc.DependsOnModIDs.All(ModLoader.IsModLoaded)); + }); + List sortedList = remainingChipNames.ToList(); sortedList.Sort(); sortedList.Reverse(); @@ -154,9 +162,15 @@ static void CreateFilteredChipsList(string searchString) contains.ExceptWith(startsWith); contains.ExceptWith(startsWith_Lenient); - List all = ToSortedList(startsWith); - all.AddRange(ToSortedList(startsWith_Lenient)); - all.AddRange(ToSortedList(contains)); + // Filter out chips with null descriptions or unloaded mod dependencies + HashSet allFiltered = new(startsWith.Concat(startsWith_Lenient).Concat(contains)); + allFiltered.RemoveWhere(chipName => + { + ChipDescription desc = Project.ActiveProject.chipLibrary.GetChipDescription(chipName); + return desc == null || (desc.DependsOnModIDs != null && !desc.DependsOnModIDs.All(ModLoader.IsModLoaded)); + }); + + List all = ToSortedList(allFiltered); filteredChipNames = all.ToArray(); static string LenientString(string s) diff --git a/Assets/Scripts/Graphics/UI/UIDrawer.cs b/Assets/Scripts/Graphics/UI/UIDrawer.cs index 091248e4..b8c20c88 100644 --- a/Assets/Scripts/Graphics/UI/UIDrawer.cs +++ b/Assets/Scripts/Graphics/UI/UIDrawer.cs @@ -1,5 +1,8 @@ +using System.Linq; using DLS.Game; +using DLS.Mods; using Seb.Vis.UI; +using UnityEngine; namespace DLS.Graphics { @@ -20,7 +23,8 @@ public enum MenuType PulseEdit, UnsavedChanges, Search, - ChipLabelPopup + ChipLabelPopup, + ModWarning } static MenuType activeMenuOld; @@ -68,6 +72,7 @@ static void DrawProjectMenus(Project project) else if (menuToDraw == MenuType.Search) SearchPopup.DrawMenu(); else if (menuToDraw == MenuType.ChipLabelPopup) ChipLabelMenu.DrawMenu(); else if (menuToDraw == MenuType.PulseEdit) PulseEditMenu.DrawMenu(); + else if (menuToDraw == MenuType.ModWarning) ModWarningPopup.DrawMenu(); else { bool showSimPausedBanner = project.simPaused; @@ -98,12 +103,20 @@ static void NotifyIfActiveMenuChanged() else if (ActiveMenu == MenuType.Search) SearchPopup.OnMenuOpened(); else if (ActiveMenu == MenuType.ChipLabelPopup) ChipLabelMenu.OnMenuOpened(); else if (ActiveMenu == MenuType.PulseEdit) PulseEditMenu.OnMenuOpened(); + else if (ActiveMenu == MenuType.ModWarning) ModWarningPopup.OnMenuOpened(); if (InInputBlockingMenu() && Project.ActiveProject != null && Project.ActiveProject.controller != null) { Project.ActiveProject.controller.CancelEverything(); } + // Trigger ModWarningPopup if there are chips dependent on unloaded mods + if (Project.ActiveProject != null && Project.ActiveProject.controller != null && Project.ActiveProject.chipLibrary.allChips.Any(chip => chip.DependsOnModIDs != null && !chip.DependsOnModIDs.All(ModLoader.IsModLoaded)) && ModWarningPopup.MenuShown == false) + { + SetActiveMenu(MenuType.ModWarning); + ModWarningPopup.OnMenuOpened(); + } + activeMenuOld = ActiveMenu; } } diff --git a/Assets/Scripts/Graphics/World/DevSceneDrawer.cs b/Assets/Scripts/Graphics/World/DevSceneDrawer.cs index eefb8307..f8922a7c 100644 --- a/Assets/Scripts/Graphics/World/DevSceneDrawer.cs +++ b/Assets/Scripts/Graphics/World/DevSceneDrawer.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using DLS.Description; using DLS.Game; using DLS.Simulation; @@ -377,7 +378,6 @@ public static Bounds2D DrawDisplayWithBackground(DisplayInstance display, Vector Bounds2D bounds = DrawDisplay(display, pos, 1, rootChip, sim); // Border colour around display - Draw.ModifyQuad(displayBorderID, bounds.Centre, bounds.Size + Vector2.one * 0.03f, borderCol); // Black background behind display to fill any gaps Draw.ModifyQuad(displayBackingID, bounds.Centre, bounds.Size, Color.black); @@ -395,12 +395,12 @@ public static Bounds2D DrawDisplay(DisplayInstance display, Vector2 posParent, f if (display.DisplayType is ChipType.Custom) { sim = sim?.GetSubChipFromID(display.Desc.SubChipID); - foreach (DisplayInstance child in display.ChildDisplays) { Bounds2D childBounds = DrawDisplay(child, posWorld, scaleWorld, rootChip, sim); bounds = Bounds2D.Grow(bounds, childBounds); } + } else if (display.DisplayType is ChipType.SevenSegmentDisplay) { @@ -440,6 +440,30 @@ public static Bounds2D DrawDisplay(DisplayInstance display, Vector2 posParent, f bounds = DrawDisplay_LED(posWorld, scaleWorld, col); } + else if (display.DisplayType == ChipType.Modded) + { + if (ModdedDisplayCreator.TryGetDrawFunction(display.Desc, out var DrawDisplay_Modded) && sim != null) + { + uint[] inputStates = sim.InputPins.Select(pin => (uint) PinState.GetBitStates(pin.State)).ToArray(); + uint[] outputStates = sim.OutputPins.Select(pin => (uint) PinState.GetBitStates(pin.State)).ToArray(); + + DrawDisplay_Modded(posWorld, scaleWorld, inputStates, outputStates); + } + bounds = Bounds2D.CreateFromCentreAndSize(posWorld, Vector2.one * scaleWorld); + } + + else if (display.DisplayType == ChipType.DisplayRGBLED) + { + bool simActive = sim != null; + bool isOn = simActive && sim.InputPins[0].FirstBitHigh; + bounds = DrawDisplay_DisplayRGBLED(posWorld, scaleWorld, isOn, sim); + } + else if (display.DisplayType == ChipType.DisplayUTF) + { + bool simActive = sim != null; + bool isOn = simActive && sim.InputPins[0].FirstBitHigh; + bounds = DrawDisplay_DisplayUTF(posWorld, scaleWorld, isOn, sim); + } display.LastDrawBounds = bounds; return bounds; @@ -451,9 +475,10 @@ public static Bounds2D DrawDisplay(DisplayInstance display, Vector2 posParent, f public static Bounds2D DrawDisplay_RGB(Vector2 centre, float scale, SimChip simSource) { const int pixelsPerRow = 16; - const float borderFrac = 0.95f; - const float pixelSizeT = 0.925f; + const float borderFrac = 1f; + const float pixelSizeT = 1f; // Draw background + Debug.Log(scale); Draw.Quad(centre, Vector2.one * scale, Color.black); float size = scale * borderFrac; @@ -472,9 +497,9 @@ public static Bounds2D DrawDisplay_RGB(Vector2 centre, float scale, SimChip simS { int address = y * 16 + x; uint pixelState = simSource.InternalState[address]; - float red = Unpack4BitColChannel(pixelState); - float green = Unpack4BitColChannel(pixelState >> 4); - float blue = Unpack4BitColChannel(pixelState >> 8); + float red = Unpack8BitColChannel(pixelState); + float green = Unpack8BitColChannel(pixelState >> 8); + float blue = Unpack8BitColChannel(pixelState >> 16); col = new Color(red, green, blue); } @@ -484,11 +509,6 @@ public static Bounds2D DrawDisplay_RGB(Vector2 centre, float scale, SimChip simS } return Bounds2D.CreateFromCentreAndSize(centre, Vector2.one * scale); - - float Unpack4BitColChannel(uint raw) - { - return (raw & 0b1111) / 15f; - } } public static Bounds2D DrawDisplay_Dot(Vector2 centre, float scale, SimChip simSource) @@ -571,6 +591,56 @@ public static Bounds2D DrawDisplay_SevenSegment(Vector2 centre, float scale, int return Bounds2D.CreateFromCentreAndSize(centre, boundsSize); } + public static Bounds2D DrawDisplay_DisplayUTF(Vector2 centre, float scale, bool isOn, SimChip sim) + { + if(isOn) + { + string displayName = ""; + Debug.Log("Display UTF: " + sim.InternalState.Length); + Debug.Log(sim.InternalState.ToString()); + for (int i = 0; i < 16; i++) + { + if (i >= sim.InternalState.Length) break; // Avoid out of bounds + string tmp = sim.InternalState[i].ToString("X").PadLeft(4, '0'); + ushort codeUnit = Convert.ToUInt16(tmp, 16); + displayName += ((char)codeUnit).ToString(); + } + Debug.Log("Name: " + displayName); + Anchor textAnchor = Anchor.TextCentre; + Vector2 textPos = centre; + + Draw.Text(FontAscii, displayName, FontSizeChipName, textPos, textAnchor, Color.white, ChipNameLineSpacing); + } + return Bounds2D.CreateFromCentreAndSize(centre, new Vector2(1, 0.125f/scale) * scale); + } + + public static Bounds2D DrawDisplay_DisplayRGBLED(Vector2 centre, float scale, bool isOn, SimChip sim) + { + const float pixelSizeT = 0.975f; + float pixelSize = scale; + + // Draw background + Draw.Quad(centre, Vector2.one * scale, Color.black); + Vector2 pixelDrawSize = Vector2.one * (scale * pixelSizeT); + Color onColor; + if (sim == null) + { + onColor = Color.white; // default fallback + } + else + { + onColor = new Color( + Unpack8BitColChannel(sim.InternalState[0]), + Unpack8BitColChannel(sim.InternalState[1]), + Unpack8BitColChannel(sim.InternalState[2]), + 1 + ); + } + Color col = isOn ? onColor : new Color(0, 0, 0, 1); + Draw.Quad(centre, pixelDrawSize, col); + return Bounds2D.CreateFromCentreAndSize(centre, Vector2.one * scale); + } + public static Bounds2D DrawDisplay_LED(Vector2 centre, float scale, Color col) { const float pixelSizeT = 0.975f; @@ -582,6 +652,11 @@ public static Bounds2D DrawDisplay_LED(Vector2 centre, float scale, Color col) return Bounds2D.CreateFromCentreAndSize(centre, Vector2.one * scale); } + static float Unpack8BitColChannel(uint raw) + { + return (raw & 0b11111111) / 255f; + } + public static void DrawDevPin(DevPinInstance devPin) { if (devPin.BitCount == PinBitCount.Bit1) diff --git a/Assets/Scripts/ModdingAPI.meta b/Assets/Scripts/ModdingAPI.meta new file mode 100644 index 00000000..27aa6fe2 --- /dev/null +++ b/Assets/Scripts/ModdingAPI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43f23a4e7b724f94395dc5f05cde7b10 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ModdingAPI/ChipBuilder.cs b/Assets/Scripts/ModdingAPI/ChipBuilder.cs new file mode 100644 index 00000000..3edf16c8 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/ChipBuilder.cs @@ -0,0 +1,66 @@ +using System; +using UnityEngine; + +namespace DLS.ModdingAPI +{ + public class ChipBuilder + { + public readonly string modID; + public readonly string name; + public Vector2 size = Vector2.one; + public Color color = Color.white; + public PinDescription[] inputs = null; + public PinDescription[] outputs = null; + public DisplayBuilder[] displays = null; + public bool hideName = false; + public Action simulationFunction = null; + + public ChipBuilder(string modID, string name) + { + this.modID = modID; + this.name = name; + } + + public ChipBuilder SetSize(Vector2 size) + { + this.size = size; + return this; + } + + public ChipBuilder SetColor(Color color) + { + this.color = color; + return this; + } + + public ChipBuilder SetInputs(PinDescription[] inputs) + { + this.inputs = inputs; + return this; + } + + public ChipBuilder SetOutputs(PinDescription[] outputs) + { + this.outputs = outputs; + return this; + } + + public ChipBuilder SetDisplays(DisplayBuilder[] displays) + { + this.displays = displays; + return this; + } + + public ChipBuilder HideName(bool hide = true) + { + this.hideName = hide; + return this; + } + + public ChipBuilder SetSimulationFunction(Action simulationFunction) + { + this.simulationFunction = simulationFunction; + return this; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/ChipBuilder.cs.meta b/Assets/Scripts/ModdingAPI/ChipBuilder.cs.meta new file mode 100644 index 00000000..09cb8775 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/ChipBuilder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d225081c06659cc44a5c898a31668903 \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/CollectionBuilder.cs b/Assets/Scripts/ModdingAPI/CollectionBuilder.cs new file mode 100644 index 00000000..6a33d2c3 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/CollectionBuilder.cs @@ -0,0 +1,24 @@ +using System.Collections.Generic; + +namespace DLS.ModdingAPI +{ + public class CollectionBuilder + { + public string modID; + public readonly string name; + public List chips; + + public CollectionBuilder(string modID, string name) + { + this.modID = modID; + this.name = name; + chips = new(); + } + + public CollectionBuilder AddChip(ChipBuilder chip) + { + chips.Add(chip); + return this; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/CollectionBuilder.cs.meta b/Assets/Scripts/ModdingAPI/CollectionBuilder.cs.meta new file mode 100644 index 00000000..a2d3b256 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/CollectionBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04c2257c20452374dab4167bb79b9d9f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ModdingAPI/DLS.ModdingAPI.asmdef b/Assets/Scripts/ModdingAPI/DLS.ModdingAPI.asmdef new file mode 100644 index 00000000..5f0922f9 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/DLS.ModdingAPI.asmdef @@ -0,0 +1,3 @@ +{ + "name": "DLSModdingAPI" +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/DLS.ModdingAPI.asmdef.meta b/Assets/Scripts/ModdingAPI/DLS.ModdingAPI.asmdef.meta new file mode 100644 index 00000000..6173a3fe --- /dev/null +++ b/Assets/Scripts/ModdingAPI/DLS.ModdingAPI.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 61a9784a30ea9384088f2051bf313a3e +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ModdingAPI/DisplayBuilder.cs b/Assets/Scripts/ModdingAPI/DisplayBuilder.cs new file mode 100644 index 00000000..fb4deb9a --- /dev/null +++ b/Assets/Scripts/ModdingAPI/DisplayBuilder.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; + +namespace DLS.ModdingAPI +{ + public class DisplayBuilder + { + public string modID; + public Vector2 Position; + public float Scale; + public Action DrawFunction; + + public DisplayBuilder(string modID) + { + this.modID = modID; + } + + public DisplayBuilder SetPosition(Vector2 position) + { + Position = position; + return this; + } + + public DisplayBuilder SetScale(float scale) + { + Scale = scale; + return this; + } + + public DisplayBuilder SetDrawFunction(Action drawFunction) + { + DrawFunction = drawFunction; + return this; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/DisplayBuilder.cs.meta b/Assets/Scripts/ModdingAPI/DisplayBuilder.cs.meta new file mode 100644 index 00000000..75631ec5 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/DisplayBuilder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: debca0986f38b304ebe01b3c988e32b4 \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/IMod.cs b/Assets/Scripts/ModdingAPI/IMod.cs new file mode 100644 index 00000000..2f2c924e --- /dev/null +++ b/Assets/Scripts/ModdingAPI/IMod.cs @@ -0,0 +1,53 @@ +using UnityEngine; + +namespace DLS.ModdingAPI +{ + public abstract class IMod + { + public abstract string ModID { get; } + public abstract string Name { get; } + public abstract string Version { get; } + public abstract void Initialize(); + + // Optional event methods with default implementations + public virtual void OnPlaceChip(ChipEventArgs chip) { } + public virtual void OnMoveChip(ChipEventArgs chip, Vector2 newPosition) { } + public virtual void OnPlaceWire(WireEventArgs wire) { } + public virtual void OnEditWire(WireEventArgs wire) { } + public virtual void OnProjectLoad(ProjectEventArgs project) { } + public virtual void OnProjectUnload(ProjectEventArgs project) { } + public virtual void OnMouseClick(InputEventArgs args) { } + + public enum MouseButton + { + Left = 0, + Right = 1, + Middle = 2 + } + + public struct ChipEventArgs + { + public string ChipName; + public Vector2 Position; + } + + public struct WireEventArgs + { + public string SourcePinName; + public string TargetPinName; + public int BitCount; + } + + public struct ProjectEventArgs + { + public string ProjectName; + public string FilePath; + } + + public struct InputEventArgs + { + public Vector2 Position; + public MouseButton Button; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/IMod.cs.meta b/Assets/Scripts/ModdingAPI/IMod.cs.meta new file mode 100644 index 00000000..9495d021 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/IMod.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7fe56ef1ac2353c45baa0cdea81b9c8b \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/PinBuilder.cs b/Assets/Scripts/ModdingAPI/PinBuilder.cs new file mode 100644 index 00000000..96b408bd --- /dev/null +++ b/Assets/Scripts/ModdingAPI/PinBuilder.cs @@ -0,0 +1,61 @@ +using UnityEngine; + +namespace DLS.ModdingAPI +{ + public struct PinDescription + { + public string Name; + public int ID; + public Vector2 Position; + public PinBitCount BitCount; + public PinColour Colour; + public PinValueDisplayMode ValueDisplayMode; + + public PinDescription(string name, int id, Vector2 position, PinBitCount bitCount, PinColour colour, PinValueDisplayMode valueDisplayMode) + { + Name = name; + ID = id; + Position = position; + BitCount = bitCount; + Colour = colour; + ValueDisplayMode = valueDisplayMode; + } + + public PinDescription(string name, int id) + { + Name = name; + ID = id; + Position = Vector2.zero; + BitCount = PinBitCount.Bit1; + Colour = PinColour.Red; + ValueDisplayMode = PinValueDisplayMode.Off; + } + } + + public enum PinBitCount + { + Bit1 = 1, + Bit4 = 4, + Bit8 = 8 + } + + public enum PinColour + { + Red, + Orange, + Yellow, + Green, + Blue, + Violet, + Pink, + White + } + + public enum PinValueDisplayMode + { + Off, + UnsignedDecimal, + SignedDecimal, + HEX + } +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/PinBuilder.cs.meta b/Assets/Scripts/ModdingAPI/PinBuilder.cs.meta new file mode 100644 index 00000000..3d7b83a1 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/PinBuilder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1dea80cfc7501f14c97a02b257032127 \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/Registry.cs b/Assets/Scripts/ModdingAPI/Registry.cs new file mode 100644 index 00000000..4e1ff786 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/Registry.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace DLS.ModdingAPI +{ + public static class Registry + { + public static List moddedChips = new(); + public static List moddedCollections = new(); + public static readonly Dictionary ModdedShortcuts = new(); + public static void RegisterChips(params ChipBuilder[] chips) + { + foreach (ChipBuilder chip in chips) + { + moddedChips.Add(chip); + } + } + + public static void RegisterCollections(params CollectionBuilder[] collections) + { + foreach (CollectionBuilder collection in collections) + { + moddedCollections.Add(collection); + } + } + + public static void RegisterShortcuts(params ShortcutBuilder[] shortcuts) + { + foreach (ShortcutBuilder shortcut in shortcuts) + { + if (!ModdedShortcuts.ContainsKey(shortcut.Name)) + { + ModdedShortcuts[shortcut.Name] = shortcut; + } + else + { + Debug.LogWarning($"Shortcut with name '{shortcut.Name}' is already registered."); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/Registry.cs.meta b/Assets/Scripts/ModdingAPI/Registry.cs.meta new file mode 100644 index 00000000..dfbdc9e3 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/Registry.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 608a3f0c921587f4d9eaa2b21f01ad20 \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/ShortcutBuilder.cs b/Assets/Scripts/ModdingAPI/ShortcutBuilder.cs new file mode 100644 index 00000000..a63a1dc8 --- /dev/null +++ b/Assets/Scripts/ModdingAPI/ShortcutBuilder.cs @@ -0,0 +1,31 @@ +using System; +using UnityEngine; + +namespace DLS.ModdingAPI +{ + public class ShortcutBuilder + { + public readonly string modID; + public readonly string Name; + public KeyCode Key; + public Func ModifierCondition; + + public ShortcutBuilder(string modID, string name) + { + this.modID = modID; + Name = name; + } + + public ShortcutBuilder SetKey(KeyCode key) + { + Key = key; + return this; + } + + public ShortcutBuilder SetModifierCondition(Func modifierCondition) + { + ModifierCondition = modifierCondition; + return this; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ModdingAPI/ShortcutBuilder.cs.meta b/Assets/Scripts/ModdingAPI/ShortcutBuilder.cs.meta new file mode 100644 index 00000000..7f55217c --- /dev/null +++ b/Assets/Scripts/ModdingAPI/ShortcutBuilder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c8251fa4c880009479062b4ee6d192f7 \ No newline at end of file diff --git a/Assets/Scripts/Mods.meta b/Assets/Scripts/Mods.meta new file mode 100644 index 00000000..168c7681 --- /dev/null +++ b/Assets/Scripts/Mods.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2c495a8eb211094f8aa588da8bc03ec +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Mods/ModLoader.cs b/Assets/Scripts/Mods/ModLoader.cs new file mode 100644 index 00000000..9694c8f8 --- /dev/null +++ b/Assets/Scripts/Mods/ModLoader.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using DLS.ModdingAPI; +using UnityEngine; + +namespace DLS.Mods +{ + public static class ModLoader + { + public static readonly List loadedMods = new(); + + public static void NotifyMods(Action action, T arg) + { + foreach (IMod mod in loadedMods) + { + action(mod, arg); + } + } + + public static void NotifyMods(Action action) + { + foreach (IMod mod in loadedMods) + { + action(mod); + } + } + + public static void InitializeMods(string modsDirectory) + { + Debug.Log("Loading mods..."); + foreach (string dllPath in Directory.GetFiles(modsDirectory, "*.dls")) + { + try + { + Assembly modAssembly = Assembly.LoadFrom(dllPath); + + foreach (Type type in modAssembly.GetTypes().Where(t => typeof(IMod).IsAssignableFrom(t) && !t.IsAbstract)) + { + IMod modInstance = (IMod) Activator.CreateInstance(type); + loadedMods.Add(modInstance); + modInstance.Initialize(); + Debug.Log($"Loaded mod: {modInstance.Name} v{modInstance.Version}"); + } + } + catch (ReflectionTypeLoadException ex) + { + foreach (Exception inner in ex.LoaderExceptions) + { + Debug.LogError(inner.Message); + } + } + catch (FileLoadException ex) + { + Debug.LogError(ex.Message); + } + } + } + + public static bool IsModLoaded(string modId) + { + foreach (IMod mod in loadedMods) + { + if (mod.ModID == modId) + { + return true; + } + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Mods/ModLoader.cs.meta b/Assets/Scripts/Mods/ModLoader.cs.meta new file mode 100644 index 00000000..c2bf5efb --- /dev/null +++ b/Assets/Scripts/Mods/ModLoader.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ab9befd72784fff46bbe84536e22cf9a \ No newline at end of file diff --git a/Assets/Scripts/SaveSystem/DescriptionCreator.cs b/Assets/Scripts/SaveSystem/DescriptionCreator.cs index 196e0ea1..936b3a33 100644 --- a/Assets/Scripts/SaveSystem/DescriptionCreator.cs +++ b/Assets/Scripts/SaveSystem/DescriptionCreator.cs @@ -27,6 +27,19 @@ public static ChipDescription CreateChipDescription(DevChipInstance chip) Vector2 minChipsSize = SubChipInstance.CalculateMinChipSize(inputPins, outputPins, name); size = Vector2.Max(minChipsSize, size); + // Update DependsOnModIDs if any subchip is a modded chip + List dependsOnModIDs = new(); + foreach (var subchip in chip.GetSubchips()) + { + if (subchip.Description.DependsOnModIDs != null && subchip.Description.DependsOnModIDs.Count != 0) + { + dependsOnModIDs.AddRange(subchip.Description.DependsOnModIDs); + } + } + + // Remove duplicates + dependsOnModIDs = dependsOnModIDs.Distinct().ToList(); + UpdateWireIndicesForDescriptionCreation(chip); // Create and return the chip description @@ -43,7 +56,8 @@ public static ChipDescription CreateChipDescription(DevChipInstance chip) OutputPins = outputPins, Wires = chip.Wires.Select(CreateWireDescription).ToArray(), Displays = displays, - ChipType = ChipType.Custom + ChipType = ChipType.Custom, + DependsOnModIDs = dependsOnModIDs }; } @@ -69,6 +83,18 @@ public static SubChipDescription CreateSubChipDescription(SubChipInstance subChi public static SubChipDescription CreateBuiltinSubChipDescriptionForPlacement(ChipType type, string name, int id, Vector2 position) { + int ROMStorage = 256; + uint[] internalData = type switch + { + ChipType.Rom_256x2x8 => new uint[ROMStorage], + ChipType.Rom_256x16 => new uint[ROMStorage], + ChipType.Rom_256x32 => new uint[ROMStorage], + ChipType.Key => new uint[] { 'K' }, + ChipType.Pulse => new uint[] { 50, 0, 0 }, + ChipType.DisplayUTF => new uint[16] { 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32 }, + _ => ChipTypeHelper.IsBusType(type) ? new uint[2] : null + }; + return new SubChipDescription ( name, @@ -84,7 +110,10 @@ public static uint[] CreateDefaultInstanceData(ChipType type) { return type switch { + ChipType.DisplayUTF => new uint[16], // ammount of chars + ChipType.Rom_256x2x8 => new uint[256], // ROM contents ChipType.Rom_256x16 => new uint[256], // ROM contents + ChipType.Rom_256x32 => new uint[256], // ROM contents ChipType.Key => new uint[] { 'K' }, // Key binding ChipType.Pulse => new uint[] { 50, 0, 0 }, // Pulse width, ticks remaining, input state old ChipType.DisplayLED => new uint[] { 0 }, // LED colour diff --git a/Assets/Scripts/SaveSystem/Loader.cs b/Assets/Scripts/SaveSystem/Loader.cs index 590a3af1..537ca64c 100644 --- a/Assets/Scripts/SaveSystem/Loader.cs +++ b/Assets/Scripts/SaveSystem/Loader.cs @@ -4,6 +4,9 @@ using System.Linq; using DLS.Description; using DLS.Game; +using DLS.Graphics; +using DLS.Mods; +using UnityEngine; namespace DLS.SaveSystem { @@ -80,6 +83,8 @@ public static ProjectDescription[] LoadAllProjectDescriptions() static ChipLibrary LoadChipLibrary(ProjectDescription projectDescription) { + ChipDescription[] moddedChips = ModdedChipCreator.CreateAllModdedChipDescriptions(); + string chipDirectoryPath = SavePaths.GetChipsPath(projectDescription.ProjectName); ChipDescription[] loadedChips = new ChipDescription[projectDescription.AllCustomChipNames.Length]; @@ -98,13 +103,12 @@ static ChipLibrary LoadChipLibrary(ProjectDescription projectDescription) customChipNameHashset.Add(chipDesc.Name); } - // If built-in chip name conflicts with a custom chip, the built-in chip must have been added in a newer version. // In that case, simply exclude the built-in chip. TODO: warn player that they should rename their chip if they want access to new builtin version builtinChips = builtinChips.Where(b => !customChipNameHashset.Contains(b.Name)).ToArray(); UpgradeHelper.ApplyVersionChanges(loadedChips, builtinChips); - return new ChipLibrary(loadedChips, builtinChips); + return new ChipLibrary(loadedChips, builtinChips, moddedChips); } } } \ No newline at end of file diff --git a/Assets/Scripts/SaveSystem/SavePaths.cs b/Assets/Scripts/SaveSystem/SavePaths.cs index 7fe94974..64e495c6 100644 --- a/Assets/Scripts/SaveSystem/SavePaths.cs +++ b/Assets/Scripts/SaveSystem/SavePaths.cs @@ -16,6 +16,7 @@ public static class SavePaths public static readonly string ProjectsPath = Path.Combine(AllData, "Projects"); public static readonly string DeletedProjectsPath = Path.Combine(AllData, "Deleted Projects"); public static readonly string AppSettingsPath = Path.Combine(AllData, "AppSettings.json"); + public static readonly string ModsPath = Path.Combine(AllData, "Mods"); public static void EnsureDirectoryExists(string directoryPath) => Directory.CreateDirectory(directoryPath); diff --git a/Assets/Scripts/Seb/Helpers/Maths.cs b/Assets/Scripts/Seb/Helpers/Maths.cs index c0e40fea..78fe3c5d 100644 --- a/Assets/Scripts/Seb/Helpers/Maths.cs +++ b/Assets/Scripts/Seb/Helpers/Maths.cs @@ -882,7 +882,7 @@ public static int IntLog2(int value) public static int TwosComplement(uint unsignedValue, int numBits) { - if (numBits < 32) + if (numBits <= 32) { uint unsignedRange = 1u << numBits; uint firstNegativeValue = unsignedRange >> 1; diff --git a/Assets/Scripts/Seb/SebVis/DrawManager.cs b/Assets/Scripts/Seb/SebVis/DrawManager.cs index 4cc1c36e..68df367e 100644 --- a/Assets/Scripts/Seb/SebVis/DrawManager.cs +++ b/Assets/Scripts/Seb/SebVis/DrawManager.cs @@ -188,6 +188,7 @@ static void CreateShapeDrawers() static void LoadDefaultFonts() { + defaultFontsData = null; if (defaultFontsData == null || defaultFontsData.Length != FontMap.map.Length) { defaultFontsData = new FontData[FontMap.map.Length]; diff --git a/Assets/Scripts/Seb/SebVis/Internal/FontMap.cs b/Assets/Scripts/Seb/SebVis/Internal/FontMap.cs index fb94116b..79496282 100644 --- a/Assets/Scripts/Seb/SebVis/Internal/FontMap.cs +++ b/Assets/Scripts/Seb/SebVis/Internal/FontMap.cs @@ -19,7 +19,8 @@ public enum FontType DepartureMono, // -- Pixel -- - Born2bSporty // + Born2bSporty, + Noto // } } @@ -43,7 +44,8 @@ public static readonly (FontType font, string path)[] map = (FontType.JetbrainsMonoSemiBold, "JetbrainsMono/JetBrainsMonoNL-SemiBold"), (FontType.JetbrainsMonoRegular, "JetbrainsMono/JetBrainsMonoNL-Regular"), (FontType.DepartureMono, "DepartureMono/DepartureMono-Regular"), - (FontType.Born2bSporty, "Born2bSporty/Born2bSportyV2") // + (FontType.Born2bSporty, "Born2bSporty/Born2bSportyV2"), + (FontType.Noto, "Noto_Sans/static/NotoSans-Bold") // }; } } \ No newline at end of file diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto.meta new file mode 100644 index 00000000..6069347f --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2bd6dd5861800466987989fe005ba7a3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans.meta new file mode 100644 index 00000000..f6fe79e4 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a6163463f1ae4c429d7b71d98d47364 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf new file mode 100644 index 00000000..6245ba01 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf.meta new file mode 100644 index 00000000..69590eb0 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-Italic-VariableFont_wdth,wght.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: dca4845c05ee04923928e8559846f6dc +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf new file mode 100644 index 00000000..9530d84d Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf.meta new file mode 100644 index 00000000..000a4ecf --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: e02930740b45646c7a38f50beb65a3f7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/OFL.txt b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/OFL.txt new file mode 100644 index 00000000..0373e14e --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/OFL.txt.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/OFL.txt.meta new file mode 100644 index 00000000..c9c23e68 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/OFL.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d8f625f38a20c404e8d5692afc7a7e51 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/README.txt b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/README.txt new file mode 100644 index 00000000..4958bee2 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/README.txt @@ -0,0 +1,136 @@ +Noto Sans Variable Font +======================= + +This download contains Noto Sans as both variable fonts and static fonts. + +Noto Sans is a variable font with these axes: + wdth + wght + +This means all the styles are contained in these files: + NotoSans-VariableFont_wdth,wght.ttf + NotoSans-Italic-VariableFont_wdth,wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Noto Sans: + static/NotoSans_ExtraCondensed-Thin.ttf + static/NotoSans_ExtraCondensed-ExtraLight.ttf + static/NotoSans_ExtraCondensed-Light.ttf + static/NotoSans_ExtraCondensed-Regular.ttf + static/NotoSans_ExtraCondensed-Medium.ttf + static/NotoSans_ExtraCondensed-SemiBold.ttf + static/NotoSans_ExtraCondensed-Bold.ttf + static/NotoSans_ExtraCondensed-ExtraBold.ttf + static/NotoSans_ExtraCondensed-Black.ttf + static/NotoSans_Condensed-Thin.ttf + static/NotoSans_Condensed-ExtraLight.ttf + static/NotoSans_Condensed-Light.ttf + static/NotoSans_Condensed-Regular.ttf + static/NotoSans_Condensed-Medium.ttf + static/NotoSans_Condensed-SemiBold.ttf + static/NotoSans_Condensed-Bold.ttf + static/NotoSans_Condensed-ExtraBold.ttf + static/NotoSans_Condensed-Black.ttf + static/NotoSans_SemiCondensed-Thin.ttf + static/NotoSans_SemiCondensed-ExtraLight.ttf + static/NotoSans_SemiCondensed-Light.ttf + static/NotoSans_SemiCondensed-Regular.ttf + static/NotoSans_SemiCondensed-Medium.ttf + static/NotoSans_SemiCondensed-SemiBold.ttf + static/NotoSans_SemiCondensed-Bold.ttf + static/NotoSans_SemiCondensed-ExtraBold.ttf + static/NotoSans_SemiCondensed-Black.ttf + static/NotoSans-Thin.ttf + static/NotoSans-ExtraLight.ttf + static/NotoSans-Light.ttf + static/NotoSans-Regular.ttf + static/NotoSans-Medium.ttf + static/NotoSans-SemiBold.ttf + static/NotoSans-Bold.ttf + static/NotoSans-ExtraBold.ttf + static/NotoSans-Black.ttf + static/NotoSans_ExtraCondensed-ThinItalic.ttf + static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf + static/NotoSans_ExtraCondensed-LightItalic.ttf + static/NotoSans_ExtraCondensed-Italic.ttf + static/NotoSans_ExtraCondensed-MediumItalic.ttf + static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf + static/NotoSans_ExtraCondensed-BoldItalic.ttf + static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf + static/NotoSans_ExtraCondensed-BlackItalic.ttf + static/NotoSans_Condensed-ThinItalic.ttf + static/NotoSans_Condensed-ExtraLightItalic.ttf + static/NotoSans_Condensed-LightItalic.ttf + static/NotoSans_Condensed-Italic.ttf + static/NotoSans_Condensed-MediumItalic.ttf + static/NotoSans_Condensed-SemiBoldItalic.ttf + static/NotoSans_Condensed-BoldItalic.ttf + static/NotoSans_Condensed-ExtraBoldItalic.ttf + static/NotoSans_Condensed-BlackItalic.ttf + static/NotoSans_SemiCondensed-ThinItalic.ttf + static/NotoSans_SemiCondensed-ExtraLightItalic.ttf + static/NotoSans_SemiCondensed-LightItalic.ttf + static/NotoSans_SemiCondensed-Italic.ttf + static/NotoSans_SemiCondensed-MediumItalic.ttf + static/NotoSans_SemiCondensed-SemiBoldItalic.ttf + static/NotoSans_SemiCondensed-BoldItalic.ttf + static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf + static/NotoSans_SemiCondensed-BlackItalic.ttf + static/NotoSans-ThinItalic.ttf + static/NotoSans-ExtraLightItalic.ttf + static/NotoSans-LightItalic.ttf + static/NotoSans-Italic.ttf + static/NotoSans-MediumItalic.ttf + static/NotoSans-SemiBoldItalic.ttf + static/NotoSans-BoldItalic.ttf + static/NotoSans-ExtraBoldItalic.ttf + static/NotoSans-BlackItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/README.txt.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/README.txt.meta new file mode 100644 index 00000000..581517cc --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/README.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d8ed81e24b19a46a0b690654b1fd68d3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static.meta new file mode 100644 index 00000000..2c48e9d9 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73a5092d207234b4b94ae3e6bd1a7f97 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Black.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Black.ttf new file mode 100644 index 00000000..d5a6e0d1 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Black.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Black.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Black.ttf.meta new file mode 100644 index 00000000..ae73e0e2 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Black.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 9432a53b0157543ca8ed66470d36d9b1 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf new file mode 100644 index 00000000..dfc640c3 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf.meta new file mode 100644 index 00000000..c8c99a38 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 2d2f35c063e1a4a3fa7f4ab92ad90973 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Bold.bytes b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Bold.bytes new file mode 100644 index 00000000..506f7d84 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Bold.bytes differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Bold.bytes.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Bold.bytes.meta new file mode 100644 index 00000000..d3c0b2dd --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Bold.bytes.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 72eb413f22d5b4ccb87e3313932e9052 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf new file mode 100644 index 00000000..0e8fa4bd Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf.meta new file mode 100644 index 00000000..69511d8c --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 4f22d352c44f740adae8bdb0aabf23ad +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf new file mode 100644 index 00000000..58684467 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf.meta new file mode 100644 index 00000000..34cfb3cb --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 742d30ce9828348aca609d0b15ba97a3 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf new file mode 100644 index 00000000..68abd4c0 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf.meta new file mode 100644 index 00000000..9663cfaa --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 48140d47579ca42398d6bf23e811357b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf new file mode 100644 index 00000000..078f8dc8 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf.meta new file mode 100644 index 00000000..89cbb0fe --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: af8ed762ce1a4480896f5cde0eb581c5 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf new file mode 100644 index 00000000..acaa4664 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf.meta new file mode 100644 index 00000000..f4f12eef --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 9d1506f7d4bff440297b2784b395f00a +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Italic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Italic.ttf new file mode 100644 index 00000000..d9b9e148 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Italic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Italic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Italic.ttf.meta new file mode 100644 index 00000000..8dad6985 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Italic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 7262dde0c46194c35ab138a7ebe89660 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Light.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Light.ttf new file mode 100644 index 00000000..8d8a6789 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Light.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Light.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Light.ttf.meta new file mode 100644 index 00000000..54d06926 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Light.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 3326858a43ce34dd4a0474baafcf4cb7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttf new file mode 100644 index 00000000..0ab65c0d Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttf.meta new file mode 100644 index 00000000..dd3bfe9f --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-LightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: bb1d683fdda9c401a848ee07e470a5b3 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Medium.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Medium.ttf new file mode 100644 index 00000000..a44124bb Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Medium.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Medium.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Medium.ttf.meta new file mode 100644 index 00000000..eda854ea --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Medium.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 7cddc77465b5d4073a05f94df28efdbf +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf new file mode 100644 index 00000000..467af1b3 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf.meta new file mode 100644 index 00000000..3c64837d --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: cf7ea68a2cc894d19a7c6f99ab120688 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Regular.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Regular.ttf new file mode 100644 index 00000000..4bac02f2 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Regular.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Regular.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Regular.ttf.meta new file mode 100644 index 00000000..083c17a3 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Regular.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: c9e1d90b8d4364b42a01a68a62d57df8 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttf new file mode 100644 index 00000000..e8467490 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttf.meta new file mode 100644 index 00000000..cc94b602 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: bed1f614891fe4edcb5d36aefdb714ac +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf new file mode 100644 index 00000000..cacc7ece Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf.meta new file mode 100644 index 00000000..18e629a7 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: fe2de7816de894eeb945ddf7e349f5b7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Thin.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Thin.ttf new file mode 100644 index 00000000..04335a5b Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Thin.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Thin.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Thin.ttf.meta new file mode 100644 index 00000000..bf4ba54e --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-Thin.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 6b906529d78d64a7aa3f3540d506ef96 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf new file mode 100644 index 00000000..910dfc74 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf.meta new file mode 100644 index 00000000..ea5176e5 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 1b22e34995bf2457796bc3d1cf04350c +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf new file mode 100644 index 00000000..31866995 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf.meta new file mode 100644 index 00000000..b3b22781 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: f03ca2f146cc743c19a19d128b50a254 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf new file mode 100644 index 00000000..d4b19bc1 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf.meta new file mode 100644 index 00000000..693c6449 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 4fa8b433c75e840539f0741c6c6525b5 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf new file mode 100644 index 00000000..1ce44bce Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf.meta new file mode 100644 index 00000000..38849000 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 6960348649b004ed0aeb3b7e9ea2c330 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf new file mode 100644 index 00000000..1960e68a Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf.meta new file mode 100644 index 00000000..8ffc781a --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 327da7b8220db48069ba038744ec6447 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf new file mode 100644 index 00000000..cb36919a Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf.meta new file mode 100644 index 00000000..aa006bcd --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 73ed19f05f4b74b58ba1a2074074a3d7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf new file mode 100644 index 00000000..7bbea17b Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf.meta new file mode 100644 index 00000000..398f959b --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 3001e7f402cf64cf2968dd66ede8c195 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf new file mode 100644 index 00000000..29a77513 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf.meta new file mode 100644 index 00000000..97b5bda2 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 5b0936c2924aa481392cadd8b26d45c0 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf new file mode 100644 index 00000000..983b81ab Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf.meta new file mode 100644 index 00000000..ea5fc7b3 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: f67a344ca39404bb3ac21db26a0c9aa9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf new file mode 100644 index 00000000..8e2d1f83 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf.meta new file mode 100644 index 00000000..6188c25e --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: dcd1b50d1fbbc426d97e8c2bf238b626 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf new file mode 100644 index 00000000..32c58a58 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf.meta new file mode 100644 index 00000000..ff165822 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 2d80ecb78af7c47a08551d482082c0de +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf new file mode 100644 index 00000000..c5d1b451 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf.meta new file mode 100644 index 00000000..37c534bf --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 59944111ce9e747459f2ee9156132c71 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf new file mode 100644 index 00000000..45f8ea45 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf.meta new file mode 100644 index 00000000..dce557eb --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: fb082a495e7934efab66e169d7b6f31e +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf new file mode 100644 index 00000000..92cd88a5 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf.meta new file mode 100644 index 00000000..aa1a60b6 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-MediumItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 2ee4e5bb2cff942a2a72a7045840e8c1 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf new file mode 100644 index 00000000..3ad9a1b8 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf.meta new file mode 100644 index 00000000..5af8ea8f --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 42d3b8abc08c34afdb59b115580f2be8 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf new file mode 100644 index 00000000..2f20a216 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf.meta new file mode 100644 index 00000000..378c80ee --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 492c03ca2f4b44b11a8cc3e1c372dd53 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf new file mode 100644 index 00000000..b28147d3 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf.meta new file mode 100644 index 00000000..17bfe9b0 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-SemiBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 8f2899804ec6c4cc095a143224274d66 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf new file mode 100644 index 00000000..d5b50b57 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf.meta new file mode 100644 index 00000000..12191ab6 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 43879446204e448a9b4f4fe417a6b54e +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf new file mode 100644 index 00000000..00d93157 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf.meta new file mode 100644 index 00000000..afb18d16 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_Condensed-ThinItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 13f886b3a9ec64a8bb1888781ad195f1 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans Condensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf new file mode 100644 index 00000000..619c4f8f Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf.meta new file mode 100644 index 00000000..2d58ec39 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Black.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: f2f8a1490d29d458d82610cdcec0bf21 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf new file mode 100644 index 00000000..f1246272 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf.meta new file mode 100644 index 00000000..a5261588 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BlackItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 327fe115c60ea4d2497f85373aea2537 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf new file mode 100644 index 00000000..11e46997 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf.meta new file mode 100644 index 00000000..50403020 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Bold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 3ae15a0b0ed7a4781abf0977d7146b58 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf new file mode 100644 index 00000000..81ec21fa Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf.meta new file mode 100644 index 00000000..fc686054 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-BoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 0b98db2214a58469c8967877040902c2 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf new file mode 100644 index 00000000..2ce3cb31 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf.meta new file mode 100644 index 00000000..75d79811 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 92b799bcf31b84d77a0e1e39cf27be21 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf new file mode 100644 index 00000000..98929675 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf.meta new file mode 100644 index 00000000..774bbc91 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 087f4d090ee63481a96f4235a464acc9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf new file mode 100644 index 00000000..ce67cb11 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf.meta new file mode 100644 index 00000000..869a0a96 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLight.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 60bb94ec015ff40c187a0bb7d4b0f744 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf new file mode 100644 index 00000000..45726c35 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf.meta new file mode 100644 index 00000000..844dd393 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: bd8f92dd70ae049b8a5b076694afa4c7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf new file mode 100644 index 00000000..e6b1a73e Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf.meta new file mode 100644 index 00000000..87d0cdcb --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Italic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: f4e21b172c6a1433b95729e0b50062e4 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf new file mode 100644 index 00000000..5e9fef86 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf.meta new file mode 100644 index 00000000..7bc8fc43 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Light.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 4765c2ba6350d47aa844efe58d38f9f5 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf new file mode 100644 index 00000000..500c9196 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf.meta new file mode 100644 index 00000000..294ba343 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-LightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 9d775266a9dd246708624b7622a7b5a6 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf new file mode 100644 index 00000000..c78465e7 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf.meta new file mode 100644 index 00000000..2f8b4883 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Medium.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 7715d44ef6ad147e5bbc051b3e2aa3af +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf new file mode 100644 index 00000000..527291a3 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf.meta new file mode 100644 index 00000000..e5ec7457 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-MediumItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 9439f0f6758684f65b328feb0f4f036d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf new file mode 100644 index 00000000..8921daa1 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf.meta new file mode 100644 index 00000000..d0520c4e --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Regular.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: f3d0f299dd4514a089ac7be03cb1f187 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf new file mode 100644 index 00000000..83b98b27 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf.meta new file mode 100644 index 00000000..ef298326 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: de25e332f042f4c28a90b61fbe286529 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf new file mode 100644 index 00000000..9dedf3ef Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf.meta new file mode 100644 index 00000000..63ad005d --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: ca82dde3c50854d6fbb73f8d37e5f702 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf new file mode 100644 index 00000000..81e2bf94 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf.meta new file mode 100644 index 00000000..d124c275 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-Thin.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 132271de828144fd89f96516d091983a +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf new file mode 100644 index 00000000..17b43b19 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf.meta new file mode 100644 index 00000000..2e896f73 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_ExtraCondensed-ThinItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 17785fad0e940467a817bd852d5968a5 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans ExtraCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf new file mode 100644 index 00000000..5a141da4 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf.meta new file mode 100644 index 00000000..cdab9fc1 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Black.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 7bfe98abbac2d4736bd0e02cd0e6120e +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf new file mode 100644 index 00000000..538888da Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf.meta new file mode 100644 index 00000000..2c0c056a --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BlackItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 9323371c0006b4e4da1715c5abd1043a +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf new file mode 100644 index 00000000..9cff468e Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf.meta new file mode 100644 index 00000000..5e53cb8a --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Bold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: b657d8e21f061427dbb0cc844872dc22 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf new file mode 100644 index 00000000..314024cd Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf.meta new file mode 100644 index 00000000..3be62ad2 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-BoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: bcf20b9887a6545459bd1000fb628fac +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf new file mode 100644 index 00000000..c50c0814 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf.meta new file mode 100644 index 00000000..0a04c5de --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 4c1cf8d84451549f3b41be0156fa67af +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf new file mode 100644 index 00000000..b8b053e8 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf.meta new file mode 100644 index 00000000..12d7480d --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 444eef991f56a4572870bf847102900d +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf new file mode 100644 index 00000000..6450a04b Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf.meta new file mode 100644 index 00000000..5085d2fa --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLight.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 343452648c0a847d5a8c4d046e55831b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf new file mode 100644 index 00000000..a655d1e7 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf.meta new file mode 100644 index 00000000..60562c8a --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ExtraLightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 7f8c70faaea43482caa9ac07437deb67 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf new file mode 100644 index 00000000..67c7a2f7 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf.meta new file mode 100644 index 00000000..f42996b5 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Italic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 4d2969d084d1a426481974d2ba04cce5 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf new file mode 100644 index 00000000..f9221c3d Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf.meta new file mode 100644 index 00000000..9385b6b0 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Light.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 0add37e291ad9492086870b1c3c10961 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf new file mode 100644 index 00000000..9a722003 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf.meta new file mode 100644 index 00000000..f4f18471 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-LightItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 51d1bf760bea34932998344a9b6ce935 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf new file mode 100644 index 00000000..e2c825c4 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf.meta new file mode 100644 index 00000000..2b00126a --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Medium.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 36d2f84bfb5c64b64b8e431d9fb529d7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf new file mode 100644 index 00000000..6be577a4 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf.meta new file mode 100644 index 00000000..ff7da95d --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-MediumItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 55668730692ef4d9db84e4e1ad075ae7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf new file mode 100644 index 00000000..06a2982d Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf.meta new file mode 100644 index 00000000..bfec04c3 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Regular.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 8d2966eb83feb4e429c0b2d7a8ddaad7 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf new file mode 100644 index 00000000..8c8f313f Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf.meta new file mode 100644 index 00000000..f1c4c528 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBold.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 163204c45b4fe40ae804b90bf9eb1fe9 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf new file mode 100644 index 00000000..59093a98 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf.meta new file mode 100644 index 00000000..669821c7 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-SemiBoldItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 080b60a49db6c4975bb19d3c7101ce93 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf new file mode 100644 index 00000000..7d7ef338 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf.meta new file mode 100644 index 00000000..ac0bf2d7 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-Thin.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: e98b3aa6a1aaf4033bf28594d2c8ad83 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf new file mode 100644 index 00000000..44084d99 Binary files /dev/null and b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf differ diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf.meta new file mode 100644 index 00000000..4039c6e4 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/Noto_Sans/static/NotoSans_SemiCondensed-ThinItalic.ttf.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: d89b70e4b739f4a32b6dc5fde4dfbe46 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Noto Sans SemiCondensed + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/symbola.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/symbola.meta new file mode 100644 index 00000000..96efb8aa --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/symbola.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba6e0cb08afca4322a3b1f6c94cc2078 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/unifont.meta b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/unifont.meta new file mode 100644 index 00000000..d7425313 --- /dev/null +++ b/Assets/Scripts/Seb/SebVis/Internal/Resources/Fonts/unifont.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6fcda91cb261a4ace9dd848e73970369 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Simulation/PinState.cs b/Assets/Scripts/Simulation/PinState.cs index 3d121e9f..a245e91b 100644 --- a/Assets/Scripts/Simulation/PinState.cs +++ b/Assets/Scripts/Simulation/PinState.cs @@ -49,6 +49,50 @@ public static void Set4BitFrom8BitSource(ref uint state, uint source8bit, bool f } } + public static void Set8BitFrom16BitSource(ref uint state, uint source16bit, bool firstNibble) + { + ushort sourceBitStates = GetBitStates(source16bit); + ushort sourceTristateFlags = GetTristateFlags(source16bit); + + if (firstNibble) + { + const ushort mask = 0b11111111; + Set(ref state, (ushort)(sourceBitStates & mask), (ushort)(sourceTristateFlags & mask)); + } + else + { + const uint mask = 0b1111111100000000; + Set(ref state, (ushort)((sourceBitStates & mask) >> 8), (ushort)((sourceTristateFlags & mask) >> 8)); + } + } + + public static void Set4BitFrom16BitSource(ref uint state, uint source16Bit, int section) + { + ushort sourceBitStates = GetBitStates(source16Bit); + ushort sourceTristateFlags = GetTristateFlags(source16Bit); + + if (section == 0) + { + const ushort mask = 0b1111; + Set(ref state, (ushort)(sourceBitStates & mask), (ushort)(sourceTristateFlags & mask)); + } + else if (section == 1) + { + const uint mask = 0b11110000; + Set(ref state, (ushort)((sourceBitStates & mask) >> 4), (ushort)((sourceTristateFlags & mask) >> 4)); + } + else if (section == 2) + { + const uint mask = 0b111100000000; + Set(ref state, (ushort)((sourceBitStates & mask) >> 8), (ushort)((sourceTristateFlags & mask) >> 8)); + } + else if (section == 3) + { + const uint mask = 0b1111000000000000; + Set(ref state, (ushort)((sourceBitStates & mask) >> 12), (ushort)((sourceTristateFlags & mask) >> 12)); + } + } + public static void Set8BitFrom4BitSources(ref uint state, uint a, uint b) { ushort bitStates = (ushort)(GetBitStates(a) | (GetBitStates(b) << 4)); @@ -56,6 +100,24 @@ public static void Set8BitFrom4BitSources(ref uint state, uint a, uint b) Set(ref state, bitStates, tristateFlags); } + public static void Set16BitFrom4BitSources(ref uint state, uint a, uint b, uint c, uint d) + { + ushort bitStates1 = (ushort)(GetBitStates(a) | (GetBitStates(b) << 4)); + ushort tristateFlags1 = (ushort)((GetTristateFlags(a) & 0b1111) | ((GetTristateFlags(b) & 0b1111) << 4)); + ushort bitStates2 = (ushort)(GetBitStates(c) | (GetBitStates(d) << 4)); + ushort tristateFlags2 = (ushort)((GetTristateFlags(c) & 0b1111) | ((GetTristateFlags(d) & 0b1111) << 4)); + ushort bitStates = (ushort)(GetBitStates(bitStates1) | (GetBitStates(bitStates2) << 8)); + ushort tristateFlags = (ushort)((GetTristateFlags(bitStates1) & 0b11111111) | ((GetTristateFlags(bitStates2) & 0b11111111) << 8)); + Set(ref state, bitStates, tristateFlags); + } + + public static void Set16BitFrom8BitSources(ref uint state, uint a, uint b) + { + ushort bitStates = (ushort)(GetBitStates(a) | (GetBitStates(b) << 8)); + ushort tristateFlags = (ushort)((GetTristateFlags(a) & 0b11111111) | ((GetTristateFlags(b) & 0b11111111) << 8)); + Set(ref state, bitStates, tristateFlags); + } + public static void Toggle(ref uint state, int bitIndex) { diff --git a/Assets/Scripts/Simulation/SimChip.cs b/Assets/Scripts/Simulation/SimChip.cs index 5efec7c5..50eba0dd 100644 --- a/Assets/Scripts/Simulation/SimChip.cs +++ b/Assets/Scripts/Simulation/SimChip.cs @@ -20,6 +20,8 @@ public class SimChip public SimPin[] OutputPins = Array.Empty(); public SimChip[] SubChips = Array.Empty(); + public ChipDescription Description {get; private set;} + public SimChip() { @@ -32,11 +34,12 @@ public SimChip(ChipDescription desc, int id, uint[] internalState, SimChip[] sub ID = id; ChipType = desc.ChipType; IsBuiltin = ChipType != ChipType.Custom; + Description = desc; // ---- Create pins (don't allocate unnecessarily as very many sim chips maybe created!) ---- if (desc.InputPins.Length > 0) { - InputPins = new SimPin [desc.InputPins.Length]; + InputPins = new SimPin[desc.InputPins.Length]; for (int i = 0; i < InputPins.Length; i++) { InputPins[i] = CreateSimPinFromDescription(desc.InputPins[i], true, this); @@ -45,7 +48,7 @@ public SimChip(ChipDescription desc, int id, uint[] internalState, SimChip[] sub if (desc.OutputPins.Length > 0) { - OutputPins = new SimPin [desc.OutputPins.Length]; + OutputPins = new SimPin[desc.OutputPins.Length]; for (int i = 0; i < OutputPins.Length; i++) { OutputPins[i] = CreateSimPinFromDescription(desc.OutputPins[i], false, this); @@ -60,6 +63,10 @@ public SimChip(ChipDescription desc, int id, uint[] internalState, SimChip[] sub // first 256 bits = display buffer, next 256 bits = back buffer, last bit = clock state (to allow edge-trigger behaviour) InternalState = new uint[addressSize_8Bit * 2 + 1]; } + else if (ChipType is ChipType.DisplayRGBLED) + { + InternalState = new uint[3]; + } else if (ChipType is ChipType.DisplayDot) { // first 256 bits = display buffer, next 256 bits = back buffer, last bit = clock state (to allow edge-trigger behaviour) @@ -77,6 +84,14 @@ public SimChip(ChipDescription desc, int id, uint[] internalState, SimChip[] sub InternalState[i] = BitConverter.ToUInt32(randomBytes); } } + else if (ChipType is ChipType.DisplayUTF) + { + InternalState = new uint[16]; + } + else if (ChipType is ChipType.Complex_Internet_Interface) + { + InternalState = new uint[4 + 1 + 1000]; // 4 for ip, 1 for port, 1000 for response buffer + } // Load in serialized persistent state (rom data, etc.) else if (internalState is { Length: > 0 }) { diff --git a/Assets/Scripts/Simulation/SimKeyboardHelper.cs b/Assets/Scripts/Simulation/SimKeyboardHelper.cs index a224ec9f..518a57a7 100644 --- a/Assets/Scripts/Simulation/SimKeyboardHelper.cs +++ b/Assets/Scripts/Simulation/SimKeyboardHelper.cs @@ -8,13 +8,53 @@ public static class SimKeyboardHelper { public static readonly KeyCode[] ValidInputKeys = { - KeyCode.A, KeyCode.B, KeyCode.C, KeyCode.D, KeyCode.E, KeyCode.F, KeyCode.G, - KeyCode.H, KeyCode.I, KeyCode.J, KeyCode.K, KeyCode.L, KeyCode.M, KeyCode.N, - KeyCode.O, KeyCode.P, KeyCode.Q, KeyCode.R, KeyCode.S, KeyCode.T, KeyCode.U, - KeyCode.V, KeyCode.W, KeyCode.X, KeyCode.Y, KeyCode.Z, - + KeyCode.Backspace, + KeyCode.Delete, + KeyCode.Tab, + KeyCode.Clear, + KeyCode.Return, + KeyCode.Pause, + KeyCode.Escape, + KeyCode.Space, + KeyCode.Keypad0, KeyCode.Keypad1, KeyCode.Keypad2, KeyCode.Keypad3, KeyCode.Keypad4, + KeyCode.Keypad5, KeyCode.Keypad6, KeyCode.Keypad7, KeyCode.Keypad8, KeyCode.Keypad9, + KeyCode.KeypadPeriod, KeyCode.KeypadDivide, KeyCode.KeypadMultiply, KeyCode.KeypadMinus, + KeyCode.KeypadPlus, KeyCode.KeypadEnter, KeyCode.KeypadEquals, + KeyCode.UpArrow, KeyCode.DownArrow, KeyCode.RightArrow, KeyCode.LeftArrow, + KeyCode.Insert, KeyCode.Home, KeyCode.End, KeyCode.PageUp, KeyCode.PageDown, + KeyCode.F1, KeyCode.F2, KeyCode.F3, KeyCode.F4, KeyCode.F5, KeyCode.F6, + KeyCode.F7, KeyCode.F8, KeyCode.F9, KeyCode.F10, KeyCode.F11, KeyCode.F12, + KeyCode.F13, KeyCode.F14, KeyCode.F15, KeyCode.Alpha0, KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4, - KeyCode.Alpha5, KeyCode.Alpha6, KeyCode.Alpha7, KeyCode.Alpha8, KeyCode.Alpha9 + KeyCode.Alpha5, KeyCode.Alpha6, KeyCode.Alpha7, KeyCode.Alpha8, KeyCode.Alpha9, + KeyCode.Exclaim, KeyCode.DoubleQuote, KeyCode.Hash, KeyCode.Dollar, KeyCode.Percent, + KeyCode.Ampersand, KeyCode.Quote, KeyCode.LeftParen, KeyCode.RightParen, KeyCode.Asterisk, + KeyCode.Plus, KeyCode.Comma, KeyCode.Minus, KeyCode.Period, KeyCode.Slash, + KeyCode.Colon, KeyCode.Semicolon, KeyCode.Less, KeyCode.Equals, KeyCode.Greater, + KeyCode.Question, KeyCode.At, KeyCode.LeftBracket, KeyCode.Backslash, KeyCode.RightBracket, + KeyCode.Caret, KeyCode.Underscore, KeyCode.BackQuote, + KeyCode.A, KeyCode.B, KeyCode.C, KeyCode.D, KeyCode.E, KeyCode.F, + KeyCode.G, KeyCode.H, KeyCode.I, KeyCode.J, KeyCode.K, KeyCode.L, + KeyCode.M, KeyCode.N, KeyCode.O, KeyCode.P, KeyCode.Q, KeyCode.R, + KeyCode.S, KeyCode.T, KeyCode.U, KeyCode.V, KeyCode.W, KeyCode.X, + KeyCode.Y, KeyCode.Z, + KeyCode.LeftCurlyBracket, KeyCode.Pipe, KeyCode.RightCurlyBracket, KeyCode.Tilde, + KeyCode.Numlock, KeyCode.CapsLock, KeyCode.ScrollLock, + KeyCode.RightShift, KeyCode.LeftShift, KeyCode.RightControl, KeyCode.LeftControl, + KeyCode.RightAlt, KeyCode.LeftAlt, KeyCode.LeftMeta, KeyCode.LeftCommand, + KeyCode.LeftApple, KeyCode.LeftWindows, KeyCode.RightMeta, KeyCode.RightCommand, + KeyCode.RightApple, KeyCode.RightWindows, KeyCode.AltGr, + KeyCode.Help, KeyCode.Print, KeyCode.SysReq, KeyCode.Break, KeyCode.Menu, + KeyCode.WheelUp, KeyCode.WheelDown, + KeyCode.F16, KeyCode.F17, KeyCode.F18, KeyCode.F19, + KeyCode.F20, KeyCode.F21, KeyCode.F22, KeyCode.F23, KeyCode.F24, + KeyCode.Mouse0, KeyCode.Mouse1, KeyCode.Mouse2, KeyCode.Mouse3, + KeyCode.Mouse4, KeyCode.Mouse5, KeyCode.Mouse6, + KeyCode.JoystickButton0, KeyCode.JoystickButton1, KeyCode.JoystickButton2, KeyCode.JoystickButton3, + KeyCode.JoystickButton4, KeyCode.JoystickButton5, KeyCode.JoystickButton6, KeyCode.JoystickButton7, + KeyCode.JoystickButton8, KeyCode.JoystickButton9, KeyCode.JoystickButton10, KeyCode.JoystickButton11, + KeyCode.JoystickButton12, KeyCode.JoystickButton13, KeyCode.JoystickButton14, KeyCode.JoystickButton15, + KeyCode.JoystickButton16, KeyCode.JoystickButton17, KeyCode.JoystickButton18, KeyCode.JoystickButton19 }; static readonly HashSet KeyLookup = new(); diff --git a/Assets/Scripts/Simulation/Simulator.cs b/Assets/Scripts/Simulation/Simulator.cs index 1d777628..01decfb0 100644 --- a/Assets/Scripts/Simulation/Simulator.cs +++ b/Assets/Scripts/Simulation/Simulator.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Concurrent; using System.Diagnostics; +using System.Linq; using DLS.Description; using DLS.Game; +using DLS.External; using Random = System.Random; namespace DLS.Simulation @@ -276,6 +278,66 @@ static void ProcessBuiltinChip(SimChip chip) break; } + case ChipType.Complex_Internet_Interface: + { + // Pin mapping (adjust indices as needed) + var clockPin = chip.InputPins[0]; + var ip1 = chip.InputPins[1].State & 0xFFFF; + var ip2 = chip.InputPins[2].State & 0xFFFF; + var ip3 = chip.InputPins[3].State & 0xFFFF; + var ip4 = chip.InputPins[4].State & 0xFFFF; + var port = chip.InputPins[5].State & 0xFFFF; + var data1 = chip.InputPins[6].State & 0xFFFF; + var data2 = chip.InputPins[7].State & 0xFFFF; + var send = chip.InputPins[8].FirstBitHigh; + + // Internal state indices + const int PrevSendIdx = 0; + const int PrevClockIdx = 1; + const int BufferIndexIdx = 2; + const int BufferLenIdx = 3; + const int BufferStartIdx = 4; // buffer chars start here + const int BufferMaxLen = 128; + + // Latch inputs (for future use if needed) + // On SEND rising edge + bool prevSend = chip.InternalState[PrevSendIdx] != 0; + if (send && !prevSend) + { + string url = $"http://{ip1}.{ip2}.{ip3}.{ip4}:{port}/?d1={(char)data1}&d2={(char)data2}"; + string reply = ""; + try { + using (var client = new System.Net.WebClient()) + reply = client.DownloadString(url); + } catch { reply = "ERR"; } + int len = Math.Min(reply.Length, BufferMaxLen); + chip.InternalState[BufferLenIdx] = (uint)len; + chip.InternalState[BufferIndexIdx] = 0; + for (int i = 0; i < len; i++) + chip.InternalState[BufferStartIdx + i] = reply[i]; + } + chip.InternalState[PrevSendIdx] = send ? 1u : 0u; + + // On CLOCK rising edge, output next char from buffer + bool clock = clockPin.FirstBitHigh; + bool prevClock = chip.InternalState[PrevClockIdx] != 0; + uint bufferIndex = chip.InternalState[BufferIndexIdx]; + uint bufferLen = chip.InternalState[BufferLenIdx]; + // Output 1 if output is still going, 0 if done + chip.OutputPins[1].State = (bufferIndex < bufferLen) ? 1u : 0u; + if (clock && !prevClock && bufferIndex < bufferLen) + { + char c = (char)chip.InternalState[BufferStartIdx + bufferIndex]; + chip.OutputPins[0].State = c; + chip.InternalState[BufferIndexIdx] = bufferIndex + 1; + } + else if (!clock) + { + chip.OutputPins[0].State = 0; + } + chip.InternalState[PrevClockIdx] = clock ? 1u : 0u; + break; + } case ChipType.Split_4To1Bit: { uint inState4Bit = chip.InputPins[0].State; @@ -315,6 +377,49 @@ static void ProcessBuiltinChip(SimChip chip) PinState.Set8BitFrom4BitSources(ref out8.State, in4B.State, in4A.State); break; } + case ChipType.Merge_1To16Bit: + { + uint stateA = chip.InputPins[15].State & PinState.SingleBitMask; // lsb + uint stateB = chip.InputPins[14].State & PinState.SingleBitMask; + uint stateC = chip.InputPins[13].State & PinState.SingleBitMask; + uint stateD = chip.InputPins[12].State & PinState.SingleBitMask; + uint stateE = chip.InputPins[11].State & PinState.SingleBitMask; + uint stateF = chip.InputPins[10].State & PinState.SingleBitMask; + uint stateG = chip.InputPins[9].State & PinState.SingleBitMask; + uint stateH = chip.InputPins[8].State & PinState.SingleBitMask; + uint stateI = chip.InputPins[7].State & PinState.SingleBitMask; + uint stateJ = chip.InputPins[6].State & PinState.SingleBitMask; + uint stateK = chip.InputPins[5].State & PinState.SingleBitMask; + uint stateL = chip.InputPins[4].State & PinState.SingleBitMask; + uint stateM = chip.InputPins[3].State & PinState.SingleBitMask; + uint stateN = chip.InputPins[2].State & PinState.SingleBitMask; + uint stateO = chip.InputPins[1].State & PinState.SingleBitMask; + uint stateP = chip.InputPins[0].State & PinState.SingleBitMask; + chip.OutputPins[0].State = stateA | stateB << 1 | stateC << 2 + | stateD << 3 | stateE << 4 | stateF << 5 | stateG << 6 + | stateH << 7 | stateI << 8 | stateJ << 9 | stateK << 10 + | stateL << 11 | stateM << 12 | stateN << 13 | stateO << 14 + | stateP << 15; + break; + } + case ChipType.Merge_4To16Bit: + { + SimPin in4A = chip.InputPins[0]; + SimPin in4B = chip.InputPins[1]; + SimPin in4C = chip.InputPins[2]; + SimPin in4D = chip.InputPins[3]; + SimPin out16 = chip.OutputPins[0]; + PinState.Set16BitFrom4BitSources(ref out16.State, in4D.State, in4C.State, in4B.State, in4A.State); + break; + } + case ChipType.Merge_8To16Bit: + { + SimPin in8A = chip.InputPins[0]; + SimPin in8B = chip.InputPins[1]; + SimPin out16 = chip.OutputPins[0]; + PinState.Set16BitFrom8BitSources(ref out16.State, in8B.State, in8A.State); + break; + } case ChipType.Split_8To4Bit: { SimPin in8 = chip.InputPins[0]; @@ -337,6 +442,50 @@ static void ProcessBuiltinChip(SimChip chip) chip.OutputPins[7].State = (in8 >> 0) & PinState.SingleBitMask; break; } + case ChipType.Split_16To1Bit: + { + uint in16 = chip.InputPins[0].State; + chip.OutputPins[0].State = (in16 >> 15) & PinState.SingleBitMask; + chip.OutputPins[1].State = (in16 >> 14) & PinState.SingleBitMask; + chip.OutputPins[2].State = (in16 >> 13) & PinState.SingleBitMask; + chip.OutputPins[3].State = (in16 >> 12) & PinState.SingleBitMask; + chip.OutputPins[4].State = (in16 >> 11) & PinState.SingleBitMask; + chip.OutputPins[5].State = (in16 >> 10) & PinState.SingleBitMask; + chip.OutputPins[6].State = (in16 >> 9) & PinState.SingleBitMask; + chip.OutputPins[7].State = (in16 >> 8) & PinState.SingleBitMask; + chip.OutputPins[8].State = (in16 >> 7) & PinState.SingleBitMask; + chip.OutputPins[9].State = (in16 >> 6) & PinState.SingleBitMask; + chip.OutputPins[10].State = (in16 >> 5) & PinState.SingleBitMask; + chip.OutputPins[11].State = (in16 >> 4) & PinState.SingleBitMask; + chip.OutputPins[12].State = (in16 >> 3) & PinState.SingleBitMask; + chip.OutputPins[13].State = (in16 >> 2) & PinState.SingleBitMask; + chip.OutputPins[14].State = (in16 >> 1) & PinState.SingleBitMask; + chip.OutputPins[15].State = (in16 >> 0) & PinState.SingleBitMask; + break; + } + case ChipType.Split_16To4Bit: + { + + SimPin in16 = chip.InputPins[0]; + SimPin out4A = chip.OutputPins[0]; + SimPin out4B = chip.OutputPins[1]; + SimPin out4C = chip.OutputPins[2]; + SimPin out4D = chip.OutputPins[3]; + PinState.Set4BitFrom16BitSource(ref out4A.State, in16.State, 3); + PinState.Set4BitFrom16BitSource(ref out4B.State, in16.State, 2); + PinState.Set4BitFrom16BitSource(ref out4C.State, in16.State, 1); + PinState.Set4BitFrom16BitSource(ref out4D.State, in16.State, 0); + break; + } + case ChipType.Split_16To8Bit: + { + SimPin in16 = chip.InputPins[0]; + SimPin out8A = chip.OutputPins[0]; + SimPin out8B = chip.OutputPins[1]; + PinState.Set8BitFrom16BitSource(ref out8A.State, in16.State, false); + PinState.Set8BitFrom16BitSource(ref out8B.State, in16.State, true); + break; + } case ChipType.TriStateBuffer: { SimPin dataPin = chip.InputPins[0]; @@ -354,6 +503,16 @@ static void ProcessBuiltinChip(SimChip chip) chip.OutputPins[0].State = isHeld ? PinState.LogicHigh : PinState.LogicLow; break; } + case ChipType.DisplayRGBLED: + { + uint redPin = chip.InputPins[1].State; + uint greenPin = chip.InputPins[2].State; + uint bluePin = chip.InputPins[3].State; + chip.InternalState[0] = redPin; + chip.InternalState[1] = greenPin; + chip.InternalState[2] = bluePin; + break; + } case ChipType.DisplayRGB: { const uint addressSpace = 256; @@ -385,7 +544,7 @@ static void ProcessBuiltinChip(SimChip chip) else if (PinState.FirstBitHigh(writePin)) { uint addressIndex = PinState.GetBitStates(addressPin) + addressSpace; - uint data = (uint)(PinState.GetBitStates(redPin) | (PinState.GetBitStates(greenPin) << 4) | (PinState.GetBitStates(bluePin) << 8)); + uint data = (uint)(PinState.GetBitStates(redPin) | (PinState.GetBitStates(greenPin) << 8) | (PinState.GetBitStates(bluePin) << 16)); chip.InternalState[addressIndex] = data; } @@ -401,9 +560,9 @@ static void ProcessBuiltinChip(SimChip chip) // Output current pixel colour uint colData = chip.InternalState[PinState.GetBitStates(addressPin)]; - chip.OutputPins[0].State = (ushort)((colData >> 0) & 0b1111); // red - chip.OutputPins[1].State = (ushort)((colData >> 4) & 0b1111); // green - chip.OutputPins[2].State = (ushort)((colData >> 8) & 0b1111); // blue + chip.OutputPins[0].State = (ushort)((colData >> 0) & 0b11111111); // red + chip.OutputPins[1].State = (ushort)((colData >> 8) & 0b11111111); // green + chip.OutputPins[2].State = (ushort)((colData >> 16) & 0b11111111); // blue break; } @@ -490,7 +649,7 @@ static void ProcessBuiltinChip(SimChip chip) break; } - case ChipType.Rom_256x16: + case ChipType.Rom_256x2x8: { const int ByteMask = 0b11111111; uint address = PinState.GetBitStates(chip.InputPins[0].State); @@ -506,6 +665,98 @@ static void ProcessBuiltinChip(SimChip chip) audioState.RegisterNote(freqIndex, (uint)volumeIndex); break; } + case ChipType.Modded: + { + if (ModdedChipCreator.TryGetSimulationFunction(chip.Description, out var simulationFunction)) + { + uint[] inputStates = chip.InputPins.Select(pin => (uint) PinState.GetBitStates(pin.State)).ToArray(); + uint[] outputStates = chip.OutputPins.Select(pin => (uint) PinState.GetBitStates(pin.State)).ToArray(); + + // Call the modded chip's simulation function + simulationFunction(inputStates, outputStates); + + for (int i = 0; i < chip.OutputPins.Length; i++) + { + chip.OutputPins[i].State = outputStates[i]; + } + } + break; + } + case ChipType.Rom_256x16: + { + const int ByteMask = 0b1111111111111111; + uint address = PinState.GetBitStates(chip.InputPins[0].State); + uint data = chip.InternalState[address]; + chip.OutputPins[0].State = (ushort)(data & ByteMask); + break; + } + case ChipType.Rom_256x32: + { + const int ByteMask = 0b1111111111111111; + uint address = PinState.GetBitStates(chip.InputPins[0].State); + uint data = chip.InternalState[address]; + chip.OutputPins[0].State = (ushort)((data >> 16) & ByteMask); + chip.OutputPins[1].State = (ushort)(data & ByteMask); + break; + } + case ChipType.DisplayUTF: + { + int addressPin = PinState.GetBitStates(chip.InputPins[1].State); + uint dataPin = PinState.GetBitStates(chip.InputPins[2].State); + if (chip.InputPins[0].State == PinState.LogicHigh) + { + chip.InternalState[addressPin] = dataPin; + } + break; + } + case ChipType.PortIn_1Bit: + { + uint inputState = PortHttpServer.GetPortInValue((uint)chip.ID); + chip.OutputPins[0].State = inputState; + break; + } + case ChipType.PortOut_1Bit: + { + uint outputState = chip.InputPins[0].State; + PortHttpServer.SetPortOutValue((uint)chip.ID, outputState); + break; + } + case ChipType.PortIn_4Bit: + { + uint inputState = PortHttpServer.GetPortInValue((uint)chip.ID); + chip.OutputPins[0].State = inputState; + break; + } + case ChipType.PortOut_4Bit: + { + uint outputState = chip.InputPins[0].State; + PortHttpServer.SetPortOutValue((uint)chip.ID, outputState); + break; + } + case ChipType.PortIn_8Bit: + { + uint inputState = PortHttpServer.GetPortInValue((uint)chip.ID); + chip.OutputPins[0].State = inputState; + break; + } + case ChipType.PortOut_8Bit: + { + uint outputState = chip.InputPins[0].State; + PortHttpServer.SetPortOutValue((uint)chip.ID, outputState); + break; + } + case ChipType.PortIn_16Bit: + { + uint inputState = PortHttpServer.GetPortInValue((uint)chip.ID); + chip.OutputPins[0].State = inputState; + break; + } + case ChipType.PortOut_16Bit: + { + uint outputState = chip.InputPins[0].State; + PortHttpServer.SetPortOutValue((uint)chip.ID, outputState); + break; + } // ---- Bus types ---- default: { diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 8908a3b3..0c05a1e6 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -387,6 +387,103 @@ PlayerSettings: m_Height: 36 m_Kind: 0 m_SubKind: + - m_BuildTarget: iPhone + m_Icons: + - m_Textures: [] + m_Width: 180 + m_Height: 180 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 0 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 167 + m_Height: 167 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 152 + m_Height: 152 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 76 + m_Height: 76 + m_Kind: 0 + m_SubKind: iPad + - m_Textures: [] + m_Width: 120 + m_Height: 120 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 80 + m_Height: 80 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 3 + m_SubKind: iPad + - m_Textures: [] + m_Width: 87 + m_Height: 87 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 58 + m_Height: 58 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 29 + m_Height: 29 + m_Kind: 1 + m_SubKind: iPad + - m_Textures: [] + m_Width: 60 + m_Height: 60 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPhone + - m_Textures: [] + m_Width: 40 + m_Height: 40 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 20 + m_Height: 20 + m_Kind: 2 + m_SubKind: iPad + - m_Textures: [] + m_Width: 1024 + m_Height: 1024 + m_Kind: 4 + m_SubKind: App Store m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 0 @@ -428,7 +525,7 @@ PlayerSettings: m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: WindowsStandaloneSupport - m_APIs: 1200000002000000150000000b000000 + m_APIs: 120000000200000015000000 m_Automatic: 1 m_BuildTargetVRSettings: [] m_DefaultShaderChunkSizeInMB: 16 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 8678d93f..7b22109e 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 6000.0.46f1 -m_EditorVersionWithRevision: 6000.0.46f1 (fb93bc360d3a) +m_EditorVersion: 6000.0.47f1 +m_EditorVersionWithRevision: 6000.0.47f1 (2ad1ed33fd3b) diff --git a/TestData/.DS_Store b/TestData/.DS_Store new file mode 100644 index 00000000..8e34017d Binary files /dev/null and b/TestData/.DS_Store differ diff --git a/TestData/Mods/ExampleMod.dls b/TestData/Mods/ExampleMod.dls new file mode 100644 index 00000000..383686a2 Binary files /dev/null and b/TestData/Mods/ExampleMod.dls differ diff --git a/TestData/Projects/.DS_Store b/TestData/Projects/.DS_Store new file mode 100644 index 00000000..27b3e175 Binary files /dev/null and b/TestData/Projects/.DS_Store differ diff --git a/TestData/Projects/Keyboard+DisplayTest/Chips/AND.json b/TestData/Projects/Keyboard+DisplayTest/Chips/AND.json new file mode 100644 index 00000000..c13939f6 --- /dev/null +++ b/TestData/Projects/Keyboard+DisplayTest/Chips/AND.json @@ -0,0 +1,136 @@ +{ + "DLSVersion": "2.1.6", + "Name": "AND", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.575, + "y": 0.5 + }, + "Colour": { + "r": 0.465287626, + "g": 0.492547929, + "b": 0.3728487, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1744000023, + "Position":{ + "x":-6.48522, + "y":-1.19518 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":874710336, + "Position":{ + "x":-6.48522, + "y":-1.71018 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1738559323, + "Position":{ + "x":-0.20418, + "y":-1.36191 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"NOT", + "ID":2024659342, + "Label":"", + "Position":{ + "x":-2.15398, + "y":-1.37379 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":579470015}], + "InternalData":null + }, + { + "Name":"NAND", + "ID":159625319, + "Label":"", + "Position":{ + "x":-4.52054, + "y":-1.37379 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":579470015, + "PinOwnerID":2024659342 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1738559323 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":159625319 + }, + "TargetPinAddress":{ + "PinID":2122622442, + "PinOwnerID":2024659342 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1744000023 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":159625319 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":874710336 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":159625319 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/Keyboard+DisplayTest/Chips/Not.json b/TestData/Projects/Keyboard+DisplayTest/Chips/Not.json new file mode 100644 index 00000000..48593b35 --- /dev/null +++ b/TestData/Projects/Keyboard+DisplayTest/Chips/Not.json @@ -0,0 +1,100 @@ +{ + "DLSVersion": "2.1.6", + "Name": "NOT", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.575, + "y": 0.375 + }, + "Colour": { + "r": 0.202566788, + "g": 0.371930659, + "b": 0.602506638, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":2122622442, + "Position":{ + "x":-5.9494, + "y":-0.064 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":579470015, + "Position":{ + "x":-1.70746, + "y":0.03125 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"NAND", + "ID":1078049905, + "Label":"", + "Position":{ + "x":-4.02937, + "y":-0.10865 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1078049905 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":579470015 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2122622442 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1078049905 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2122622442 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1078049905 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/Keyboard+DisplayTest/Chips/a.json b/TestData/Projects/Keyboard+DisplayTest/Chips/a.json new file mode 100644 index 00000000..e565c4ff --- /dev/null +++ b/TestData/Projects/Keyboard+DisplayTest/Chips/a.json @@ -0,0 +1,21 @@ +{ + "DLSVersion": "2.1.6", + "Name": "a", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.37, + "y": 0.375 + }, + "Colour": { + "r": 0.211813927, + "g": 0.2452126, + "b": 0.03325461, + "a": 1 + }, + "InputPins":[], + "OutputPins":[], + "SubChips":[], + "Wires":[], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/Keyboard+DisplayTest/ProjectDescription.json b/TestData/Projects/Keyboard+DisplayTest/ProjectDescription.json new file mode 100644 index 00000000..eaa8e8e4 --- /dev/null +++ b/TestData/Projects/Keyboard+DisplayTest/ProjectDescription.json @@ -0,0 +1,79 @@ +{ + "ProjectName": "Keyboard+DisplayTest", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-06-15T15:37:54.989-07:00", + "LastSaveTime": "2025-06-15T16:33:09.390-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[ + "a", + "NOT", + "AND" + ], + "StarredList":[ + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"OTHER", + "IsCollection":true + }, + { + "Name":"NAND", + "IsCollection":false + }, + { + "Name":"a", + "IsCollection":false + }, + { + "Name":"KEY", + "IsCollection":false + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":true, + "Name":"BASIC" + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":true, + "Name":"IN/OUT" + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":true, + "Name":"MERGE/SPLIT" + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":true, + "Name":"BUS" + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","Text Display"], + "IsToggledOpen":true, + "Name":"DISPLAY" + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":true, + "Name":"MEMORY" + }, + { + "Chips":["BUZZER","a","NOT","AND"], + "IsToggledOpen":true, + "Name":"OTHER" + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/MainTest/Chips/BuzzTest.json b/TestData/Projects/MainTest/Chips/BuzzTest.json index 40fc6f42..1914c565 100644 --- a/TestData/Projects/MainTest/Chips/BuzzTest.json +++ b/TestData/Projects/MainTest/Chips/BuzzTest.json @@ -1,5 +1,5 @@ { - "DLSVersion": "2.1.5", + "DLSVersion": "2.1.6", "Name": "BuzzTest", "NameLocation": 0, "ChipType": 0, @@ -49,6 +49,17 @@ }, "OutputPinColourInfo":[], "InternalData":null + }, + { + "Name":"ROM 256×32", + "ID":1527631395, + "Label":"", + "Position":{ + "x":-5.3733, + "y":3.95155 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2}], + "InternalData":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] } ], "Wires":[ diff --git a/TestData/Projects/MainTest/Chips/TEST MergeSplit.json b/TestData/Projects/MainTest/Chips/TEST MergeSplit.json index c1987d1e..4390bead 100644 --- a/TestData/Projects/MainTest/Chips/TEST MergeSplit.json +++ b/TestData/Projects/MainTest/Chips/TEST MergeSplit.json @@ -3,7 +3,7 @@ "NameLocation": 0, "ChipType": 0, "Size": { - "x": 1.625, + "x": 5.01262, "y": 6.625 }, "Colour": { @@ -301,6 +301,17 @@ }, "OutputPinColourInfo":[], "InternalData":null + }, + { + "Name":"RGB DISPLAY", + "ID":297331123, + "Label":"", + "Position":{ + "x":-19.89548, + "y":22.16219 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":8},{"PinColour":0,"PinID":9},{"PinColour":0,"PinID":10}], + "InternalData":null } ], "Wires":[ @@ -655,5 +666,14 @@ "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] } ], - "Displays": null + "Displays":[ + { + "SubChipID":297331123, + "Position":{ + "x":-0.15201, + "y":-0.33116 + }, + "Scale":1.0 + } + ] } \ No newline at end of file diff --git a/TestData/Projects/MainTest/Chips/a.json b/TestData/Projects/MainTest/Chips/a.json new file mode 100644 index 00000000..7d569441 --- /dev/null +++ b/TestData/Projects/MainTest/Chips/a.json @@ -0,0 +1,60 @@ +{ + "DLSVersion": "2.1.6", + "Name": "a", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.37, + "y": 0.375 + }, + "Colour": { + "r": 0.193169072, + "g": 0.276665062, + "b": 0.469123155, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1564547375, + "Position":{ + "x":-31.69062, + "y":21.83496 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[], + "SubChips":[ + { + "Name":"test", + "ID":1357902349, + "Label":"", + "Position":{ + "x":2.50714, + "y":0.91324 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1302572579}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1564547375 + }, + "TargetPinAddress":{ + "PinID":1095404874, + "PinOwnerID":1357902349 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/MainTest/Chips/display test.json b/TestData/Projects/MainTest/Chips/display test.json new file mode 100644 index 00000000..c1eb7532 --- /dev/null +++ b/TestData/Projects/MainTest/Chips/display test.json @@ -0,0 +1,73 @@ +{ + "DLSVersion": "2.1.5", + "DependsOnModIDs":[ + "exmod" + ], + "Name": "display test", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.25, + "y": 0.5 + }, + "Colour": { + "r": 0.378672957, + "g": 0.4155134, + "b": 0.5271267, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":2122438459, + "Position":{ + "x":-2.38431, + "y":1.92406 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[], + "SubChips":[ + { + "Name":"HUGE-LED", + "ID":1102152879, + "Label":"", + "Position":{ + "x":0.75733, + "y":1.38436 + }, + "OutputPinColourInfo":[], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2122438459 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1102152879 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays":[ + { + "SubChipID":1102152879, + "Position":{ + "x":-0.00286, + "y":-0.0116 + }, + "Scale":0.202367663, + "DependsOnModIDs":[] + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/MainTest/Chips/test.json b/TestData/Projects/MainTest/Chips/test.json new file mode 100644 index 00000000..51a6530a --- /dev/null +++ b/TestData/Projects/MainTest/Chips/test.json @@ -0,0 +1,178 @@ +{ + "DLSVersion": "2.1.6", + "Name": "test", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 39.60004, + "y": 1.125 + }, + "Colour": { + "r": 0.402801663, + "g": 0.206639662, + "b": 0.6054723, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1095404874, + "Position":{ + "x":-8.92092, + "y":5.53458 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":141095185, + "Position":{ + "x":-3.76235, + "y":0.65436 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":893919584, + "Position":{ + "x":-3.84573, + "y":-0.12514 + }, + "BitCount":4, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1302572579, + "Position":{ + "x":-1.34868, + "y":2.23541 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"BUZZER", + "ID":2106109642, + "Label":"", + "Position":{ + "x":-0.375, + "y":-0.04762 + }, + "OutputPinColourInfo":[], + "InternalData":null + }, + { + "Name":"ROM 256×32", + "ID":1527631395, + "Label":"", + "Position":{ + "x":-5.3733, + "y":3.95155 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2}], + "InternalData":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + }, + { + "Name":"KEY", + "ID":244284976, + "Label":"", + "Position":{ + "x":-3.11203, + "y":2.16543 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":[9] + }, + { + "Name":"Text Display", + "ID":1412209631, + "Label":"", + "Position":{ + "x":13.88132, + "y":5.13716 + }, + "OutputPinColourInfo":[], + "InternalData":[1] + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":893919584 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":2106109642 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":141095185 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":2106109642 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":244284976 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1302572579 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-1.98527,"y":2.17179},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1095404874 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1412209631 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays":[ + { + "SubChipID":1412209631, + "Position":{ + "x":-0.0266, + "y":-0.04706 + }, + "Scale":1.0 + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/MainTest/ProjectDescription.json b/TestData/Projects/MainTest/ProjectDescription.json index 6d1823ff..560eaede 100644 --- a/TestData/Projects/MainTest/ProjectDescription.json +++ b/TestData/Projects/MainTest/ProjectDescription.json @@ -1,17 +1,17 @@ { "ProjectName": "MainTest", - "DLSVersion_LastSaved": "2.1.5", + "DLSVersion_LastSaved": "2.1.6", "DLSVersion_EarliestCompatible": "2.0.0", - "CreationTime": "2025-03-14T18:23:30.404+01:00", - "LastSaveTime": "2025-05-04T09:15:41.061+02:00", + "CreationTime": "2025-03-14T10:23:30.404-07:00", + "LastSaveTime": "2025-06-15T15:34:30.626-07:00", "Prefs_MainPinNamesDisplayMode": 2, "Prefs_ChipPinNamesDisplayMode": 1, "Prefs_GridDisplayMode": 1, "Prefs_Snapping": 0, "Prefs_StraightWires": 0, "Prefs_SimPaused": false, - "Prefs_SimTargetStepsPerSecond": 150, - "Prefs_SimStepsPerClockTick": 6, + "Prefs_SimTargetStepsPerSecond": 50000, + "Prefs_SimStepsPerClockTick": 5000, "AllCustomChipNames":[ "AND", "D-LATCH", @@ -62,7 +62,9 @@ "RAM-sync", "TEST MergeSplit", "#", - "BuzzTest" + "BuzzTest", + "test", + "a" ], "StarredList":[ { @@ -96,51 +98,59 @@ { "Name":"BuzzTest", "IsCollection":false + }, + { + "Name":"test", + "IsCollection":false + }, + { + "Name":"a", + "IsCollection":false } ], "ChipCollections":[ { "Chips":["NAND","AND","NOT","NOR","XOR","OR","KEY","CLOCK","3-STATE BUFFER"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"BASICS" }, { "Chips":["IN-1","IN-4","IN-8","OUT-1","OUT-4","OUT-8"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"IN/OUT" }, { "Chips":["1-4BIT","1-8BIT","4-8BIT","8-4BIT","8-1BIT","4-1BIT"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"MERGE/SPLIT" }, { "Chips":["7-SEGMENT","DECIMAL-4","DECIMAL-8","DOT DISPLAY","RGB DISPLAY","LED"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"DISPLAY" }, { "Chips":["BUS-1","BUS-4","BUS-8"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"BUS" }, { "Chips":["REGISTER-4","REG-8"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"MEMORY" }, { "Chips":["D-LATCH","FLIP-FLOP","OR-8","MEM-1","NOT-8","AND(8,1)","MUX-8","PC","BUF-8","ALU-8","DECODE-3","AND-3","CONTROL UNIT","TOGGLE","FLAGS","DISP-7","demo","7-SEGMENT DRIVER","DABBLE","LSB","LSHIFT-8","DOUBLE DABBLE","ALU","BUS BUFFER","MEM-256","REGISTER-8","XNOR","EQUALS-8","ADDER-4","DECODER-2","ADDER-8","ADDER","MEM-16","REGISTER-1","AND-8","RAM-256×8 (async)","ROM 256×16"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"KEEP" }, { "Chips":["WIP2","RAM-sync"], - "IsToggledOpen":false, + "IsToggledOpen":true, "Name":"TEST" }, { - "Chips":["PULSE","TEST MergeSplit"], + "Chips":["PULSE","TEST MergeSplit","IN-16","OUT-16","16-1BIT","16-4BIT","16-8BIT","1-16BIT","4-16BIT","8-16BIT","RGBLED","BUS-16","#","ROM 256×x2x8","ROM 256×32","BUZZER","BuzzTest","0x25D9","Ascii 8Bit Display◙","Text Display","test","a"], "IsToggledOpen":true, "Name":"OTHER" } diff --git a/TestData/Projects/a/Chips/as.json b/TestData/Projects/a/Chips/as.json new file mode 100644 index 00000000..2adef8f9 --- /dev/null +++ b/TestData/Projects/a/Chips/as.json @@ -0,0 +1,97 @@ +{ + "DLSVersion": "2.1.6", + "Name": "as", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.425, + "y": 0.5 + }, + "Colour": { + "r": 0.440327048, + "g": 0.27677995, + "b": 0.210211426, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":21859886, + "Position":{ + "x":-2.5, + "y":1.6087 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":856870015, + "Position":{ + "x":-2.5, + "y":0.6712 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"PORT-IN-16", + "ID":1338614924, + "Label":"", + "Position":{ + "x":-6.13768, + "y":0.53623 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":null + }, + { + "Name":"PORT-OUT-16", + "ID":1404637262, + "Label":"", + "Position":{ + "x":2.26812, + "y":1.73913 + }, + "OutputPinColourInfo":[], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1338614924 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":856870015 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":21859886 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1404637262 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/a/ProjectDescription.json b/TestData/Projects/a/ProjectDescription.json new file mode 100644 index 00000000..1ef538cb --- /dev/null +++ b/TestData/Projects/a/ProjectDescription.json @@ -0,0 +1,73 @@ +{ + "ProjectName": "a", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-05-07T05:29:52.555-07:00", + "LastSaveTime": "2025-06-17T11:47:50.582-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[ + "as" + ], + "StarredList":[ + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"NAND", + "IsCollection":false + }, + { + "Name":"as", + "IsCollection":false + }, + { + "Name":"OTHER", + "IsCollection":true + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":false, + "Name":"BASIC" + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":false, + "Name":"IN/OUT" + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":false, + "Name":"MERGE/SPLIT" + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":false, + "Name":"BUS" + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","A"], + "IsToggledOpen":false, + "Name":"DISPLAY" + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":false, + "Name":"MEMORY" + }, + { + "Chips":["Text Display","BUZZER","PORT-IN-1","PORT-IN-4","PORT-IN-8","PORT-IN-16","PORT-OUT-1","PORT-OUT-4","PORT-OUT-8","PORT-OUT-16","as"], + "IsToggledOpen":false, + "Name":"OTHER" + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/abc/.DS_Store b/TestData/Projects/abc/.DS_Store new file mode 100644 index 00000000..994ebbbc Binary files /dev/null and b/TestData/Projects/abc/.DS_Store differ diff --git a/TestData/Projects/abc/Chips/16 3 state buff.json b/TestData/Projects/abc/Chips/16 3 state buff.json new file mode 100644 index 00000000..fb991b3e --- /dev/null +++ b/TestData/Projects/abc/Chips/16 3 state buff.json @@ -0,0 +1,956 @@ +{ + "DLSVersion": "2.1.6", + "Name": "16 3 state buff", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.625, + "y": 0.75 + }, + "Colour": { + "r": 0.640962362, + "g": 0.895913243, + "b": 0.7936983, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":182396547, + "Position":{ + "x":-9.97902, + "y":-4.57995 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":47629555, + "Position":{ + "x":-8.29644, + "y":-10.84288 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1901857811, + "Position":{ + "x":6.56633, + "y":-5.42124 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"3-STATE BUFFER", + "ID":2098103820, + "Label":"", + "Position":{ + "x":-0.70372, + "y":0.4258 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":1456722698, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-0.3292 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":245273141, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-1.0842 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":1279527411, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-1.8392 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":8602491, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-2.5942 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":1983008968, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-3.3492 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":1775661813, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-4.1042 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":446391824, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-4.85919 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":2098673202, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-5.61419 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":728634651, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-6.36919 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":1275819122, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-7.12419 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":623355711, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-7.87919 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":911016900, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-8.63419 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":21475755, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-9.38919 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":742235194, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-10.1442 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":753559998, + "Label":"", + "Position":{ + "x":-0.70372, + "y":-10.8992 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"16-1BIT", + "ID":141386480, + "Label":"", + "Position":{ + "x":-7.36168, + "y":-4.70459 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4},{"PinColour":0,"PinID":5},{"PinColour":0,"PinID":6},{"PinColour":0,"PinID":7},{"PinColour":0,"PinID":8},{"PinColour":0,"PinID":9},{"PinColour":0,"PinID":10},{"PinColour":0,"PinID":11},{"PinColour":0,"PinID":12},{"PinColour":0,"PinID":13},{"PinColour":0,"PinID":14},{"PinColour":0,"PinID":15},{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":515956927, + "Label":"", + "Position":{ + "x":3.73088, + "y":-5.48356 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":182396547 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":141386480 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":515956927 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1901857811 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":753559998 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":2098103820 + }, + "ConnectionType":1, + "ConnectedWireIndex":2, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-11.06718},{"x":-1.94153,"y":0.28083},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1456722698 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-0.59161},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":245273141 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-1.33943},{"x":-1.87772,"y":-1.30827},{"x":-2.00235,"y":-1.18363},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1279527411 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-2.02492},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":8602491 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-2.76296},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1983008968 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-3.55418},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1775661813 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-4.29592},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":446391824 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-5.05098},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":2098673202 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-5.84238},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":728634651 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-6.59028},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1275819122 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-7.30104},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":623355711 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-8.05628},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":21475755 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-9.56676},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":911016900 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-8.85595},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":47629555 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":742235194 + }, + "ConnectionType":1, + "ConnectedWireIndex":3, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.94153,"y":-10.23315},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":753559998 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":15, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":742235194 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":14, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":21475755 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":13, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":911016900 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":12, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":623355711 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":11, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1275819122 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":10, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":728634651 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":9, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":2098673202 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":8, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":446391824 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":7, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1775661813 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":6, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1983008968 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":5, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":8602491 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1279527411 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":245273141 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1456722698 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":141386480 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":2098103820 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":2098103820 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1456722698 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":245273141 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1279527411 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":8602491 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1983008968 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1775661813 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":446391824 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":2098673202 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":728634651 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1275819122 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":623355711 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":911016900 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":21475755 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":742235194 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":753559998 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":515956927 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/2-bit decoder.json b/TestData/Projects/abc/Chips/2-bit decoder.json new file mode 100644 index 00000000..72819286 --- /dev/null +++ b/TestData/Projects/abc/Chips/2-bit decoder.json @@ -0,0 +1,353 @@ +{ + "DLSVersion": "2.1.6", + "Name": "2-bit decoder", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.175, + "y": 1.0 + }, + "Colour": { + "r": 0.09351207, + "g": 0.604693353, + "b": 0.8083695, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1725442598, + "Position":{ + "x":-9.00894, + "y":3.76029 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":2082927019, + "Position":{ + "x":-9.00894, + "y":3.24529 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":788553274, + "Position":{ + "x":1.42031, + "y":3.91575 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"OUT", + "ID":250382178, + "Position":{ + "x":1.42031, + "y":3.40075 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"OUT", + "ID":1932349665, + "Position":{ + "x":1.42031, + "y":2.88575 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"OUT", + "ID":1784140084, + "Position":{ + "x":1.42031, + "y":2.37075 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"AND", + "ID":956782436, + "Label":"", + "Position":{ + "x":-0.39976, + "y":4.17889 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":745142993, + "Label":"", + "Position":{ + "x":-0.39976, + "y":3.54889 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1376884092, + "Label":"", + "Position":{ + "x":-0.39976, + "y":2.91889 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1130341722, + "Label":"", + "Position":{ + "x":-0.39976, + "y":2.28889 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"not", + "ID":2038339868, + "Label":"", + "Position":{ + "x":-6.51779, + "y":2.11762 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":2003355182, + "Label":"", + "Position":{ + "x":-6.51779, + "y":1.61262 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":956782436 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":788553274 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":745142993 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":250382178 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.03881,"y":3.52104},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1376884092 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1932349665 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1130341722 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1784140084 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2082927019 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":2003355182 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-7.96507,"y":3.24529},{"x":-7.96507,"y":1.56941},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1725442598 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":2038339868 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-7.72386,"y":3.80611},{"x":-7.72386,"y":2.11762},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":2003355182 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1130341722 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":2038339868 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1130341722 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2082927019 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1376884092 + }, + "ConnectionType":1, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-7.96507,"y":2.38076},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":2038339868 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1376884092 + }, + "ConnectionType":1, + "ConnectedWireIndex":7, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.18954,"y":2.38749},{"x":-1.18954,"y":3.01669},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":2003355182 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":745142993 + }, + "ConnectionType":1, + "ConnectedWireIndex":6, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.03692,"y":2.12999},{"x":-1.03692,"y":3.36754},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1725442598 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":745142993 + }, + "ConnectionType":1, + "ConnectedWireIndex":5, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-7.72386,"y":3.23597},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2082927019 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":956782436 + }, + "ConnectionType":1, + "ConnectedWireIndex":8, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.29793,"y":2.75975},{"x":-1.29793,"y":3.95961},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1725442598 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":956782436 + }, + "ConnectionType":1, + "ConnectedWireIndex":11, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-1.12443,"y":3.64727},{"x":-1.12443,"y":4.31046},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/8 Bit Match Checker.json b/TestData/Projects/abc/Chips/8 Bit Match Checker.json new file mode 100644 index 00000000..651eaa84 --- /dev/null +++ b/TestData/Projects/abc/Chips/8 Bit Match Checker.json @@ -0,0 +1,707 @@ +{ + "DLSVersion": "2.1.6", + "Name": "8 Bit Match Checker", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.85, + "y": 1.0 + }, + "Colour": { + "r": 0.27496928, + "g": 0.0036530022, + "b": 0.901773155, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1051149185, + "Position":{ + "x":-6.35511, + "y":-4.06876 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":2110222065, + "Position":{ + "x":-6.35511, + "y":-4.58626 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":297589187, + "Position":{ + "x":6.73032, + "y":-4.59976 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"8-1BIT", + "ID":412150185, + "Label":"", + "Position":{ + "x":-3.70009, + "y":-3.17743 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4},{"PinColour":0,"PinID":5},{"PinColour":0,"PinID":6},{"PinColour":0,"PinID":7},{"PinColour":0,"PinID":8}], + "InternalData":null + }, + { + "Name":"8-1BIT", + "ID":1758519169, + "Label":"", + "Position":{ + "x":-3.70009, + "y":-5.30743 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4},{"PinColour":0,"PinID":5},{"PinColour":0,"PinID":6},{"PinColour":0,"PinID":7},{"PinColour":0,"PinID":8}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1097312849, + "Label":"", + "Position":{ + "x":2.1599, + "y":-3.68947 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":194325973, + "Label":"", + "Position":{ + "x":2.1599, + "y":-4.31947 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":498450802, + "Label":"", + "Position":{ + "x":2.1599, + "y":-4.94947 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":202569846, + "Label":"", + "Position":{ + "x":2.1599, + "y":-5.57947 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1453487960, + "Label":"", + "Position":{ + "x":3.69601, + "y":-4.31529 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":833378471, + "Label":"", + "Position":{ + "x":3.69601, + "y":-4.94529 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":193118342, + "Label":"", + "Position":{ + "x":5.04249, + "y":-4.61872 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1666896996, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-1.98268 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":979496394, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-2.61268 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":2043676905, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-3.24268 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":2004145005, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-3.87268 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1707049159, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-4.50268 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":591568028, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-5.13267 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":312801216, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-5.76267 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1087791604, + "Label":"", + "Position":{ + "x":-0.0779, + "y":-6.39267 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":193118342 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":297589187 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":833378471 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":193118342 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1453487960 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":193118342 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":202569846 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":833378471 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":498450802 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":833378471 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":194325973 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1453487960 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1097312849 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1453487960 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2110222065 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1758519169 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1051149185 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":412150185 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1666896996 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1097312849 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":979496394 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1097312849 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":2043676905 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":194325973 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":1.74268,"y":-4.14461},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":2004145005 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":194325973 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1707049159 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":498450802 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":591568028 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":498450802 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":312801216 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":202569846 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1087791604 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":202569846 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":8, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1087791604 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":8, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1087791604 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":7, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":312801216 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":7, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":312801216 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":6, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":591568028 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":6, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":591568028 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":5, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1707049159 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":5, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1707049159 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":2004145005 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":2043676905 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":979496394 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1758519169 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1666896996 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1666896996 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":979496394 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":2043676905 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":412150185 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":2004145005 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/AND.json b/TestData/Projects/abc/Chips/AND.json new file mode 100644 index 00000000..9c1af8f4 --- /dev/null +++ b/TestData/Projects/abc/Chips/AND.json @@ -0,0 +1,136 @@ +{ + "DLSVersion": "2.1.6", + "Name": "AND", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.575, + "y": 0.5 + }, + "Colour": { + "r": 0.7306707, + "g": 0.634779453, + "b": 0.125770211, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":959756263, + "Position":{ + "x":-10.66644, + "y":-3.26972 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1358543841, + "Position":{ + "x":-10.66644, + "y":-3.78472 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":544949934, + "Position":{ + "x":-3.84278, + "y":-3.74329 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"not", + "ID":1659435311, + "Label":"", + "Position":{ + "x":-5.99535, + "y":-3.63566 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"NAND", + "ID":1537012828, + "Label":"", + "Position":{ + "x":-7.91114, + "y":-3.54956 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1537012828 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":1659435311 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1659435311 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":544949934 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":959756263 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1537012828 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1358543841 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1537012828 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/D-Latch.json b/TestData/Projects/abc/Chips/D-Latch.json new file mode 100644 index 00000000..53ff0e20 --- /dev/null +++ b/TestData/Projects/abc/Chips/D-Latch.json @@ -0,0 +1,303 @@ +{ + "DLSVersion": "2.1.6", + "Name": "D-Latch", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.175, + "y": 0.5 + }, + "Colour": { + "r": 0.0213894285, + "g": 0.827064633, + "b": 0.697085261, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":310291647, + "Position":{ + "x":-6.92828, + "y":0.34409 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"Store", + "ID":2131763265, + "Position":{ + "x":-6.92828, + "y":-0.17091 + }, + "BitCount":1, + "Colour":2, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1876835783, + "Position":{ + "x":4.34443, + "y":-0.38537 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"not", + "ID":2027007135, + "Label":"", + "Position":{ + "x":-3.84392, + "y":-1.1228 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"AND", + "ID":691908276, + "Label":"", + "Position":{ + "x":-2.12862, + "y":0.55671 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":106552580, + "Label":"", + "Position":{ + "x":-2.12862, + "y":-0.95459 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"OR", + "ID":592997567, + "Label":"", + "Position":{ + "x":-0.51796, + "y":0.70866 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1757969751}], + "InternalData":null + }, + { + "Name":"OR", + "ID":2062105312, + "Label":"", + "Position":{ + "x":-0.42678, + "y":-0.71147 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1757969751}], + "InternalData":null + }, + { + "Name":"not", + "ID":544905502, + "Label":"", + "Position":{ + "x":0.8192, + "y":0.73905 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":447247626, + "Label":"", + "Position":{ + "x":0.63686, + "y":-0.7992 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2131763265 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":106552580 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.07071,"y":-0.17091},{"x":-3.07071,"y":-0.87161},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2131763265 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":691908276 + }, + "ConnectionType":1, + "ConnectedWireIndex":0, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-3.07071,"y":-0.2942},{"x":-3.07071,"y":0.28321},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":310291647 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":691908276 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-4.31669,"y":0.22243},{"x":-4.31669,"y":0.68171},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":310291647 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":2027007135 + }, + "ConnectionType":1, + "ConnectedWireIndex":2, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-4.31669,"y":0.25282},{"x":-4.31669,"y":-0.84122},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":2027007135 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":106552580 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":106552580 + }, + "TargetPinAddress":{ + "PinID":201883914, + "PinOwnerID":2062105312 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":691908276 + }, + "TargetPinAddress":{ + "PinID":1145381870, + "PinOwnerID":592997567 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1757969751, + "PinOwnerID":592997567 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":544905502 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1757969751, + "PinOwnerID":2062105312 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":447247626 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":447247626 + }, + "TargetPinAddress":{ + "PinID":201883914, + "PinOwnerID":592997567 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":1.27505,"y":-0.7992},{"x":1.27505,"y":-0.35498},{"x":-0.82186,"y":-0.35498},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":544905502 + }, + "TargetPinAddress":{ + "PinID":1145381870, + "PinOwnerID":2062105312 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":1.427,"y":0.73905},{"x":1.427,"y":0.10087},{"x":-1.09536,"y":0.10087},{"x":-1.09536,"y":-0.50693},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":447247626 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1876835783 + }, + "ConnectionType":1, + "ConnectedWireIndex":9, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":1.27505,"y":-0.62849},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/DELETE KEY CODE.json b/TestData/Projects/abc/Chips/DELETE KEY CODE.json new file mode 100644 index 00000000..1f5bf11c --- /dev/null +++ b/TestData/Projects/abc/Chips/DELETE KEY CODE.json @@ -0,0 +1,649 @@ +{ + "DLSVersion": "2.1.6", + "Name": "DELETE KEY CODE", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.325, + "y": 0.5 + }, + "Colour": { + "r": 0.678761244, + "g": 0.6371362, + "b": 0.509711, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":1569317543, + "Position":{ + "x":2.80435, + "y":-0.15942 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"1-16BIT", + "ID":2028281596, + "Label":"", + "Position":{ + "x":0.15217, + "y":-0.23188 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"not", + "ID":1659024954, + "Label":"", + "Position":{ + "x":-2.52899, + "y":-3.78261 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":367403665, + "Label":"", + "Position":{ + "x":-2.54348, + "y":-3.28986 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":717620436, + "Label":"", + "Position":{ + "x":-2.55797, + "y":-2.84058 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":914157608, + "Label":"", + "Position":{ + "x":-2.58696, + "y":-2.30435 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1662566167, + "Label":"", + "Position":{ + "x":-2.57246, + "y":-1.82609 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":499327736, + "Label":"", + "Position":{ + "x":-2.63044, + "y":-1.24638 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":285280912, + "Label":"", + "Position":{ + "x":-2.67391, + "y":-0.75362 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1027527195, + "Label":"", + "Position":{ + "x":-3.67391, + "y":0.11594 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":673777757, + "Label":"", + "Position":{ + "x":-2.65942, + "y":0.06022 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":697314954, + "Label":"", + "Position":{ + "x":-2.58696, + "y":3.69565 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":2004037586, + "Label":"", + "Position":{ + "x":-2.58696, + "y":3.19065 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":437165707, + "Label":"", + "Position":{ + "x":-2.58696, + "y":2.68565 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1031612021, + "Label":"", + "Position":{ + "x":-2.58696, + "y":2.18065 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":884419940, + "Label":"", + "Position":{ + "x":-2.58696, + "y":1.67565 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":744276717, + "Label":"", + "Position":{ + "x":-2.58696, + "y":1.17065 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":189029440, + "Label":"", + "Position":{ + "x":-2.58696, + "y":0.66565 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1286380214, + "Label":"", + "Position":{ + "x":-3.77536, + "y":3.66667 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":2109610733, + "Label":"", + "Position":{ + "x":-3.77536, + "y":3.16167 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1068525333, + "Label":"", + "Position":{ + "x":-3.77536, + "y":2.65667 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":210773702, + "Label":"", + "Position":{ + "x":-3.77536, + "y":2.15167 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1114075020, + "Label":"", + "Position":{ + "x":-3.77536, + "y":1.64667 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":283700171, + "Label":"", + "Position":{ + "x":-3.77536, + "y":1.14167 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":546789992, + "Label":"", + "Position":{ + "x":-3.77536, + "y":0.63667 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":2028281596 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1569317543 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1659024954 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":367403665 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":717620436 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":914157608 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1662566167 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":499327736 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":285280912 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1027527195 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":673777757 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":673777757 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":546789992 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":189029440 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":283700171 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":744276717 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1114075020 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":884419940 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":210773702 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":1031612021 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1068525333 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":437165707 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":2109610733 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":2004037586 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1286380214 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":697314954 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":697314954 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":2004037586 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":437165707 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1031612021 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":884419940 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":189029440 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":744276717 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":673777757 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":2028281596 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/DOWN ARROW CODE.json b/TestData/Projects/abc/Chips/DOWN ARROW CODE.json new file mode 100644 index 00000000..67af5e15 --- /dev/null +++ b/TestData/Projects/abc/Chips/DOWN ARROW CODE.json @@ -0,0 +1,912 @@ +{ + "DLSVersion": "2.1.6", + "Name": "DOWN ARROW CODE", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.7, + "y": 1.5 + }, + "Colour": { + "r": 0.7026052, + "g": 0.698388, + "b": 0.964214444, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":1401760594, + "Position":{ + "x":7.07965, + "y":1.57419 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":174266292, + "Position":{ + "x":7.07965, + "y":-0.06452 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":576728594, + "Position":{ + "x":7.07965, + "y":-2.05382 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + } + ], + "SubChips":[ + { + "Name":"not", + "ID":1162043365, + "Label":"", + "Position":{ + "x":-3.92117, + "y":2.15188 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":373776148, + "Label":"", + "Position":{ + "x":-0.60145, + "y":3.68116 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":326065641, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-0.44884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":17392591, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-4.57884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"not", + "ID":793248295, + "Label":"", + "Position":{ + "x":-3.98951, + "y":3.42376 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":574147722, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-0.12157 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":964228863, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-1.52657 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":866641419, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-3.78831 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1313578125, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-5.30581 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":373776148 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1401760594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":326065641 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":174266292 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":17392591 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":576728594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":793248295 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.05397,"y":2.15188},{"x":-3.0724,"y":1.55983},{"x":-5.0077,"y":1.61513},{"x":-5.02613,"y":3.36611},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":574147722 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.74176,"y":-1.52657},{"x":-3.74176,"y":-1.03546},{"x":-4.85873,"y":-1.03546},{"x":-4.85873,"y":-0.02002},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":866641419 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.72011,"y":-5.30581},{"x":-3.72011,"y":-4.73844},{"x":-5.03803,"y":-4.73844},{"x":-5.03803,"y":-3.77299},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":17392591 + }, + "ConnectionType":1, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.73544,"y":-5.30581},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/LEFT ARROW CODE.json b/TestData/Projects/abc/Chips/LEFT ARROW CODE.json new file mode 100644 index 00000000..aec8c87c --- /dev/null +++ b/TestData/Projects/abc/Chips/LEFT ARROW CODE.json @@ -0,0 +1,912 @@ +{ + "DLSVersion": "2.1.6", + "Name": "LEFT ARROW CODE", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.7, + "y": 1.5 + }, + "Colour": { + "r": 0.7026052, + "g": 0.698388, + "b": 0.964214444, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":1401760594, + "Position":{ + "x":7.07965, + "y":1.57419 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":174266292, + "Position":{ + "x":7.07965, + "y":-0.06452 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":576728594, + "Position":{ + "x":7.07965, + "y":-2.05382 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + } + ], + "SubChips":[ + { + "Name":"not", + "ID":1162043365, + "Label":"", + "Position":{ + "x":-3.92117, + "y":2.15188 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":373776148, + "Label":"", + "Position":{ + "x":-0.60145, + "y":3.68116 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":326065641, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-0.44884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":17392591, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-4.57884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"not", + "ID":793248295, + "Label":"", + "Position":{ + "x":-3.98951, + "y":3.42376 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":574147722, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-0.12157 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":964228863, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-1.52657 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":866641419, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-3.78831 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1313578125, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-5.30581 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":373776148 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1401760594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":326065641 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":174266292 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":17392591 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":576728594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":793248295 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.05397,"y":2.15188},{"x":-3.0724,"y":1.55983},{"x":-5.0077,"y":1.61513},{"x":-5.02613,"y":3.36611},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":574147722 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.74176,"y":-1.52657},{"x":-3.74176,"y":-1.03546},{"x":-4.85873,"y":-1.03546},{"x":-4.85873,"y":-0.02002},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":866641419 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.72011,"y":-5.30581},{"x":-3.72011,"y":-4.73844},{"x":-5.03803,"y":-4.73844},{"x":-5.03803,"y":-3.77299},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":17392591 + }, + "ConnectionType":1, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.73544,"y":-5.30581},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/MEM-1.json b/TestData/Projects/abc/Chips/MEM-1.json new file mode 100644 index 00000000..9810dee6 --- /dev/null +++ b/TestData/Projects/abc/Chips/MEM-1.json @@ -0,0 +1,250 @@ +{ + "DLSVersion": "2.1.6", + "Name": "MEM-1", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.875, + "y": 1.0 + }, + "Colour": { + "r": 0.3637654, + "g": 0.3048905, + "b": 0.7419074, + "a": 1 + }, + "InputPins":[ + { + "Name":"Data", + "ID":157323697, + "Position":{ + "x":-9.96056, + "y":5.91124 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"Store", + "ID":1981915361, + "Position":{ + "x":-9.96056, + "y":5.39624 + }, + "BitCount":1, + "Colour":2, + "ValueDisplayMode":0 + }, + { + "Name":"Row", + "ID":1990147514, + "Position":{ + "x":-9.96056, + "y":3.89382 + }, + "BitCount":1, + "Colour":3, + "ValueDisplayMode":0 + }, + { + "Name":"Column", + "ID":1490415522, + "Position":{ + "x":-9.96056, + "y":3.37882 + }, + "BitCount":1, + "Colour":4, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1514912811, + "Position":{ + "x":-0.00473, + "y":5.29377 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"AND", + "ID":1712563849, + "Label":"", + "Position":{ + "x":-6.12308, + "y":4.90846 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1709467460, + "Label":"", + "Position":{ + "x":-7.68, + "y":3.83989 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"D-Latch", + "ID":414006374, + "Label":"", + "Position":{ + "x":-4.36881, + "y":5.67003 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1876835783}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":1183473078, + "Label":"", + "Position":{ + "x":-2.26126, + "y":5.31559 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1712563849 + }, + "TargetPinAddress":{ + "PinID":2131763265, + "PinOwnerID":414006374 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1709467460 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1712563849 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1490415522 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1709467460 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1990147514 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1709467460 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1981915361 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1712563849 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":157323697 + }, + "TargetPinAddress":{ + "PinID":310291647, + "PinOwnerID":414006374 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1876835783, + "PinOwnerID":414006374 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1183473078 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1183473078 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1514912811 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1709467460 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1183473078 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/MEM-16.json b/TestData/Projects/abc/Chips/MEM-16.json new file mode 100644 index 00000000..7e695d30 --- /dev/null +++ b/TestData/Projects/abc/Chips/MEM-16.json @@ -0,0 +1,1657 @@ +{ + "DLSVersion": "2.1.6", + "Name": "MEM-16", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.025, + "y": 1.375 + }, + "Colour": { + "r": 0.412423849, + "g": 0.122173876, + "b": 0.384530723, + "a": 1 + }, + "InputPins":[ + { + "Name":"Address", + "ID":62573454, + "Position":{ + "x":-15.27965, + "y":6.3254 + }, + "BitCount":4, + "Colour":5, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":128408083, + "Position":{ + "x":-14.89756, + "y":3.56888 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"Store", + "ID":1414346718, + "Position":{ + "x":-14.89756, + "y":3.05388 + }, + "BitCount":1, + "Colour":2, + "ValueDisplayMode":0 + }, + { + "Name":"Row", + "ID":710473788, + "Position":{ + "x":-15.93466, + "y":1.79489 + }, + "BitCount":1, + "Colour":3, + "ValueDisplayMode":0 + }, + { + "Name":"Column", + "ID":509504792, + "Position":{ + "x":-15.93466, + "y":1.27989 + }, + "BitCount":1, + "Colour":4, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1853328632, + "Position":{ + "x":5.41674, + "y":3.95709 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"MEM-1", + "ID":274461243, + "Label":"", + "Position":{ + "x":-7.61281, + "y":7.16717 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1835175221, + "Label":"", + "Position":{ + "x":-7.61281, + "y":5.04967 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":923793120, + "Label":"", + "Position":{ + "x":-7.61281, + "y":2.93217 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1200673333, + "Label":"", + "Position":{ + "x":-7.61281, + "y":0.81467 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1380043440, + "Label":"", + "Position":{ + "x":-4.97104, + "y":7.18689 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1314081840, + "Label":"", + "Position":{ + "x":-4.97104, + "y":5.06939 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1671039107, + "Label":"", + "Position":{ + "x":-4.97104, + "y":2.95189 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1037290998, + "Label":"", + "Position":{ + "x":-4.97104, + "y":0.83439 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":334277394, + "Label":"", + "Position":{ + "x":-1.99412, + "y":7.18689 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1410319871, + "Label":"", + "Position":{ + "x":-1.99412, + "y":5.06939 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1399810510, + "Label":"", + "Position":{ + "x":-1.99412, + "y":2.95189 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":236707295, + "Label":"", + "Position":{ + "x":-1.99412, + "y":0.83439 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1793911124, + "Label":"", + "Position":{ + "x":0.52936, + "y":7.2066 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":1528889001, + "Label":"", + "Position":{ + "x":0.52936, + "y":5.0891 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":539496944, + "Label":"", + "Position":{ + "x":0.52936, + "y":2.9716 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"MEM-1", + "ID":772333226, + "Label":"", + "Position":{ + "x":0.52936, + "y":0.8541 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1514912811}], + "InternalData":null + }, + { + "Name":"2-bit decoder", + "ID":1641454338, + "Label":"", + "Position":{ + "x":-12.22292, + "y":7.52626 + }, + "OutputPinColourInfo":[{"PinColour":4,"PinID":788553274},{"PinColour":4,"PinID":250382178},{"PinColour":4,"PinID":1932349665},{"PinColour":4,"PinID":1784140084}], + "InternalData":null + }, + { + "Name":"2-bit decoder", + "ID":1271659330, + "Label":"", + "Position":{ + "x":-12.16834, + "y":5.27728 + }, + "OutputPinColourInfo":[{"PinColour":3,"PinID":788553274},{"PinColour":3,"PinID":250382178},{"PinColour":3,"PinID":1932349665},{"PinColour":3,"PinID":1784140084}], + "InternalData":null + }, + { + "Name":"4-1BIT", + "ID":419435426, + "Label":"", + "Position":{ + "x":-13.724, + "y":6.40728 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4}], + "InternalData":null + }, + { + "Name":"BUS-1", + "ID":1606177387, + "Label":"", + "Position":{ + "x":-8.00137, + "y":1.74031 + }, + "OutputPinColourInfo":null, + "InternalData":[263888713,0] + }, + { + "Name":"BUS-TERMINUS-1", + "ID":263888713, + "Label":"", + "Position":{ + "x":-7.9293, + "y":6.05248 + }, + "OutputPinColourInfo":null, + "InternalData":[1606177387,1] + }, + { + "Name":"AND", + "ID":1250065692, + "Label":"", + "Position":{ + "x":-13.3692, + "y":2.64095 + }, + "OutputPinColourInfo":[{"PinColour":2,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1904781615, + "Label":"", + "Position":{ + "x":-14.26984, + "y":2.14741 + }, + "OutputPinColourInfo":[{"PinColour":5,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":1578544800, + "Label":"", + "Position":{ + "x":3.03036, + "y":4.00506 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":62573454 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":419435426 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":2082927019, + "PinOwnerID":1271659330 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":1725442598, + "PinOwnerID":1271659330 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":2082927019, + "PinOwnerID":1641454338 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":1725442598, + "PinOwnerID":1641454338 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":772333226 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-11.2404,"y":4.90228},{"x":-11.2404,"y":0.04819},{"x":-0.26893,"y":0.04819},{"x":-0.26893,"y":0.3757},{"x":-0.26893,"y":0.73049},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":236707295 + }, + "ConnectionType":1, + "ConnectedWireIndex":5, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.69794,"y":0.04819},{"x":-2.69794,"y":0.75779},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1037290998 + }, + "ConnectionType":1, + "ConnectedWireIndex":5, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-5.61821,"y":0.04819},{"x":-5.61821,"y":0.75779},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1200673333 + }, + "ConnectionType":1, + "ConnectedWireIndex":5, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-8.32014,"y":0.04819},{"x":-8.32014,"y":0.7032},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":539496944 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-10.96748,"y":5.15228},{"x":-10.96748,"y":2.28615},{"x":-0.29622,"y":2.28615},{"x":-0.29622,"y":2.8047},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1399810510 + }, + "ConnectionType":1, + "ConnectedWireIndex":9, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.75252,"y":2.28615},{"x":-2.75252,"y":2.8047},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1671039107 + }, + "ConnectionType":1, + "ConnectedWireIndex":9, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-5.67279,"y":2.28615},{"x":-5.67279,"y":2.8047},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":923793120 + }, + "ConnectionType":1, + "ConnectedWireIndex":9, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-8.40201,"y":2.28615},{"x":-8.40201,"y":2.8047},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1835175221 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.70223,"y":5.40228},{"x":-8.70223,"y":4.9062},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1528889001 + }, + "ConnectionType":1, + "ConnectedWireIndex":13, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.70223,"y":5.31559},{"x":-8.70223,"y":5.72497},{"x":-0.35081,"y":5.72497},{"x":-0.35081,"y":4.98808},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1410319871 + }, + "ConnectionType":1, + "ConnectedWireIndex":14, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-2.75252,"y":5.72497},{"x":-2.75252,"y":4.96079},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1314081840 + }, + "ConnectionType":1, + "ConnectedWireIndex":14, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-5.72737,"y":5.72497},{"x":-5.72737,"y":4.9335},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1793911124 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.97515,"y":5.65228},{"x":-8.97515,"y":6.3254},{"x":-0.24164,"y":6.3254},{"x":-0.24164,"y":7.08958},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":334277394 + }, + "ConnectionType":1, + "ConnectedWireIndex":17, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.75252,"y":6.3254},{"x":-2.75252,"y":7.08958},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":1380043440 + }, + "ConnectionType":1, + "ConnectedWireIndex":17, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-5.6455,"y":6.3254},{"x":-5.6455,"y":7.035},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":1990147514, + "PinOwnerID":274461243 + }, + "ConnectionType":1, + "ConnectedWireIndex":17, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-8.29284,"y":6.3254},{"x":-8.29284,"y":6.98041},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1200673333 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.4293,"y":7.15126},{"x":-8.4293,"y":0.3757},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":923793120 + }, + "ConnectionType":1, + "ConnectedWireIndex":21, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.4293,"y":2.55907},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1835175221 + }, + "ConnectionType":1, + "ConnectedWireIndex":21, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.4293,"y":4.71516},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":274461243 + }, + "ConnectionType":1, + "ConnectedWireIndex":21, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.4293,"y":6.70749},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1037290998 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.7841,"y":7.40126},{"x":-8.7841,"y":7.88105},{"x":-5.80925,"y":7.88105},{"x":-5.80925,"y":0.40299},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1671039107 + }, + "ConnectionType":1, + "ConnectedWireIndex":25, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-5.80925,"y":2.58636},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1314081840 + }, + "ConnectionType":1, + "ConnectedWireIndex":25, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-5.80925,"y":4.60599},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1380043440 + }, + "ConnectionType":1, + "ConnectedWireIndex":25, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-5.80925,"y":6.81666},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":236707295 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-9.11161,"y":7.65126},{"x":-9.11161,"y":7.93564},{"x":-2.99815,"y":7.93564},{"x":-2.99815,"y":0.43028},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1399810510 + }, + "ConnectionType":1, + "ConnectedWireIndex":29, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-2.99815,"y":2.55907},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1410319871 + }, + "ConnectionType":1, + "ConnectedWireIndex":29, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-2.99815,"y":4.66057},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":334277394 + }, + "ConnectionType":1, + "ConnectedWireIndex":29, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-2.99815,"y":6.84395},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":772333226 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.75681,"y":8.15398},{"x":-0.18706,"y":8.15398},{"x":-0.13247,"y":0.48486},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":539496944 + }, + "ConnectionType":1, + "ConnectedWireIndex":33, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-0.14782,"y":2.64084},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1528889001 + }, + "ConnectionType":1, + "ConnectedWireIndex":33, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-0.16239,"y":4.68785},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":1490415522, + "PinOwnerID":1793911124 + }, + "ConnectionType":1, + "ConnectedWireIndex":33, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-0.17734,"y":6.78905},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1606177387 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":263888713 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":1.64152,"y":1.74031},{"x":1.64152,"y":6.05248},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":274461243 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-6.84636,"y":7.16717},{"x":-6.84636,"y":5.99789},{"x":-6.79177,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1835175221 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-6.81906,"y":5.04967},{"x":-6.81906,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":923793120 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-6.87365,"y":2.93217},{"x":-6.87365,"y":1.79489},{"x":-6.73719,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1200673333 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-6.79177,"y":0.81467},{"x":-6.79177,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1037290998 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-4.06255,"y":0.83439},{"x":-4.06255,"y":1.79489},{"x":-4.06255,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1671039107 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-4.14443,"y":2.95189},{"x":-4.14443,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1314081840 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-4.11713,"y":5.06939},{"x":-4.11713,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1380043440 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-4.03526,"y":7.18689},{"x":-4.03526,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":334277394 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-1.06041,"y":7.18689},{"x":-1.06041,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1410319871 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-1.14228,"y":5.06939},{"x":-1.14228,"y":6.10706},{"x":-1.06041,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1399810510 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-1.25145,"y":2.95189},{"x":-1.25145,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":236707295 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-1.22416,"y":0.83439},{"x":-1.22416,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":772333226 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":1.3686,"y":0.8541},{"x":1.3686,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":539496944 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":0.0,"y":0.0},{"x":1.64152,"y":2.94116}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1528889001 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":0.0,"y":0.0},{"x":1.64152,"y":4.98808}] + }, + { + "SourcePinAddress":{ + "PinID":1514912811, + "PinOwnerID":1793911124 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":1.31402,"y":7.2066},{"x":1.31402,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":509504792 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1904781615 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":710473788 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1904781615 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1904781615 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1250065692 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1414346718 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1250065692 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1793911124 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":-0.41578},{"x":-0.51456,"y":-0.41578},{"x":-0.51456,"y":7.33521},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1528889001 + }, + "ConnectionType":1, + "ConnectedWireIndex":58, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-0.51456,"y":5.17913},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":772333226 + }, + "ConnectionType":1, + "ConnectedWireIndex":58, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-0.51456,"y":0.97612},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":539496944 + }, + "ConnectionType":1, + "ConnectedWireIndex":58, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-0.51456,"y":3.05033},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":334277394 + }, + "ConnectionType":1, + "ConnectedWireIndex":58, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.86169,"y":-0.41578},{"x":-2.86169,"y":7.30792},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1410319871 + }, + "ConnectionType":1, + "ConnectedWireIndex":62, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.86169,"y":5.23371},{"x":-2.80711,"y":5.17912},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1399810510 + }, + "ConnectionType":1, + "ConnectedWireIndex":62, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.86169,"y":3.07762},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":236707295 + }, + "ConnectionType":1, + "ConnectedWireIndex":62, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.86169,"y":0.92154},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1380043440 + }, + "ConnectionType":1, + "ConnectedWireIndex":58, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-5.69438,"y":-0.41578},{"x":-5.69438,"y":7.34753},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1314081840 + }, + "ConnectionType":1, + "ConnectedWireIndex":66, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.69438,"y":5.28673},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1671039107 + }, + "ConnectionType":1, + "ConnectedWireIndex":66, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.69438,"y":2.99946},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1037290998 + }, + "ConnectionType":1, + "ConnectedWireIndex":66, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.69438,"y":1.02925},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1200673333 + }, + "ConnectionType":1, + "ConnectedWireIndex":58, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.86598,"y":1.0066},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":923793120 + }, + "ConnectionType":1, + "ConnectedWireIndex":58, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.86598,"y":2.50125},{"x":-8.8875,"y":3.05717},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":274461243 + }, + "ConnectionType":1, + "ConnectedWireIndex":71, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-8.88524,"y":2.99868},{"x":-8.88523,"y":6.98519},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1981915361, + "PinOwnerID":1835175221 + }, + "ConnectionType":1, + "ConnectedWireIndex":72, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-8.88523,"y":5.19614},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":772333226 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-0.71222,"y":3.56888},{"x":-0.71222,"y":1.21042},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":539496944 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.71222,"y":3.31651},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1793911124 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.71222,"y":3.56562},{"x":-0.71222,"y":7.57399},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1528889001 + }, + "ConnectionType":1, + "ConnectedWireIndex":76, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-0.71222,"y":5.49054},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":334277394 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.68244,"y":3.56888},{"x":-2.68244,"y":7.55135},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1410319871 + }, + "ConnectionType":1, + "ConnectedWireIndex":78, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.68244,"y":5.39996},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":236707295 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.68244,"y":3.56888},{"x":-2.68244,"y":1.18777},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1399810510 + }, + "ConnectionType":1, + "ConnectedWireIndex":80, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.68244,"y":3.29387},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1380043440 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.58115,"y":3.56888},{"x":-5.58115,"y":7.61929},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1314081840 + }, + "ConnectionType":1, + "ConnectedWireIndex":82, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.58115,"y":5.44525},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1037290998 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.55851,"y":3.56888},{"x":-5.55851,"y":1.14248},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1671039107 + }, + "ConnectionType":1, + "ConnectedWireIndex":84, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.55851,"y":3.33916},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1200673333 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-8.2534,"y":3.56888},{"x":-8.2534,"y":1.25571},{"x":-8.18546,"y":1.25571},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":923793120 + }, + "ConnectionType":1, + "ConnectedWireIndex":86, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-8.2534,"y":3.31651},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":274461243 + }, + "ConnectionType":1, + "ConnectedWireIndex":74, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-8.20811,"y":3.56888},{"x":-8.20811,"y":7.57399},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":157323697, + "PinOwnerID":1835175221 + }, + "ConnectionType":1, + "ConnectedWireIndex":88, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-8.20811,"y":5.42261},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1606177387 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1578544800 + }, + "ConnectionType":1, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":1.64152,"y":4.24752},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1904781615 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1578544800 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-12.53107,"y":2.02131},{"x":-12.53107,"y":-0.29307},{"x":2.08257,"y":-0.29307},{"x":2.08257,"y":3.81756},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1578544800 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1853328632 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/MEM-256-4bit.json b/TestData/Projects/abc/Chips/MEM-256-4bit.json new file mode 100644 index 00000000..3ad9f006 --- /dev/null +++ b/TestData/Projects/abc/Chips/MEM-256-4bit.json @@ -0,0 +1,387 @@ +{ + "DLSVersion": "2.1.6", + "Name": "MEM-256-4bit", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 2.075, + "y": 1.125 + }, + "Colour": { + "r": 0.720622838, + "g": 0.37943846, + "b": 0.8189529, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":608067916, + "Position":{ + "x":-8.02397, + "y":-1.45167 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1514528652, + "Position":{ + "x":-8.02397, + "y":-1.96917 + }, + "BitCount":4, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":2087071140, + "Position":{ + "x":-8.02397, + "y":-2.48542 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1494471021, + "Position":{ + "x":2.31161, + "y":-3.57568 + }, + "BitCount":4, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"MEM-256-UNMODULAR", + "ID":198221926, + "Label":"", + "Position":{ + "x":-3.18806, + "y":-1.4896 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1755235036}], + "InternalData":null + }, + { + "Name":"MEM-256-UNMODULAR", + "ID":21605533, + "Label":"", + "Position":{ + "x":-3.18806, + "y":-2.6196 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1755235036}], + "InternalData":null + }, + { + "Name":"MEM-256-UNMODULAR", + "ID":1263158498, + "Label":"", + "Position":{ + "x":-3.18806, + "y":-3.7496 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1755235036}], + "InternalData":null + }, + { + "Name":"MEM-256-UNMODULAR", + "ID":659066214, + "Label":"", + "Position":{ + "x":-3.18806, + "y":-4.8796 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1755235036}], + "InternalData":null + }, + { + "Name":"4-1BIT", + "ID":1913717161, + "Label":"", + "Position":{ + "x":-6.22235, + "y":-2.36196 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4}], + "InternalData":null + }, + { + "Name":"1-4BIT", + "ID":1879289872, + "Label":"", + "Position":{ + "x":0.28243, + "y":-3.55672 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":4}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":608067916 + }, + "TargetPinAddress":{ + "PinID":67652323, + "PinOwnerID":198221926 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":608067916 + }, + "TargetPinAddress":{ + "PinID":67652323, + "PinOwnerID":659066214 + }, + "ConnectionType":1, + "ConnectedWireIndex":0, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.28036,"y":-1.30643},{"x":-5.28036,"y":-4.5808},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":608067916 + }, + "TargetPinAddress":{ + "PinID":67652323, + "PinOwnerID":1263158498 + }, + "ConnectionType":1, + "ConnectedWireIndex":1, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.28036,"y":-3.38604},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":608067916 + }, + "TargetPinAddress":{ + "PinID":67652323, + "PinOwnerID":21605533 + }, + "ConnectionType":1, + "ConnectedWireIndex":1, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-5.28036,"y":-2.26714},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1514528652 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1913717161 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-6.90507,"y":-2.32403},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2087071140 + }, + "TargetPinAddress":{ + "PinID":139471215, + "PinOwnerID":659066214 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-7.27397,"y":-4.99801},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2087071140 + }, + "TargetPinAddress":{ + "PinID":139471215, + "PinOwnerID":198221926 + }, + "ConnectionType":1, + "ConnectedWireIndex":5, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-4.91498,"y":-5.21905},{"x":-4.91498,"y":-1.92578},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2087071140 + }, + "TargetPinAddress":{ + "PinID":139471215, + "PinOwnerID":21605533 + }, + "ConnectionType":1, + "ConnectedWireIndex":6, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-4.91498,"y":-2.98779},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2087071140 + }, + "TargetPinAddress":{ + "PinID":139471215, + "PinOwnerID":1263158498 + }, + "ConnectionType":1, + "ConnectedWireIndex":6, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-4.91498,"y":-4.14461},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":1913717161 + }, + "TargetPinAddress":{ + "PinID":1288539171, + "PinOwnerID":659066214 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":1913717161 + }, + "TargetPinAddress":{ + "PinID":1288539171, + "PinOwnerID":1263158498 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1913717161 + }, + "TargetPinAddress":{ + "PinID":1288539171, + "PinOwnerID":21605533 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1913717161 + }, + "TargetPinAddress":{ + "PinID":1288539171, + "PinOwnerID":198221926 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1755235036, + "PinOwnerID":659066214 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":1879289872 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1755235036, + "PinOwnerID":1263158498 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":1879289872 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1755235036, + "PinOwnerID":21605533 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1879289872 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1755235036, + "PinOwnerID":198221926 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1879289872 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":1879289872 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1494471021 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/MEM-256-UNMODULAR.json b/TestData/Projects/abc/Chips/MEM-256-UNMODULAR.json new file mode 100644 index 00000000..eb7dbdf7 --- /dev/null +++ b/TestData/Projects/abc/Chips/MEM-256-UNMODULAR.json @@ -0,0 +1,175 @@ +{ + "DLSVersion": "2.1.6", + "Name": "MEM-256-UNMODULAR", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 2.675, + "y": 1.0 + }, + "Colour": { + "r": 0.0389738157, + "g": 0.0452257, + "b": 0.9548129, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":67652323, + "Position":{ + "x":-1.70883, + "y":-4.96008 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1288539171, + "Position":{ + "x":-1.70883, + "y":-5.47633 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":139471215, + "Position":{ + "x":-1.70883, + "y":-5.99133 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1755235036, + "Position":{ + "x":3.67705, + "y":-5.66177 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"MEM-256", + "ID":609670146, + "Label":"", + "Position":{ + "x":1.29076, + "y":-5.49722 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1706767138}], + "InternalData":null + }, + { + "Name":"not", + "ID":1648375300, + "Label":"", + "Position":{ + "x":-0.41926, + "y":-6.53413 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":67652323 + }, + "TargetPinAddress":{ + "PinID":562690604, + "PinOwnerID":609670146 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1648375300 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":609670146 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1648375300 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":609670146 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":139471215 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":609670146 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1288539171 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":609670146 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1706767138, + "PinOwnerID":609670146 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1755235036 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/MEM-256.json b/TestData/Projects/abc/Chips/MEM-256.json new file mode 100644 index 00000000..b5bb692e --- /dev/null +++ b/TestData/Projects/abc/Chips/MEM-256.json @@ -0,0 +1,1892 @@ +{ + "DLSVersion": "2.1.6", + "Name": "MEM-256", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.175, + "y": 1.5 + }, + "Colour": { + "r": 0.412423849, + "g": 0.122173876, + "b": 0.384530723, + "a": 1 + }, + "InputPins":[ + { + "Name":"Adress", + "ID":562690604, + "Position":{ + "x":-17.80392, + "y":6.91954 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":128408083, + "Position":{ + "x":-14.89756, + "y":3.56888 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"Store", + "ID":1414346718, + "Position":{ + "x":-14.89756, + "y":3.05388 + }, + "BitCount":1, + "Colour":2, + "ValueDisplayMode":0 + }, + { + "Name":"Row", + "ID":710473788, + "Position":{ + "x":-15.93466, + "y":1.79489 + }, + "BitCount":1, + "Colour":3, + "ValueDisplayMode":0 + }, + { + "Name":"Column", + "ID":509504792, + "Position":{ + "x":-15.93466, + "y":1.27989 + }, + "BitCount":1, + "Colour":4, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1706767138, + "Position":{ + "x":6.16301, + "y":3.87596 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"2-bit decoder", + "ID":1641454338, + "Label":"", + "Position":{ + "x":-12.22292, + "y":7.52626 + }, + "OutputPinColourInfo":[{"PinColour":4,"PinID":788553274},{"PinColour":4,"PinID":250382178},{"PinColour":4,"PinID":1932349665},{"PinColour":4,"PinID":1784140084}], + "InternalData":null + }, + { + "Name":"2-bit decoder", + "ID":1271659330, + "Label":"", + "Position":{ + "x":-12.16834, + "y":5.27728 + }, + "OutputPinColourInfo":[{"PinColour":3,"PinID":788553274},{"PinColour":3,"PinID":250382178},{"PinColour":3,"PinID":1932349665},{"PinColour":3,"PinID":1784140084}], + "InternalData":null + }, + { + "Name":"4-1BIT", + "ID":419435426, + "Label":"", + "Position":{ + "x":-13.724, + "y":6.40728 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4}], + "InternalData":null + }, + { + "Name":"BUS-1", + "ID":1606177387, + "Label":"", + "Position":{ + "x":-8.00137, + "y":1.74031 + }, + "OutputPinColourInfo":null, + "InternalData":[263888713,0] + }, + { + "Name":"BUS-TERMINUS-1", + "ID":263888713, + "Label":"", + "Position":{ + "x":-7.9293, + "y":6.05248 + }, + "OutputPinColourInfo":null, + "InternalData":[1606177387,1] + }, + { + "Name":"AND", + "ID":1250065692, + "Label":"", + "Position":{ + "x":-13.3692, + "y":2.64095 + }, + "OutputPinColourInfo":[{"PinColour":2,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1904781615, + "Label":"", + "Position":{ + "x":-14.26984, + "y":2.14741 + }, + "OutputPinColourInfo":[{"PinColour":5,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"8-4BIT", + "ID":1008556545, + "Label":"", + "Position":{ + "x":-15.52691, + "y":6.77327 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":583466751, + "Label":"", + "Position":{ + "x":-7.31236, + "y":0.85801 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1724222643, + "Label":"", + "Position":{ + "x":-7.47207, + "y":2.98032 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":93050724, + "Label":"", + "Position":{ + "x":-4.70793, + "y":4.75599 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1704062474, + "Label":"", + "Position":{ + "x":-4.78558, + "y":2.70744 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":593035311, + "Label":"", + "Position":{ + "x":-4.78557, + "y":0.89185 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1360333554, + "Label":"", + "Position":{ + "x":-7.27036, + "y":4.78187 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":996507241, + "Label":"", + "Position":{ + "x":-4.63028, + "y":7.11136 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":196236390, + "Label":"", + "Position":{ + "x":-7.19271, + "y":7.10758 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":2109010168, + "Label":"", + "Position":{ + "x":-1.91254, + "y":7.16313 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1765310400, + "Label":"", + "Position":{ + "x":-1.93843, + "y":4.59692 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1209582135, + "Label":"", + "Position":{ + "x":-1.86078, + "y":2.70367 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":901753403, + "Label":"", + "Position":{ + "x":-1.88666, + "y":0.97705 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1920561870, + "Label":"", + "Position":{ + "x":0.49459, + "y":7.18901 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":68013122, + "Label":"", + "Position":{ + "x":0.54636, + "y":4.75221 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1289830691, + "Label":"", + "Position":{ + "x":0.62401, + "y":2.91073 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"MEM-16", + "ID":1452339357, + "Label":"", + "Position":{ + "x":0.72754, + "y":0.78454 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1853328632}], + "InternalData":null + }, + { + "Name":"3-STATE BUFFER", + "ID":2002509464, + "Label":"", + "Position":{ + "x":3.34174, + "y":3.61713 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":2082927019, + "PinOwnerID":1271659330 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":1725442598, + "PinOwnerID":1271659330 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":2082927019, + "PinOwnerID":1641454338 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":419435426 + }, + "TargetPinAddress":{ + "PinID":1725442598, + "PinOwnerID":1641454338 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1606177387 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":263888713 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":1.64152,"y":1.74031},{"x":1.64152,"y":6.05248},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":509504792 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1904781615 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":710473788 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1904781615 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1904781615 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1250065692 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1414346718 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1250065692 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":562690604 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1008556545 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":419435426 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":583466751 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.4293,"y":7.15126},{"x":-8.4293,"y":2.55907},{"x":-8.31838,"y":2.5585},{"x":-8.3185,"y":0.29551},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":583466751 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-11.2404,"y":4.90228},{"x":-11.2404,"y":0.04819},{"x":-7.98312,"y":0.04819},{"x":-7.98312,"y":0.52263},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":583466751 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":0.79093},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":583466751 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.55327,"y":3.56888},{"x":-8.55327,"y":1.04551},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":583466751 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-14.67472,"y":6.96077},{"x":-14.67472,"y":4.32791},{"x":-9.26112,"y":4.32791},{"x":-9.26112,"y":1.35392},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1724222643 + }, + "ConnectionType":1, + "ConnectedWireIndex":11, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-8.31839,"y":2.44036},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1724222643 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-10.96748,"y":5.15228},{"x":-10.96748,"y":2.28615},{"x":-8.6238,"y":2.28615},{"x":-8.6238,"y":2.22916},{"x":-8.6238,"y":2.66782},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1724222643 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":2.50125},{"x":-8.87994,"y":2.86193},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1724222643 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.29527,"y":3.56888},{"x":-8.29527,"y":3.16782},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1724222643 + }, + "ConnectionType":1, + "ConnectedWireIndex":15, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-9.26112,"y":3.49636},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":1724222643 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-6.61017,"y":2.98032},{"x":-6.61017,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":583466751 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-6.51918,"y":0.85801},{"x":-6.51918,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1360333554 + }, + "ConnectionType":1, + "ConnectedWireIndex":15, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-9.3669,"y":4.32791},{"x":-9.3669,"y":5.28187},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1360333554 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.20811,"y":3.56888},{"x":-8.20811,"y":4.96306},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1360333554 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":2.50125},{"x":-8.88524,"y":2.99868},{"x":-8.88523,"y":4.70422},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1360333554 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.70223,"y":5.40228},{"x":-8.70223,"y":5.31559},{"x":-8.70223,"y":5.72497},{"x":-8.69394,"y":5.72497},{"x":-8.64217,"y":4.46937},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1360333554 + }, + "ConnectionType":1, + "ConnectedWireIndex":11, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.4293,"y":4.21244},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":1360333554 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-6.51975,"y":4.78187},{"x":-6.51975,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":93050724 + }, + "ConnectionType":1, + "ConnectedWireIndex":23, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-9.3669,"y":5.24777},{"x":-9.49631,"y":8.56082},{"x":-6.07973,"y":8.56082},{"x":-6.07973,"y":5.25599},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1704062474 + }, + "ConnectionType":1, + "ConnectedWireIndex":29, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-6.07973,"y":5.25599},{"x":-6.07973,"y":3.20744},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":593035311 + }, + "ConnectionType":1, + "ConnectedWireIndex":30, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-6.07973,"y":3.25477},{"x":-6.07973,"y":1.39185},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":593035311 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-5.87267,"y":3.56888},{"x":-5.87267,"y":1.07935},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1704062474 + }, + "ConnectionType":1, + "ConnectedWireIndex":32, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-5.87267,"y":2.8924},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":93050724 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-5.58115,"y":3.56888},{"x":-5.58115,"y":4.83364},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":93050724 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":-0.41578},{"x":-5.69438,"y":-0.41578},{"x":-5.69438,"y":4.60069},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":93050724 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.70223,"y":5.40228},{"x":-8.70223,"y":5.31559},{"x":-8.70223,"y":5.72497},{"x":-5.84679,"y":5.72497},{"x":-5.87267,"y":4.41951},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":93050724 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.7841,"y":7.40126},{"x":-8.7841,"y":7.88105},{"x":-5.80925,"y":7.88105},{"x":-5.80925,"y":6.82664},{"x":-5.87267,"y":4.16068},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1704062474 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":-0.41578},{"x":-5.69438,"y":-0.41578},{"x":-5.69438,"y":2.65945},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1704062474 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-10.96748,"y":5.15228},{"x":-10.96748,"y":2.28615},{"x":-5.56207,"y":2.28615},{"x":-5.58795,"y":2.37474},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1704062474 + }, + "ConnectionType":1, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":4, + "Points":[{"x":-5.87144,"y":4.21241},{"x":-5.8209,"y":4.21244},{"x":-5.76914,"y":2.11591},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":593035311 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":-0.41578},{"x":-5.69438,"y":-0.41578},{"x":-5.69438,"y":0.82175},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":593035311 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-11.2404,"y":4.90228},{"x":-11.2404,"y":0.04819},{"x":-5.84679,"y":0.04819},{"x":-5.84679,"y":0.61468},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":593035311 + }, + "ConnectionType":1, + "ConnectedWireIndex":40, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-5.56127,"y":2.129},{"x":-5.53619,"y":0.2782},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":593035311 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-3.93143,"y":0.89185},{"x":-3.93143,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":1704062474 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-3.90555,"y":2.70744},{"x":-3.90555,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":93050724 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-3.8279,"y":4.75599},{"x":-3.80202,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":996507241 + }, + "ConnectionType":1, + "ConnectedWireIndex":29, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-6.07973,"y":7.52549},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":196236390 + }, + "ConnectionType":1, + "ConnectedWireIndex":29, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.25392,"y":8.56082},{"x":-8.22804,"y":7.55137},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":196236390 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-6.39033,"y":7.10758},{"x":-6.36445,"y":5.99838},{"x":-6.54563,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":996507241 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-3.64672,"y":7.11136},{"x":-3.62083,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":996507241 + }, + "ConnectionType":1, + "ConnectedWireIndex":34, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-5.54759,"y":4.84415},{"x":-5.58795,"y":7.29886},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":196236390 + }, + "ConnectionType":1, + "ConnectedWireIndex":24, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.20811,"y":4.91129},{"x":-8.07274,"y":7.29508},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":196236390 + }, + "ConnectionType":1, + "ConnectedWireIndex":25, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-8.88523,"y":4.65246},{"x":-8.95277,"y":7.04508},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":196236390 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.97515,"y":5.65228},{"x":-8.97515,"y":6.3254},{"x":-8.22804,"y":6.3254},{"x":-8.2798,"y":6.85253},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":196236390 + }, + "ConnectionType":1, + "ConnectedWireIndex":11, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-8.4293,"y":6.46428},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":996507241 + }, + "ConnectionType":1, + "ConnectedWireIndex":35, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-5.69438,"y":4.57481},{"x":-5.69149,"y":7.04886},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":996507241 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.97515,"y":5.65228},{"x":-8.97515,"y":6.3254},{"x":-5.40677,"y":6.3254},{"x":-5.45854,"y":6.79886},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":996507241 + }, + "ConnectionType":1, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":4, + "Points":[{"x":-5.81541,"y":6.56768},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1209582135 + }, + "ConnectionType":1, + "ConnectedWireIndex":29, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-6.07973,"y":8.56082},{"x":-3.28435,"y":8.76788},{"x":-3.28435,"y":3.20367},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":2109010168 + }, + "ConnectionType":1, + "ConnectedWireIndex":59, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-3.28435,"y":7.73256},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1765310400 + }, + "ConnectionType":1, + "ConnectedWireIndex":59, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-3.28435,"y":5.11835},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1209582135 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-10.96748,"y":5.15228},{"x":-10.96748,"y":2.28615},{"x":-2.76669,"y":2.28615},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1209582135 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.86598,"y":2.64095},{"x":-8.86598,"y":-0.41578},{"x":-2.86169,"y":-0.41578},{"x":-2.86169,"y":0.82175},{"x":-2.86169,"y":2.5818},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1765310400 + }, + "ConnectionType":1, + "ConnectedWireIndex":63, + "ConnectedWireSegmentIndex":4, + "Points":[{"x":-2.86169,"y":2.5818},{"x":-2.86169,"y":4.49716},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":2109010168 + }, + "ConnectionType":1, + "ConnectedWireIndex":64, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.86169,"y":4.44539},{"x":-2.86169,"y":7.11136},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1209582135 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.56907,"y":3.56888},{"x":-3.56907,"y":2.94417},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1765310400 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.46554,"y":3.56888},{"x":-3.5173,"y":3.5136},{"x":-3.5173,"y":4.73011},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":2109010168 + }, + "ConnectionType":1, + "ConnectedWireIndex":67, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-3.467,"y":4.73269},{"x":-3.467,"y":7.31842},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":2109010168 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.97515,"y":5.65228},{"x":-8.97515,"y":6.3254},{"x":-2.74081,"y":6.3254},{"x":-2.74081,"y":6.85063},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":2109010168 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-9.11161,"y":7.65126},{"x":-9.11161,"y":7.93564},{"x":-2.99815,"y":7.93564},{"x":-2.99815,"y":6.5937},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1765310400 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-9.11161,"y":7.65126},{"x":-9.11161,"y":7.93564},{"x":-2.99815,"y":7.93564},{"x":-2.99815,"y":4.00538},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1765310400 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-8.70223,"y":5.40228},{"x":-8.70223,"y":5.31559},{"x":-8.70223,"y":5.72497},{"x":-2.71492,"y":5.72497},{"x":-2.71492,"y":4.28442},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1209582135 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-9.11161,"y":7.65126},{"x":-9.11161,"y":7.93564},{"x":-2.99815,"y":7.93564},{"x":-2.99815,"y":2.11591},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":901753403 + }, + "ConnectionType":1, + "ConnectedWireIndex":59, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-3.28435,"y":3.33242},{"x":-3.18082,"y":1.47705},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":901753403 + }, + "ConnectionType":1, + "ConnectedWireIndex":66, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-3.51856,"y":2.94191},{"x":-3.51856,"y":1.18411},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":901753403 + }, + "ConnectionType":1, + "ConnectedWireIndex":63, + "ConnectedWireSegmentIndex":4, + "Points":[{"x":-2.86169,"y":0.8994},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":901753403 + }, + "ConnectionType":1, + "ConnectedWireIndex":73, + "ConnectedWireSegmentIndex":4, + "Points":[{"x":-2.94902,"y":2.11793},{"x":-2.94902,"y":0.48527},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":901753403 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-11.2404,"y":4.90228},{"x":-11.2404,"y":0.04819},{"x":-2.76669,"y":0.04819},{"x":-2.76669,"y":0.66455},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":1765310400 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-1.23958,"y":4.59692},{"x":-1.23958,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":2109010168 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":0.0,"y":0.0},{"x":-1.18781,"y":7.16313},{"x":-1.18781,"y":6.05248}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":1209582135 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-1.03252,"y":2.70367},{"x":-1.03252,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":901753403 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":-1.2137,"y":0.97705},{"x":-1.2137,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1452339357 + }, + "ConnectionType":1, + "ConnectedWireIndex":59, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.36539,"y":8.76188},{"x":-0.79957,"y":8.71612},{"x":-0.79957,"y":1.28454},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1920561870 + }, + "ConnectionType":1, + "ConnectedWireIndex":83, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.79957,"y":7.70667},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":68013122 + }, + "ConnectionType":1, + "ConnectedWireIndex":83, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.79957,"y":5.32542},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1008556545 + }, + "TargetPinAddress":{ + "PinID":62573454, + "PinOwnerID":1289830691 + }, + "ConnectionType":1, + "ConnectedWireIndex":83, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.79957,"y":3.43595},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1920561870 + }, + "ConnectionType":1, + "ConnectedWireIndex":67, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.56907,"y":3.56888},{"x":-0.54074,"y":3.56888},{"x":-0.54074,"y":7.34431},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1452339357 + }, + "ConnectionType":1, + "ConnectedWireIndex":87, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.54074,"y":3.61713},{"x":-0.54074,"y":1.00293},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":1289830691 + }, + "ConnectionType":1, + "ConnectedWireIndex":88, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-0.54074,"y":3.02182},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":128408083 + }, + "TargetPinAddress":{ + "PinID":128408083, + "PinOwnerID":68013122 + }, + "ConnectionType":1, + "ConnectedWireIndex":87, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.54074,"y":5.01482},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1920561870 + }, + "ConnectionType":1, + "ConnectedWireIndex":63, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.86169,"y":-0.41578},{"x":-0.38544,"y":-0.41578},{"x":-0.38544,"y":7.11136},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":68013122 + }, + "ConnectionType":1, + "ConnectedWireIndex":91, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.38544,"y":4.60069},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1289830691 + }, + "ConnectionType":1, + "ConnectedWireIndex":91, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.38544,"y":2.68534},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1250065692 + }, + "TargetPinAddress":{ + "PinID":1414346718, + "PinOwnerID":1452339357 + }, + "ConnectionType":1, + "ConnectedWireIndex":91, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-0.38544,"y":0.64057},{"x":-0.33367,"y":0.76998},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1452339357 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-9.96221,"y":7.90126},{"x":-9.96221,"y":8.92318},{"x":-1.03252,"y":8.92318},{"x":-1.03252,"y":0.2782},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1289830691 + }, + "ConnectionType":1, + "ConnectedWireIndex":95, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-1.03252,"y":2.29709},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":68013122 + }, + "ConnectionType":1, + "ConnectedWireIndex":95, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-1.03252,"y":4.21244},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1641454338 + }, + "TargetPinAddress":{ + "PinID":509504792, + "PinOwnerID":1920561870 + }, + "ConnectionType":1, + "ConnectedWireIndex":95, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-1.03252,"y":6.69723},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":788553274, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1920561870 + }, + "ConnectionType":1, + "ConnectedWireIndex":69, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.84434,"y":6.3254},{"x":-0.15249,"y":6.3254},{"x":-0.15249,"y":6.82664},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":250382178, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":68013122 + }, + "ConnectionType":1, + "ConnectedWireIndex":72, + "ConnectedWireSegmentIndex":3, + "Points":[{"x":-2.76669,"y":5.72497},{"x":-0.17837,"y":5.71367},{"x":-0.17837,"y":4.44539},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1932349665, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1289830691 + }, + "ConnectionType":1, + "ConnectedWireIndex":62, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.79257,"y":2.28615},{"x":-0.17837,"y":2.16767},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1784140084, + "PinOwnerID":1271659330 + }, + "TargetPinAddress":{ + "PinID":710473788, + "PinOwnerID":1452339357 + }, + "ConnectionType":1, + "ConnectedWireIndex":78, + "ConnectedWireSegmentIndex":2, + "Points":[{"x":-2.76669,"y":0.04819},{"x":0.02869,"y":0.04819},{"x":0.02869,"y":0.48527},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":1452339357 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":0.0,"y":0.0},{"x":1.4005,"y":0.78454},{"x":1.4005,"y":1.74031}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":1289830691 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":0.0,"y":0.0},{"x":1.73698,"y":2.76299},{"x":1.64152,"y":2.81475}] + }, + { + "SourcePinAddress":{ + "PinID":1853328632, + "PinOwnerID":68013122 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1606177387 + }, + "ConnectionType":2, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":0.0,"y":0.0},{"x":1.64152,"y":4.62657}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1606177387 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":2002509464 + }, + "ConnectionType":1, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":1.64152,"y":3.79831},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1904781615 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":2002509464 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-13.61174,"y":2.09002},{"x":-13.61174,"y":-1.68892},{"x":2.09935,"y":-1.68892},{"x":2.09935,"y":3.42963},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":2002509464 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1706767138 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/MEM-26-16Bit.json b/TestData/Projects/abc/Chips/MEM-26-16Bit.json new file mode 100644 index 00000000..bea3fe43 --- /dev/null +++ b/TestData/Projects/abc/Chips/MEM-26-16Bit.json @@ -0,0 +1,387 @@ +{ + "DLSVersion": "2.1.6", + "Name": "MEM-26-16Bit", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.925, + "y": 1.25 + }, + "Colour": { + "r": 0.9385849, + "g": 0.226427153, + "b": 0.8278427, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1788504060, + "Position":{ + "x":-7.51193, + "y":-2.30507 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1445805454, + "Position":{ + "x":-7.51193, + "y":-3.03257 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":301747076, + "Position":{ + "x":-7.51193, + "y":-3.75882 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1871499993, + "Position":{ + "x":4.56838, + "y":-3.86015 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"MEM-256-4bit", + "ID":226758092, + "Label":"", + "Position":{ + "x":-1.02612, + "y":-1.88785 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1494471021}], + "InternalData":null + }, + { + "Name":"MEM-256-4bit", + "ID":2071236170, + "Label":"", + "Position":{ + "x":-1.02612, + "y":-3.14285 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1494471021}], + "InternalData":null + }, + { + "Name":"MEM-256-4bit", + "ID":1117823121, + "Label":"", + "Position":{ + "x":-1.02612, + "y":-4.39785 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1494471021}], + "InternalData":null + }, + { + "Name":"MEM-256-4bit", + "ID":1094213198, + "Label":"", + "Position":{ + "x":-1.02612, + "y":-5.65285 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1494471021}], + "InternalData":null + }, + { + "Name":"16-4BIT", + "ID":1705298887, + "Label":"", + "Position":{ + "x":-5.31207, + "y":-3.23432 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4}], + "InternalData":null + }, + { + "Name":"4-16BIT", + "ID":5103584, + "Label":"", + "Position":{ + "x":1.81854, + "y":-4.10669 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":4}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1788504060 + }, + "TargetPinAddress":{ + "PinID":608067916, + "PinOwnerID":226758092 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.3777,"y":-2.30507},{"x":-3.3777,"y":-1.58442},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1788504060 + }, + "TargetPinAddress":{ + "PinID":608067916, + "PinOwnerID":1094213198 + }, + "ConnectionType":1, + "ConnectedWireIndex":0, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.3777,"y":-2.30507},{"x":-3.3777,"y":-5.35833},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1788504060 + }, + "TargetPinAddress":{ + "PinID":608067916, + "PinOwnerID":1117823121 + }, + "ConnectionType":1, + "ConnectedWireIndex":1, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.3777,"y":-4.08535},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1788504060 + }, + "TargetPinAddress":{ + "PinID":608067916, + "PinOwnerID":2071236170 + }, + "ConnectionType":1, + "ConnectedWireIndex":1, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.3777,"y":-2.83035},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1445805454 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1705298887 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":1705298887 + }, + "TargetPinAddress":{ + "PinID":1514528652, + "PinOwnerID":226758092 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.71906,"y":-2.67182},{"x":-2.99841,"y":-1.96371},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1705298887 + }, + "TargetPinAddress":{ + "PinID":1514528652, + "PinOwnerID":2071236170 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.77595,"y":-3.04682},{"x":-3.03634,"y":-3.25329},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":1705298887 + }, + "TargetPinAddress":{ + "PinID":1514528652, + "PinOwnerID":1117823121 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.71906,"y":-3.42182},{"x":-3.71906,"y":-4.54287},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":1705298887 + }, + "TargetPinAddress":{ + "PinID":1514528652, + "PinOwnerID":1094213198 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.98456,"y":-3.79682},{"x":-3.98456,"y":-5.75659},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":301747076 + }, + "TargetPinAddress":{ + "PinID":2087071140, + "PinOwnerID":1094213198 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-4.00352,"y":-6.02209},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":301747076 + }, + "TargetPinAddress":{ + "PinID":2087071140, + "PinOwnerID":226758092 + }, + "ConnectionType":1, + "ConnectedWireIndex":9, + "ConnectedWireSegmentIndex":1, + "Points":[{"x":-2.50587,"y":-6.07506},{"x":-2.50587,"y":-2.24818},{"x":-2.08812,"y":-2.24818},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":301747076 + }, + "TargetPinAddress":{ + "PinID":2087071140, + "PinOwnerID":2071236170 + }, + "ConnectionType":1, + "ConnectedWireIndex":10, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.50587,"y":-3.57568},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":301747076 + }, + "TargetPinAddress":{ + "PinID":2087071140, + "PinOwnerID":1117823121 + }, + "ConnectionType":1, + "ConnectedWireIndex":10, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-2.50587,"y":-4.92215},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1494471021, + "PinOwnerID":1094213198 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":5103584 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.56689,"y":-5.65285},{"x":0.56689,"y":-4.75147},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1494471021, + "PinOwnerID":1117823121 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":5103584 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1494471021, + "PinOwnerID":2071236170 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":5103584 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.33932,"y":-3.12054},{"x":0.33932,"y":-3.91919},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1494471021, + "PinOwnerID":226758092 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":5103584 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.52896,"y":-1.88785},{"x":0.52896,"y":-3.51879},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":5103584 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1871499993 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/OR.json b/TestData/Projects/abc/Chips/OR.json new file mode 100644 index 00000000..8490a2b3 --- /dev/null +++ b/TestData/Projects/abc/Chips/OR.json @@ -0,0 +1,189 @@ +{ + "DLSVersion": "2.1.6", + "Name": "OR", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.425, + "y": 0.5 + }, + "Colour": { + "r": 0.33606708, + "g": 0.288882, + "b": 0.239966869, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1145381870, + "Position":{ + "x":-6.16756, + "y":-0.57901 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":201883914, + "Position":{ + "x":-6.16756, + "y":-1.09401 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1757969751, + "Position":{ + "x":0.80677, + "y":-0.79426 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"NAND", + "ID":1044679224, + "Label":"", + "Position":{ + "x":-3.79973, + "y":-0.38527 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"NAND", + "ID":743852437, + "Label":"", + "Position":{ + "x":-3.79973, + "y":-1.01527 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"NAND", + "ID":1316120992, + "Label":"", + "Position":{ + "x":-1.88394, + "y":-0.83731 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":743852437 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1316120992 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1044679224 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1316120992 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1145381870 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1044679224 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1145381870 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1044679224 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":201883914 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":743852437 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":201883914 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":743852437 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1316120992 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1757969751 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/POS KEYCODE.json b/TestData/Projects/abc/Chips/POS KEYCODE.json new file mode 100644 index 00000000..5e10e95e --- /dev/null +++ b/TestData/Projects/abc/Chips/POS KEYCODE.json @@ -0,0 +1,208 @@ +{ + "DLSVersion": "2.1.6", + "Name": "POS KEYCODE", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.175, + "y": 0.5 + }, + "Colour": { + "r": 0.206764355, + "g": 0.3792947, + "b": 0.200371891, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":1602916885, + "Position":{ + "x":-0.81751, + "y":-6.42034 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"1-8BIT", + "ID":1132309447, + "Label":"", + "Position":{ + "x":-3.60527, + "y":-6.78066 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":8}], + "InternalData":null + }, + { + "Name":"not", + "ID":1048502404, + "Label":"", + "Position":{ + "x":-7.2085, + "y":-5.87037 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":922960624, + "Label":"", + "Position":{ + "x":-7.2085, + "y":-6.37537 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":8, + "PinOwnerID":1132309447 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1602916885 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1048502404 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":922960624 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-6.44993,"y":-5.87037},{"x":-6.44993,"y":-4.71355},{"x":-8.0619,"y":-4.71355},{"x":-8.0619,"y":-6.28759},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":922960624 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1132309447 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/RETURN CODE.json b/TestData/Projects/abc/Chips/RETURN CODE.json new file mode 100644 index 00000000..993bddba --- /dev/null +++ b/TestData/Projects/abc/Chips/RETURN CODE.json @@ -0,0 +1,320 @@ +{ + "DLSVersion": "2.1.6", + "Name": "RETURN CODE", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.1, + "y": 0.5 + }, + "Colour": { + "r": 0.8265675, + "g": 0.897693336, + "b": 0.6444589, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":936303888, + "Position":{ + "x":0.54847, + "y":-3.72176 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + } + ], + "SubChips":[ + { + "Name":"1-16BIT", + "ID":511542589, + "Label":"", + "Position":{ + "x":-3.24006, + "y":-4.15228 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"not", + "ID":30948655, + "Label":"", + "Position":{ + "x":-7.22232, + "y":-3.35582 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":550551870, + "Label":"", + "Position":{ + "x":-7.22232, + "y":-5.12332 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":511542589 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":936303888 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":550551870 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":30948655 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-6.59807,"y":-5.12332},{"x":-6.59807,"y":-4.30296},{"x":-8.19098,"y":-4.30296},{"x":-8.19098,"y":-3.39888},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":550551870 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":550551870 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":550551870 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":30948655 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":511542589 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/RIGHT ARROW CODE.json b/TestData/Projects/abc/Chips/RIGHT ARROW CODE.json new file mode 100644 index 00000000..124b9e97 --- /dev/null +++ b/TestData/Projects/abc/Chips/RIGHT ARROW CODE.json @@ -0,0 +1,912 @@ +{ + "DLSVersion": "2.1.6", + "Name": "RIGHT ARROW CODE", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.7, + "y": 1.5 + }, + "Colour": { + "r": 0.7026052, + "g": 0.698388, + "b": 0.964214444, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":1401760594, + "Position":{ + "x":7.07965, + "y":1.57419 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":174266292, + "Position":{ + "x":7.07965, + "y":-0.06452 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":576728594, + "Position":{ + "x":7.07965, + "y":-2.05382 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + } + ], + "SubChips":[ + { + "Name":"not", + "ID":1162043365, + "Label":"", + "Position":{ + "x":-3.92117, + "y":2.15188 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":373776148, + "Label":"", + "Position":{ + "x":-0.60145, + "y":3.68116 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":326065641, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-0.44884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":17392591, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-4.57884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"not", + "ID":793248295, + "Label":"", + "Position":{ + "x":-3.98951, + "y":3.42376 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":574147722, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-0.12157 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":964228863, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-1.52657 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":866641419, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-3.78831 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1313578125, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-5.30581 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":373776148 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1401760594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":326065641 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":174266292 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":17392591 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":576728594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":793248295 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.05397,"y":2.15188},{"x":-3.0724,"y":1.55983},{"x":-5.0077,"y":1.61513},{"x":-5.02613,"y":3.36611},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":574147722 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.74176,"y":-1.52657},{"x":-3.74176,"y":-1.03546},{"x":-4.85873,"y":-1.03546},{"x":-4.85873,"y":-0.02002},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":866641419 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.72011,"y":-5.30581},{"x":-3.72011,"y":-4.73844},{"x":-5.03803,"y":-4.73844},{"x":-5.03803,"y":-3.77299},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":17392591 + }, + "ConnectionType":1, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.73544,"y":-5.30581},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/UP ARROW CODE.json b/TestData/Projects/abc/Chips/UP ARROW CODE.json new file mode 100644 index 00000000..72e9087a --- /dev/null +++ b/TestData/Projects/abc/Chips/UP ARROW CODE.json @@ -0,0 +1,912 @@ +{ + "DLSVersion": "2.1.6", + "Name": "UP ARROW CODE", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.7, + "y": 1.5 + }, + "Colour": { + "r": 0.7026052, + "g": 0.698388, + "b": 0.964214444, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":1401760594, + "Position":{ + "x":7.07965, + "y":1.57419 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":174266292, + "Position":{ + "x":7.07965, + "y":-0.06452 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":576728594, + "Position":{ + "x":7.07965, + "y":-2.05382 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + } + ], + "SubChips":[ + { + "Name":"not", + "ID":1162043365, + "Label":"", + "Position":{ + "x":-3.92117, + "y":2.15188 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":373776148, + "Label":"", + "Position":{ + "x":-0.60145, + "y":3.68116 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":326065641, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-0.44884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"1-16BIT", + "ID":17392591, + "Label":"", + "Position":{ + "x":-0.60145, + "y":-4.57884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"not", + "ID":793248295, + "Label":"", + "Position":{ + "x":-3.98951, + "y":3.42376 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":574147722, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-0.12157 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":964228863, + "Label":"", + "Position":{ + "x":-4.33071, + "y":-1.52657 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":866641419, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-3.78831 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"not", + "ID":1313578125, + "Label":"", + "Position":{ + "x":-4.24115, + "y":-5.30581 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":373776148 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1401760594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":326065641 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":174266292 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":17392591 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":576728594 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":793248295 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":373776148 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1162043365 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":793248295 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.05397,"y":2.15188},{"x":-3.0724,"y":1.55983},{"x":-5.0077,"y":1.61513},{"x":-5.02613,"y":3.36611},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":574147722 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.74176,"y":-1.52657},{"x":-3.74176,"y":-1.03546},{"x":-4.85873,"y":-1.03546},{"x":-4.85873,"y":-0.02002},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":964228863 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":574147722 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":326065641 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":866641419 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.72011,"y":-5.30581},{"x":-3.72011,"y":-4.73844},{"x":-5.03803,"y":-4.73844},{"x":-5.03803,"y":-3.77299},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":9, + "PinOwnerID":17392591 + }, + "ConnectionType":1, + "ConnectedWireIndex":37, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-3.73544,"y":-5.30581},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":12, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":11, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":10, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":13, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1313578125 + }, + "TargetPinAddress":{ + "PinID":15, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":866641419 + }, + "TargetPinAddress":{ + "PinID":14, + "PinOwnerID":17392591 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/XNOR.json b/TestData/Projects/abc/Chips/XNOR.json new file mode 100644 index 00000000..18709b4a --- /dev/null +++ b/TestData/Projects/abc/Chips/XNOR.json @@ -0,0 +1,136 @@ +{ + "DLSVersion": "2.1.6", + "Name": "XNOR", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.725, + "y": 0.5 + }, + "Colour": { + "r": 0.4437429, + "g": 0.256710321, + "b": 0.307766259, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":493025100, + "Position":{ + "x":-3.35696, + "y":-3.05446 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":495787712, + "Position":{ + "x":-3.35696, + "y":-3.56946 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":2069837017, + "Position":{ + "x":2.86111, + "y":-2.94684 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"XOR", + "ID":43216753, + "Label":"", + "Position":{ + "x":-0.83961, + "y":-3.20514 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1205119975}], + "InternalData":null + }, + { + "Name":"not", + "ID":1776800005, + "Label":"", + "Position":{ + "x":0.68802, + "y":-3.20514 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":1776800005 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":2069837017 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1205119975, + "PinOwnerID":43216753 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":1776800005 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":495787712 + }, + "TargetPinAddress":{ + "PinID":861824484, + "PinOwnerID":43216753 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":493025100 + }, + "TargetPinAddress":{ + "PinID":105888070, + "PinOwnerID":43216753 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/XOR.json b/TestData/Projects/abc/Chips/XOR.json new file mode 100644 index 00000000..8e5b55dd --- /dev/null +++ b/TestData/Projects/abc/Chips/XOR.json @@ -0,0 +1,189 @@ +{ + "DLSVersion": "2.1.6", + "Name": "XOR", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.575, + "y": 0.5 + }, + "Colour": { + "r": 0.7932156, + "g": 0.361134619, + "b": 0.5853171, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":105888070, + "Position":{ + "x":-7.2869, + "y":-2.36564 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":861824484, + "Position":{ + "x":-7.2869, + "y":-2.88064 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1205119975, + "Position":{ + "x":0.84982, + "y":-2.38717 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"OR", + "ID":982672888, + "Label":"", + "Position":{ + "x":-3.41227, + "y":-1.97818 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1757969751}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1739789058, + "Label":"", + "Position":{ + "x":-1.60411, + "y":-2.43022 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"NAND", + "ID":1678570943, + "Label":"", + "Position":{ + "x":-3.28311, + "y":-3.09752 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":105888070 + }, + "TargetPinAddress":{ + "PinID":1145381870, + "PinOwnerID":982672888 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":861824484 + }, + "TargetPinAddress":{ + "PinID":201883914, + "PinOwnerID":982672888 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-6.64112,"y":-2.86073},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":105888070 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1678570943 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":861824484 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1678570943 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1678570943 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1739789058 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1757969751, + "PinOwnerID":982672888 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1739789058 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1739789058 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1205119975 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/abc.json b/TestData/Projects/abc/Chips/abc.json new file mode 100644 index 00000000..65d1a5f5 --- /dev/null +++ b/TestData/Projects/abc/Chips/abc.json @@ -0,0 +1,313 @@ +{ + "DLSVersion": "2.1.6", + "Name": "abc", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.575, + "y": 1.625 + }, + "Colour": { + "r": 0.08280435, + "g": 0.24062629, + "b": 0.205254316, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1120625913, + "Position":{ + "x":-6.64493, + "y":-0.43478 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":562815454, + "Position":{ + "x":-6.64493, + "y":-0.95103 + }, + "BitCount":4, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1639884850, + "Position":{ + "x":-6.64493, + "y":-1.46853 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":211423142, + "Position":{ + "x":-6.64493, + "y":-2.19603 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":846836813, + "Position":{ + "x":3.86232, + "y":2.84058 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"OUT", + "ID":1498461388, + "Position":{ + "x":3.86232, + "y":2.32433 + }, + "BitCount":4, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"OUT", + "ID":1469855993, + "Position":{ + "x":3.86232, + "y":1.80683 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"OUT", + "ID":1076293247, + "Position":{ + "x":3.86232, + "y":1.07933 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"PORT-IN-1", + "ID":1400226719, + "Label":"in 1", + "Position":{ + "x":-1.44203, + "y":3.18841 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":null + }, + { + "Name":"PORT-IN-4", + "ID":752634810, + "Label":"in 4", + "Position":{ + "x":-1.44203, + "y":2.35841 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":null + }, + { + "Name":"PORT-IN-8", + "ID":1708499395, + "Label":"in 8", + "Position":{ + "x":-1.44203, + "y":1.52841 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":null + }, + { + "Name":"PORT-IN-16", + "ID":2127410803, + "Label":"in 16", + "Position":{ + "x":-1.44203, + "y":0.69841 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":null + }, + { + "Name":"PORT-OUT-1", + "ID":1342405114, + "Label":"out 1", + "Position":{ + "x":-1.44203, + "y":-0.13159 + }, + "OutputPinColourInfo":[], + "InternalData":null + }, + { + "Name":"PORT-OUT-4", + "ID":1905283518, + "Label":"out 4", + "Position":{ + "x":-1.44203, + "y":-0.96159 + }, + "OutputPinColourInfo":[], + "InternalData":null + }, + { + "Name":"PORT-OUT-8", + "ID":1184660617, + "Label":"out 8", + "Position":{ + "x":-1.44203, + "y":-1.79159 + }, + "OutputPinColourInfo":[], + "InternalData":null + }, + { + "Name":"PORT-OUT-16", + "ID":773796616, + "Label":"out 16", + "Position":{ + "x":-1.44203, + "y":-2.62159 + }, + "OutputPinColourInfo":[], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1120625913 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1342405114 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":562815454 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1905283518 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1639884850 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1184660617 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":211423142 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":773796616 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1400226719 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":846836813 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":752634810 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1498461388 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1708499395 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1469855993 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":2127410803 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1076293247 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/check match 16 bit.json b/TestData/Projects/abc/Chips/check match 16 bit.json new file mode 100644 index 00000000..581c7cee --- /dev/null +++ b/TestData/Projects/abc/Chips/check match 16 bit.json @@ -0,0 +1,1331 @@ +{ + "DLSVersion": "2.1.6", + "Name": "check match 16 bit", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.85, + "y": 1.0 + }, + "Colour": { + "r": 0.178367078, + "g": 0.5548097, + "b": 0.210687816, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1948581144, + "Position":{ + "x":-11.4254, + "y":1.87493 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":915066149, + "Position":{ + "x":-11.4254, + "y":0.93743 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":820129515, + "Position":{ + "x":8.0034, + "y":-1.31088 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"XNOR", + "ID":588182626, + "Label":"", + "Position":{ + "x":-2.68997, + "y":3.05884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1529238046, + "Label":"", + "Position":{ + "x":-2.68997, + "y":2.42884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":295894809, + "Label":"", + "Position":{ + "x":-2.68997, + "y":1.79884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":504738753, + "Label":"", + "Position":{ + "x":-2.68997, + "y":1.16884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":815061217, + "Label":"", + "Position":{ + "x":-2.68997, + "y":0.53884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":565054575, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-0.09116 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":672381241, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-0.72116 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":995543542, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-1.35115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1840689788, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-1.98115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1047880782, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-2.61115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1572018363, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-3.24115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":1660374150, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-3.87115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":947202819, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-4.50115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":391630958, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-5.13115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":757872349, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-5.76115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"XNOR", + "ID":313864617, + "Label":"", + "Position":{ + "x":-2.68997, + "y":-6.39115 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2069837017}], + "InternalData":null + }, + { + "Name":"16-1BIT", + "ID":560344340, + "Label":"", + "Position":{ + "x":-8.28408, + "y":2.67138 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4},{"PinColour":0,"PinID":5},{"PinColour":0,"PinID":6},{"PinColour":0,"PinID":7},{"PinColour":0,"PinID":8},{"PinColour":0,"PinID":9},{"PinColour":0,"PinID":10},{"PinColour":0,"PinID":11},{"PinColour":0,"PinID":12},{"PinColour":0,"PinID":13},{"PinColour":0,"PinID":14},{"PinColour":0,"PinID":15},{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"16-1BIT", + "ID":584752890, + "Label":"", + "Position":{ + "x":-8.28408, + "y":-1.45862 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2},{"PinColour":0,"PinID":3},{"PinColour":0,"PinID":4},{"PinColour":0,"PinID":5},{"PinColour":0,"PinID":6},{"PinColour":0,"PinID":7},{"PinColour":0,"PinID":8},{"PinColour":0,"PinID":9},{"PinColour":0,"PinID":10},{"PinColour":0,"PinID":11},{"PinColour":0,"PinID":12},{"PinColour":0,"PinID":13},{"PinColour":0,"PinID":14},{"PinColour":0,"PinID":15},{"PinColour":0,"PinID":16}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1819454839, + "Label":"", + "Position":{ + "x":0.62347, + "y":0.73406 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":803316608, + "Label":"", + "Position":{ + "x":0.62347, + "y":0.10406 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1892581609, + "Label":"", + "Position":{ + "x":0.62347, + "y":-0.52594 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1486596020, + "Label":"", + "Position":{ + "x":0.62347, + "y":-1.15594 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1907079407, + "Label":"", + "Position":{ + "x":0.62347, + "y":-1.78593 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1585660772, + "Label":"", + "Position":{ + "x":0.62347, + "y":-2.41593 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1582196500, + "Label":"", + "Position":{ + "x":0.62347, + "y":-3.04593 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":781525020, + "Label":"", + "Position":{ + "x":0.62347, + "y":-3.67593 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1139672007, + "Label":"", + "Position":{ + "x":3.14082, + "y":-0.36375 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1228029371, + "Label":"", + "Position":{ + "x":3.14082, + "y":-0.99375 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1962149893, + "Label":"", + "Position":{ + "x":3.14082, + "y":-1.62375 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":1729354496, + "Label":"", + "Position":{ + "x":3.14082, + "y":-2.25375 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":169958628, + "Label":"", + "Position":{ + "x":4.68996, + "y":-0.70816 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":789879122, + "Label":"", + "Position":{ + "x":4.68996, + "y":-1.33816 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + }, + { + "Name":"AND", + "ID":557199244, + "Label":"", + "Position":{ + "x":6.13152, + "y":-1.11715 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":544949934}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1948581144 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":560344340 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":915066149 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":584752890 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":588182626 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":588182626 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1529238046 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":295894809 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":504738753 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":5, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":815061217 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":6, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":565054575 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":7, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":672381241 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":8, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":995543542 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":9, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1840689788 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":10, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1047880782 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":11, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1572018363 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":12, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":1660374150 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":13, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":947202819 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":14, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":391630958 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":15, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":757872349 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":560344340 + }, + "TargetPinAddress":{ + "PinID":493025100, + "PinOwnerID":313864617 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":16, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":313864617 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":15, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":757872349 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":14, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":391630958 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":13, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":947202819 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":12, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1660374150 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":11, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1572018363 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":10, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1047880782 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":9, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1840689788 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":8, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":995543542 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":7, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":672381241 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":6, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":565054575 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":5, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":815061217 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":4, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":504738753 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":3, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":295894809 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":584752890 + }, + "TargetPinAddress":{ + "PinID":495787712, + "PinOwnerID":1529238046 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":588182626 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1819454839 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1529238046 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1819454839 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":295894809 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":803316608 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.19315,"y":0.28202},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":504738753 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":803316608 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":815061217 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1892581609 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":565054575 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1892581609 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":672381241 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1486596020 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":995543542 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1486596020 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1840689788 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1907079407 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1047880782 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1907079407 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1572018363 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1585660772 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":1660374150 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1585660772 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":947202819 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1582196500 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":391630958 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1582196500 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":757872349 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":781525020 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.19315,"y":-3.57108},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2069837017, + "PinOwnerID":313864617 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":781525020 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":789879122 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":557199244 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":169958628 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":557199244 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1729354496 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":789879122 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1962149893 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":789879122 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1228029371 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":169958628 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1139672007 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":169958628 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":781525020 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1729354496 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1582196500 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1729354496 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1585660772 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1962149893 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1907079407 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1962149893 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1486596020 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1228029371 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1892581609 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1228029371 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":803316608 + }, + "TargetPinAddress":{ + "PinID":1358543841, + "PinOwnerID":1139672007 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":1819454839 + }, + "TargetPinAddress":{ + "PinID":959756263, + "PinOwnerID":1139672007 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":544949934, + "PinOwnerID":557199244 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":820129515 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/input Chip.json b/TestData/Projects/abc/Chips/input Chip.json new file mode 100644 index 00000000..9e124a0a --- /dev/null +++ b/TestData/Projects/abc/Chips/input Chip.json @@ -0,0 +1,60 @@ +{ + "DLSVersion": "2.1.6", + "Name": "input Chip", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 1.025, + "y": 0.5 + }, + "Colour": { + "r": 0.368803322, + "g": 0.208036527, + "b": 0.5975658, + "a": 1 + }, + "InputPins":[], + "OutputPins":[ + { + "Name":"OUT", + "ID":92508421, + "Position":{ + "x":-0.81884, + "y":1.30435 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"PORT-IN-16", + "ID":1582163891, + "Label":"input", + "Position":{ + "x":-5.1087, + "y":1.31884 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1582163891 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":92508421 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/main.json b/TestData/Projects/abc/Chips/main.json new file mode 100644 index 00000000..9529d040 --- /dev/null +++ b/TestData/Projects/abc/Chips/main.json @@ -0,0 +1,288 @@ +{ + "DLSVersion": "2.1.6", + "Name": "main", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.725, + "y": 0.75 + }, + "Colour": { + "r": 0.6089147, + "g": 0.8374615, + "b": 0.280700624, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1155084703, + "Position":{ + "x":-3.03634, + "y":-2.89297 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1616265362, + "Position":{ + "x":-4.8535, + "y":-6.08613 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[], + "SubChips":[ + { + "Name":"input Chip", + "ID":1662268659, + "Label":"", + "Position":{ + "x":-3.6432, + "y":-4.22047 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":92508421}], + "InternalData":null + }, + { + "Name":"POS KEYCODE", + "ID":639616795, + "Label":"", + "Position":{ + "x":-2.5243, + "y":-1.94892 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1602916885}], + "InternalData":null + }, + { + "Name":"MEM-26-16Bit", + "ID":738482442, + "Label":"", + "Position":{ + "x":-0.13479, + "y":-4.2584 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1871499993}], + "InternalData":null + }, + { + "Name":"8 Bit Match Checker", + "ID":667621186, + "Label":"", + "Position":{ + "x":0.52896, + "y":-2.11543 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":297589187}], + "InternalData":null + }, + { + "Name":"not", + "ID":690711554, + "Label":"", + "Position":{ + "x":2.57712, + "y":-1.94475 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1499139914}], + "InternalData":null + }, + { + "Name":"16 3 state buff", + "ID":1313425636, + "Label":"", + "Position":{ + "x":3.67152, + "y":-4.24997 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1901857811}], + "InternalData":null + }, + { + "Name":"16-8BIT", + "ID":1262981259, + "Label":"", + "Position":{ + "x":5.4421, + "y":-4.28276 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1},{"PinColour":0,"PinID":2}], + "InternalData":null + }, + { + "Name":"OR", + "ID":1696252250, + "Label":"", + "Position":{ + "x":-3.05013, + "y":-5.85661 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":1757969751}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1155084703 + }, + "TargetPinAddress":{ + "PinID":1788504060, + "PinOwnerID":738482442 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1155084703 + }, + "TargetPinAddress":{ + "PinID":2110222065, + "PinOwnerID":667621186 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1602916885, + "PinOwnerID":639616795 + }, + "TargetPinAddress":{ + "PinID":1051149185, + "PinOwnerID":667621186 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":92508421, + "PinOwnerID":1662268659 + }, + "TargetPinAddress":{ + "PinID":1445805454, + "PinOwnerID":738482442 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":297589187, + "PinOwnerID":667621186 + }, + "TargetPinAddress":{ + "PinID":798331878, + "PinOwnerID":690711554 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1871499993, + "PinOwnerID":738482442 + }, + "TargetPinAddress":{ + "PinID":182396547, + "PinOwnerID":1313425636 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":297589187, + "PinOwnerID":667621186 + }, + "TargetPinAddress":{ + "PinID":47629555, + "PinOwnerID":1313425636 + }, + "ConnectionType":1, + "ConnectedWireIndex":4, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":1.86368,"y":-2.03178},{"x":2.03209,"y":-4.77459},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1901857811, + "PinOwnerID":1313425636 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1262981259 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1616265362 + }, + "TargetPinAddress":{ + "PinID":201883914, + "PinOwnerID":1696252250 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1499139914, + "PinOwnerID":690711554 + }, + "TargetPinAddress":{ + "PinID":1145381870, + "PinOwnerID":1696252250 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":3.58223,"y":-1.94475},{"x":3.58223,"y":-1.37582},{"x":-5.08449,"y":-1.37582},{"x":-5.08449,"y":-5.26351},{"x":-3.54196,"y":-5.26351},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":1757969751, + "PinOwnerID":1696252250 + }, + "TargetPinAddress":{ + "PinID":301747076, + "PinOwnerID":738482442 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/Chips/not.json b/TestData/Projects/abc/Chips/not.json new file mode 100644 index 00000000..2b86b29f --- /dev/null +++ b/TestData/Projects/abc/Chips/not.json @@ -0,0 +1,100 @@ +{ + "DLSVersion": "2.1.6", + "Name": "not", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.575, + "y": 0.375 + }, + "Colour": { + "r": 0.56307, + "g": 0.18587999, + "b": 0.0663766339, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":798331878, + "Position":{ + "x":-7.00725, + "y":-1.26087 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1499139914, + "Position":{ + "x":-2.96377, + "y":-1.23188 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"NAND", + "ID":1245184735, + "Label":"", + "Position":{ + "x":-5.03623, + "y":-1.17391 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":1245184735 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1499139914 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":798331878 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1245184735 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":798331878 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1245184735 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/abc/ProjectDescription.json b/TestData/Projects/abc/ProjectDescription.json new file mode 100644 index 00000000..61f390c4 --- /dev/null +++ b/TestData/Projects/abc/ProjectDescription.json @@ -0,0 +1,135 @@ +{ + "ProjectName": "abc", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-06-17T22:26:39.789-07:00", + "LastSaveTime": "2025-07-13T15:29:45.649-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[ + "abc", + "input Chip", + "not", + "DELETE KEY CODE", + "RIGHT ARROW CODE", + "LEFT ARROW CODE", + "DOWN ARROW CODE", + "UP ARROW CODE", + "RETURN CODE", + "AND", + "OR", + "XOR", + "XNOR", + "check match 16 bit", + "D-Latch", + "2-bit decoder", + "MEM-1", + "MEM-16", + "MEM-256", + "MEM-256-UNMODULAR", + "MEM-256-4bit", + "MEM-26-16Bit", + "POS KEYCODE", + "8 Bit Match Checker", + "main", + "16 3 state buff" + ], + "StarredList":[ + { + "Name":"BASIC", + "IsCollection":true + }, + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"MERGE/SPLIT", + "IsCollection":true + }, + { + "Name":"BUS", + "IsCollection":true + }, + { + "Name":"DISPLAY", + "IsCollection":true + }, + { + "Name":"MEMORY", + "IsCollection":true + }, + { + "Name":"PORTS", + "IsCollection":true + }, + { + "Name":"OTHER", + "IsCollection":true + }, + { + "Name":"main", + "IsCollection":false + }, + { + "Name":"16 3 state buff", + "IsCollection":false + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":false, + "Name":"BASIC", + "DependsOnModIDs":[] + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":false, + "Name":"IN/OUT", + "DependsOnModIDs":[] + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":false, + "Name":"MERGE/SPLIT", + "DependsOnModIDs":[] + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":false, + "Name":"BUS", + "DependsOnModIDs":[] + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","Text Display"], + "IsToggledOpen":false, + "Name":"DISPLAY", + "DependsOnModIDs":[] + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32","MEM-1","MEM-16","MEM-256","MEM-256-UNMODULAR","MEM-256-4bit","MEM-26-16Bit"], + "IsToggledOpen":false, + "Name":"MEMORY", + "DependsOnModIDs":[] + }, + { + "Chips":["PORT-IN-1","PORT-IN-4","PORT-IN-8","PORT-IN-16","PORT-OUT-1","PORT-OUT-4","PORT-OUT-8","PORT-OUT-16"], + "IsToggledOpen":false, + "Name":"PORTS", + "DependsOnModIDs":[] + }, + { + "Chips":["BUZZER","abc","input Chip","not","DELETE KEY CODE","RIGHT ARROW CODE","LEFT ARROW CODE","DOWN ARROW CODE","UP ARROW CODE","RETURN CODE","AND","OR","XOR","XNOR","check match 16 bit","D-Latch","2-bit decoder","POS KEYCODE","8 Bit Match Checker","main","Complex Internet Interface","16 3 state buff","PASS","CONST","HUGE-LED"], + "IsToggledOpen":true, + "Name":"OTHER", + "DependsOnModIDs":[] + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/ak/ProjectDescription.json b/TestData/Projects/ak/ProjectDescription.json new file mode 100644 index 00000000..ff4c0085 --- /dev/null +++ b/TestData/Projects/ak/ProjectDescription.json @@ -0,0 +1,75 @@ +{ + "ProjectName": "ak", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-05-07T20:28:22.644-07:00", + "LastSaveTime": "2025-05-07T20:28:38.666-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[], + "StarredList":[ + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"NAND", + "IsCollection":false + }, + { + "Name":"OTHER", + "IsCollection":true + }, + { + "Name":"DISPLAY", + "IsCollection":true + }, + { + "Name":"BASIC", + "IsCollection":true + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":true, + "Name":"BASIC" + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":false, + "Name":"IN/OUT" + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":false, + "Name":"MERGE/SPLIT" + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":false, + "Name":"BUS" + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","Text Display","2 Byte Text Display"], + "IsToggledOpen":true, + "Name":"DISPLAY" + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":false, + "Name":"MEMORY" + }, + { + "Chips":["3 Byte Text Display","4 Byte Text Display","BUZZER"], + "IsToggledOpen":true, + "Name":"OTHER" + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/asdf/ProjectDescription.json b/TestData/Projects/asdf/ProjectDescription.json new file mode 100644 index 00000000..14fd3c09 --- /dev/null +++ b/TestData/Projects/asdf/ProjectDescription.json @@ -0,0 +1,71 @@ +{ + "ProjectName": "asdf", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-05-07T09:08:47.682-07:00", + "LastSaveTime": "2025-05-07T09:09:10.113-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[], + "StarredList":[ + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"NAND", + "IsCollection":false + }, + { + "Name":"DISPLAY", + "IsCollection":true + }, + { + "Name":"BASIC", + "IsCollection":true + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":true, + "Name":"BASIC" + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":false, + "Name":"IN/OUT" + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":false, + "Name":"MERGE/SPLIT" + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":false, + "Name":"BUS" + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","Ascii_8Bit","Ascii_16Bit"], + "IsToggledOpen":true, + "Name":"DISPLAY" + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":true, + "Name":"MEMORY" + }, + { + "Chips":["BUZZER"], + "IsToggledOpen":true, + "Name":"OTHER" + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/j/Chips/asd.json b/TestData/Projects/j/Chips/asd.json new file mode 100644 index 00000000..d6473612 --- /dev/null +++ b/TestData/Projects/j/Chips/asd.json @@ -0,0 +1,152 @@ +{ + "DLSVersion": "2.1.6", + "Name": "asd", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 8.16587, + "y": 4.125 + }, + "Colour": { + "r": 0.02711131, + "g": 0.292806029, + "b": 0.00114965509, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1137812666, + "Position":{ + "x":-1.88382, + "y":-1.06949 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":70192272, + "Position":{ + "x":-1.88382, + "y":-1.58574 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":642047421, + "Position":{ + "x":-2.29227, + "y":-3.04768 + }, + "BitCount":8, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[], + "SubChips":[ + { + "Name":"A", + "ID":913591216, + "Label":"a", + "Position":{ + "x":0.25516, + "y":-1.34093 + }, + "OutputPinColourInfo":[], + "InternalData":null + }, + { + "Name":"A", + "ID":1504008617, + "Label":"b", + "Position":{ + "x":0.29301, + "y":-2.65663 + }, + "OutputPinColourInfo":[], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":70192272 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":913591216 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1137812666 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":913591216 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":642047421 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":1504008617 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1137812666 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1504008617 + }, + "ConnectionType":1, + "ConnectedWireIndex":1, + "ConnectedWireSegmentIndex":0, + "Points":[{"x":-0.62012,"y":-1.08046},{"x":-0.62012,"y":-2.43938},{"x":0.0,"y":0.0}] + } + ], + "Displays":[ + { + "SubChipID":913591216, + "Position":{ + "x":-1.17807, + "y":-0.20087 + }, + "Scale":1.0 + }, + { + "SubChipID":1504008617, + "Position":{ + "x":-0.48317, + "y":-0.20087 + }, + "Scale":1.0 + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/j/ProjectDescription.json b/TestData/Projects/j/ProjectDescription.json new file mode 100644 index 00000000..6a3a19c8 --- /dev/null +++ b/TestData/Projects/j/ProjectDescription.json @@ -0,0 +1,77 @@ +{ + "ProjectName": "j", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-05-07T05:43:33.046-07:00", + "LastSaveTime": "2025-05-07T07:00:33.233-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[ + "asd" + ], + "StarredList":[ + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"NAND", + "IsCollection":false + }, + { + "Name":"OTHER", + "IsCollection":true + }, + { + "Name":"DISPLAY", + "IsCollection":true + }, + { + "Name":"asd", + "IsCollection":false + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":true, + "Name":"BASIC" + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":false, + "Name":"IN/OUT" + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":false, + "Name":"MERGE/SPLIT" + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":false, + "Name":"BUS" + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","A"], + "IsToggledOpen":true, + "Name":"DISPLAY" + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":false, + "Name":"MEMORY" + }, + { + "Chips":["BUZZER"], + "IsToggledOpen":true, + "Name":"OTHER" + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/jj/ProjectDescription.json b/TestData/Projects/jj/ProjectDescription.json new file mode 100644 index 00000000..99211a08 --- /dev/null +++ b/TestData/Projects/jj/ProjectDescription.json @@ -0,0 +1,76 @@ +{ + "ProjectName": "jj", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-07-04T23:58:31.731-07:00", + "LastSaveTime": "2025-07-04T23:58:46.673-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[], + "StarredList":[ + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"NAND", + "IsCollection":false + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":false, + "Name":"BASIC", + "DependsOnModIDs":[] + }, + { + "Chips":["IN-1","IN-4","IN-8","OUT-1","OUT-4","OUT-8"], + "IsToggledOpen":false, + "Name":"IN/OUT", + "DependsOnModIDs":[] + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":false, + "Name":"MERGE/SPLIT", + "DependsOnModIDs":[] + }, + { + "Chips":["BUS-1","BUS-4","BUS-8"], + "IsToggledOpen":false, + "Name":"BUS", + "DependsOnModIDs":[] + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","Text Display"], + "IsToggledOpen":false, + "Name":"DISPLAY", + "DependsOnModIDs":[] + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":false, + "Name":"MEMORY", + "DependsOnModIDs":[] + }, + { + "Chips":["PORT-IN-1","PORT-IN-4","PORT-IN-8","PORT-IN-16","PORT-OUT-1","PORT-OUT-4","PORT-OUT-8","PORT-OUT-16","Complex Internet Interface"], + "IsToggledOpen":false, + "Name":"PORTS", + "DependsOnModIDs":[] + }, + { + "Chips":["BUZZER"], + "IsToggledOpen":false, + "Name":"OTHER", + "DependsOnModIDs":[] + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/jk/Chips/asd.json b/TestData/Projects/jk/Chips/asd.json new file mode 100644 index 00000000..13c099bb --- /dev/null +++ b/TestData/Projects/jk/Chips/asd.json @@ -0,0 +1,163 @@ +{ + "DLSVersion": "2.1.6", + "Name": "asd", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 8.72754, + "y": 5.375 + }, + "Colour": { + "r": 0.350108624, + "g": 0.1794343, + "b": 0.360331476, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":410798568, + "Position":{ + "x":-3.98291, + "y":1.68497 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":657807743, + "Position":{ + "x":-3.98291, + "y":0.95872 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1077828187, + "Position":{ + "x":-3.95684, + "y":0.06876 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1657729127, + "Position":{ + "x":-3.95684, + "y":-0.65749 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[], + "SubChips":[ + { + "Name":"Text Display", + "ID":703499651, + "Label":"asd", + "Position":{ + "x":-0.59407, + "y":1.09844 + }, + "OutputPinColourInfo":[], + "InternalData":null + }, + { + "Name":"Text Display", + "ID":734842198, + "Label":"bsd", + "Position":{ + "x":-0.51586, + "y":-0.56061 + }, + "OutputPinColourInfo":[], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":657807743 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":703499651 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1657729127 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":734842198 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1077828187 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":734842198 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":410798568 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":703499651 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays":[ + { + "SubChipID":703499651, + "Position":{ + "x":-3.22166, + "y":0.34356 + }, + "Scale":1.0 + }, + { + "SubChipID":734842198, + "Position":{ + "x":-2.23275, + "y":0.34356 + }, + "Scale":1.0 + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/jk/Chips/asdfss.json b/TestData/Projects/jk/Chips/asdfss.json new file mode 100644 index 00000000..99c6dbbd --- /dev/null +++ b/TestData/Projects/jk/Chips/asdfss.json @@ -0,0 +1,144 @@ +{ + "DLSVersion": "2.1.6", + "Name": "asdfss", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 5.2862, + "y": 5.0 + }, + "Colour": { + "r": 0.641050458, + "g": 0.2694529, + "b": 0.962294638, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":629855810, + "Position":{ + "x":-6.44634, + "y":2.03689 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1051590163, + "Position":{ + "x":-6.44634, + "y":1.31064 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1402592559, + "Position":{ + "x":-6.44634, + "y":0.58439 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + }, + { + "Name":"IN", + "ID":1147381677, + "Position":{ + "x":-6.44634, + "y":-0.14186 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[], + "SubChips":[ + { + "Name":"asd", + "ID":1733456625, + "Label":"", + "Position":{ + "x":0.85271, + "y":0.05572 + }, + "OutputPinColourInfo":[], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":629855810 + }, + "TargetPinAddress":{ + "PinID":410798568, + "PinOwnerID":1733456625 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1402592559 + }, + "TargetPinAddress":{ + "PinID":1077828187, + "PinOwnerID":1733456625 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1147381677 + }, + "TargetPinAddress":{ + "PinID":1657729127, + "PinOwnerID":1733456625 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1051590163 + }, + "TargetPinAddress":{ + "PinID":657807743, + "PinOwnerID":1733456625 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays":[ + { + "SubChipID":1733456625, + "Position":{ + "x":2.3743, + "y":-0.29609 + }, + "Scale":1.0 + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/jk/ProjectDescription.json b/TestData/Projects/jk/ProjectDescription.json new file mode 100644 index 00000000..360de771 --- /dev/null +++ b/TestData/Projects/jk/ProjectDescription.json @@ -0,0 +1,94 @@ +{ + "ProjectName": "jk", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-05-30T18:03:10.710-07:00", + "LastSaveTime": "2025-05-30T18:10:09.835-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 250, + "AllCustomChipNames":[ + "asd", + "asdfss" + ], + "StarredList":[ + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"NAND", + "IsCollection":false + }, + { + "Name":"DISPLAY", + "IsCollection":true + }, + { + "Name":"MEMORY", + "IsCollection":true + }, + { + "Name":"BUS", + "IsCollection":true + }, + { + "Name":"MERGE/SPLIT", + "IsCollection":true + }, + { + "Name":"BASIC", + "IsCollection":true + }, + { + "Name":"asd", + "IsCollection":false + }, + { + "Name":"asdfss", + "IsCollection":false + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":true, + "Name":"BASIC" + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":false, + "Name":"IN/OUT" + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":true, + "Name":"MERGE/SPLIT" + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":true, + "Name":"BUS" + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","Text Display"], + "IsToggledOpen":true, + "Name":"DISPLAY" + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":false, + "Name":"MEMORY" + }, + { + "Chips":["BUZZER"], + "IsToggledOpen":false, + "Name":"OTHER" + } + ] +} \ No newline at end of file diff --git a/TestData/Projects/k/Chips/internet-kindof.json b/TestData/Projects/k/Chips/internet-kindof.json new file mode 100644 index 00000000..5d677f02 --- /dev/null +++ b/TestData/Projects/k/Chips/internet-kindof.json @@ -0,0 +1,311 @@ +{ + "DLSVersion": "2.1.6", + "Name": "internet-kindof", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 2.375, + "y": 3.75 + }, + "Colour": { + "r": 0.235723078, + "g": 0.2138857, + "b": 0.03449912, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":1919848977, + "Position":{ + "x":-4.64505, + "y":3.0128 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":1366779989, + "Position":{ + "x":-4.64505, + "y":2.0753 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":1474332535, + "Position":{ + "x":-4.64505, + "y":1.1378 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":1917373124, + "Position":{ + "x":-4.64505, + "y":0.2003 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":798447157, + "Position":{ + "x":-4.64505, + "y":-0.7372 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":481103073, + "Position":{ + "x":-4.64505, + "y":-1.6747 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":281672906, + "Position":{ + "x":-4.64505, + "y":-2.6122 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":3 + }, + { + "Name":"IN", + "ID":83799044, + "Position":{ + "x":-4.64505, + "y":-3.33845 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1384391071, + "Position":{ + "x":5.59159, + "y":0.25394 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":1 + }, + { + "Name":"OUT", + "ID":1609412419, + "Position":{ + "x":5.62664, + "y":-1.49737 + }, + "BitCount":16, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"Complex Internet Interface", + "ID":568415117, + "Label":"", + "Position":{ + "x":0.40316, + "y":-0.48161 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":9},{"PinColour":0,"PinID":10}], + "InternalData":null + }, + { + "Name":"CLOCK", + "ID":206353149, + "Label":"", + "Position":{ + "x":-4.52235, + "y":4.14186 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":0}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":10, + "PinOwnerID":568415117 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1609412419 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":9, + "PinOwnerID":568415117 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1384391071 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1919848977 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1366779989 + }, + "TargetPinAddress":{ + "PinID":2, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":-3.61087,"y":2.07531},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1474332535 + }, + "TargetPinAddress":{ + "PinID":3, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":1917373124 + }, + "TargetPinAddress":{ + "PinID":4, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":798447157 + }, + "TargetPinAddress":{ + "PinID":5, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":481103073 + }, + "TargetPinAddress":{ + "PinID":6, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":281672906 + }, + "TargetPinAddress":{ + "PinID":7, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":83799044 + }, + "TargetPinAddress":{ + "PinID":8, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":206353149 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":568415117 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/k/Chips/not.json b/TestData/Projects/k/Chips/not.json new file mode 100644 index 00000000..677bc8a3 --- /dev/null +++ b/TestData/Projects/k/Chips/not.json @@ -0,0 +1,100 @@ +{ + "DLSVersion": "2.1.6", + "Name": "not", + "NameLocation": 0, + "ChipType": 0, + "Size": { + "x": 0.575, + "y": 0.375 + }, + "Colour": { + "r": 0.398746759, + "g": 0.5030327, + "b": 0.4970285, + "a": 1 + }, + "InputPins":[ + { + "Name":"IN", + "ID":420850282, + "Position":{ + "x":-5.52147, + "y":-0.32399 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "OutputPins":[ + { + "Name":"OUT", + "ID":1844506697, + "Position":{ + "x":-0.03506, + "y":-0.49912 + }, + "BitCount":1, + "Colour":0, + "ValueDisplayMode":0 + } + ], + "SubChips":[ + { + "Name":"NAND", + "ID":57728541, + "Label":"", + "Position":{ + "x":-2.80456, + "y":-0.13135 + }, + "OutputPinColourInfo":[{"PinColour":0,"PinID":2}], + "InternalData":null + } + ], + "Wires":[ + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":420850282 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":57728541 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":0, + "PinOwnerID":420850282 + }, + "TargetPinAddress":{ + "PinID":1, + "PinOwnerID":57728541 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + }, + { + "SourcePinAddress":{ + "PinID":2, + "PinOwnerID":57728541 + }, + "TargetPinAddress":{ + "PinID":0, + "PinOwnerID":1844506697 + }, + "ConnectionType":0, + "ConnectedWireIndex":-1, + "ConnectedWireSegmentIndex":-1, + "Points":[{"x":0.0,"y":0.0},{"x":0.0,"y":0.0}] + } + ], + "Displays": null +} \ No newline at end of file diff --git a/TestData/Projects/k/ProjectDescription.json b/TestData/Projects/k/ProjectDescription.json new file mode 100644 index 00000000..b0e1f442 --- /dev/null +++ b/TestData/Projects/k/ProjectDescription.json @@ -0,0 +1,103 @@ +{ + "ProjectName": "k", + "DLSVersion_LastSaved": "2.1.6", + "DLSVersion_EarliestCompatible": "2.0.0", + "CreationTime": "2025-07-01T04:21:38.194-07:00", + "LastSaveTime": "2025-07-01T16:50:33.385-07:00", + "Prefs_MainPinNamesDisplayMode": 1, + "Prefs_ChipPinNamesDisplayMode": 1, + "Prefs_GridDisplayMode": 0, + "Prefs_Snapping": 0, + "Prefs_StraightWires": 0, + "Prefs_SimPaused": false, + "Prefs_SimTargetStepsPerSecond": 1000, + "Prefs_SimStepsPerClockTick": 1000, + "AllCustomChipNames":[ + "internet-kindof", + "not" + ], + "StarredList":[ + { + "Name":"BASIC", + "IsCollection":true + }, + { + "Name":"OTHER", + "IsCollection":true + }, + { + "Name":"PORTS", + "IsCollection":true + }, + { + "Name":"MEMORY", + "IsCollection":true + }, + { + "Name":"DISPLAY", + "IsCollection":true + }, + { + "Name":"BUS", + "IsCollection":true + }, + { + "Name":"MERGE/SPLIT", + "IsCollection":true + }, + { + "Name":"IN/OUT", + "IsCollection":true + }, + { + "Name":"internet-kindof", + "IsCollection":false + }, + { + "Name":"not", + "IsCollection":false + } + ], + "ChipCollections":[ + { + "Chips":["NAND","CLOCK","PULSE","KEY","3-STATE BUFFER"], + "IsToggledOpen":false, + "Name":"BASIC" + }, + { + "Chips":["IN-1","IN-4","IN-8","IN-16","OUT-1","OUT-4","OUT-8","OUT-16"], + "IsToggledOpen":true, + "Name":"IN/OUT" + }, + { + "Chips":["1-4BIT","1-8BIT","4-8BIT","1-16BIT","4-16BIT","8-16BIT","4-1BIT","8-4BIT","8-1BIT","16-1BIT","16-4BIT","16-8BIT"], + "IsToggledOpen":true, + "Name":"MERGE/SPLIT" + }, + { + "Chips":["BUS-1","BUS-4","BUS-8","BUS-16"], + "IsToggledOpen":true, + "Name":"BUS" + }, + { + "Chips":["7-SEGMENT","DOT DISPLAY","RGB DISPLAY","LED","RGBLED","Text Display"], + "IsToggledOpen":false, + "Name":"DISPLAY" + }, + { + "Chips":["ROM 256×x2x8","ROM 256×16","ROM 256×32"], + "IsToggledOpen":true, + "Name":"MEMORY" + }, + { + "Chips":["PORT-IN-1","PORT-IN-4","PORT-IN-8","PORT-IN-16","PORT-OUT-1","PORT-OUT-4","PORT-OUT-8","PORT-OUT-16","Complex Internet Interface"], + "IsToggledOpen":true, + "Name":"PORTS" + }, + { + "Chips":["BUZZER"], + "IsToggledOpen":true, + "Name":"OTHER" + } + ] +} \ No newline at end of file