Giter Site home page Giter Site logo

jdryg / dls-schematics Goto Github PK

View Code? Open in Web Editor NEW
152.0 14.0 7.0 16.47 MB

Schematics for DLS - The Digital Logic Simulator game http://makingartstudios.itch.io/dls

License: Creative Commons Zero v1.0 Universal

JavaScript 47.85% Lua 52.15%
schematic digital logic dls cpu simulation

dls-schematics's People

Contributors

jdryg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dls-schematics's Issues

MacOS: look into using the "new" full screen mode

It looks like it's using the "old" type of full screen mode, but it'd be better if it used the new full screen mode where each full screen application gets its own virtual desktop. Easier to use it alongside other applications that way.

I don't know how this is done, but maybe https://developer.apple.com/documentation/appkit/nswindow/1419527-togglefullscreen?language=objc and https://developer.apple.com/design/human-interface-guidelines/macos/app-architecture/fullscreen-mode/ could be of use.

Component shape editor

Extra button in the component library dialog which will open a new editor window.
From there the user should be able to move I/O pins around (e.g. place output pins on the left, top or bottom).
It would also be nice if the user is able to alter the shape of the component (e.g. turn it into a trapezoid for MUXes, V shape for ALUs, etc.)

Tunnels

Tunnels could be used in complex circuits to connect an input and an output pin which are far apart from each other, in order to simplify the schematic.

Q: Should they be considered I/O ports (e.g. an output tunnel can have only 1 input wire) or buses (multiple output tunnels with the same name end up creating a bus)?

Bug in output component

image

From the image above, there seems to be a bug in the output. The inputs to the merger are all different but the output remains a 'U' and not the unsigned value I'd expect.

You can contact me at [email protected] if you require a schematic to debug this.

Crashes when going to sandbox -> menu -> main menu -> sandbox

DLS version: v0.17.1_Win_x64_2022_02_17

Steps to reproduce:

  1. Open game.
  2. Select Sandbox (goes to sandbox/workspace screen)
  3. Click on Hamburger Menu button of the top panel (goes to the grey menu screen)
  4. Select Main Menu (goes to the green menu screen)
  5. Select Sandbox (this is where the game will crash).

Multi-input standard gates

Instead of creating custom components for (e.g.) 1-bit 4 input AND gate, it would be nice if there was an option to specify the number of input pins to standard gates.

Multi-component selection

Should be able to select and move multiple components/gates. Should also be able to move all connected wires and/or individual wire nodes.

New I/O Ports

Input

  • Keyboard input (8-bit parallel, similar to push buttons)

Output

  • Fixed point numeric output (configurable)
  • 16-bit floating point numeric output
  • Simple stepper motor (4 poles)
  • Multi-bit per pixel display, with palette
  • 7-segment display

ROM editor

  • Load ROM data from file
  • Save ROM data to file
  • Allow larger words (e.g. 32 or 48-bit words) and split the output into multiple pins.

Logic Analyzer

Observe wire values during simulation by attaching virtual clips to wires and display the results in a logic analyzer screen.

Problem is how to mix both internal simulation time and external circuit time in a continuously running circuit (e.g. the 6502 CPU).

E.g. the logic analyzer can be used to find out propagation delays of signals, when displaying using the internal simulation time, or observe the circuit output when using external circuit time.

If bgfx gets reset, all display texture handles are invalid.

  • Start game
  • Load circuit with display (or add a display)
  • Return to main menu and go to options
  • Change any parameter that will reset bgfx (resolution, fullscreen, vsync)
  • Return to sandbox and load the same circuit or add a display.

Game crashes because the display texture handle is no longer valid (due to bgfx reset).

Edit existing components

Instead of inspecting, editing, recomponentizing and manually replacing an existing component, the player should be able to edit components in-place.

There's a problem with the I/O pins and the wires already attached to those, if the user decides to remove some of them. I cannot use the name of the pin to distinguish it between the 2 component versions (before and after the edit), because the only edit a user might want to do is to rename the component.

Scripted gates support editing and the wires stay in place if the width of the i-th pin didn't change. Should probably do the same here.

Wire editing

Should be able to edit wires (move nodes around).

How?
One idea is to add a new option in the wire's context menu for editing. This will switch the editor into WireEdit mode and markers will be displayed on all nodes of the selected wire(s).

Scripted components: Add to library as is

Currently, adding a scripted component to the component library requires wrapping it in a new component. There should be no need for that, since they are self-contained.

Unfortunately, this requires a lot of changes to the way components are instantiated at the moment, so it'll take a while to implement (if at all...).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.