Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connected circuits #10

Open
SoniEx2 opened this issue Feb 8, 2015 · 7 comments
Open

Connected circuits #10

SoniEx2 opened this issue Feb 8, 2015 · 7 comments

Comments

@SoniEx2
Copy link

SoniEx2 commented Feb 8, 2015

Say you put 2 16x16's side-by-side; they should be able to "merge" together (maybe with user interaction? i.e. the user has to do it) and make a 2-block-wide 32x16 (or 16x32, w/e) board!

@Victorious3
Copy link
Owner

Well, how would such a thing work together with the CAD?

@SoniEx2
Copy link
Author

SoniEx2 commented Feb 8, 2015

How about you leave that for the IC itself, while the die just tells where things are? (alternatively enable bundled I/O on 16x16 boards)

Option 1, the die is not the IC:

  • lots of refactoring
  • works for all sizes

Option 2, bundled I/O on 16x16 boards:

  • 1(?) line of code?
  • works for 16x16 boards only

Option 3, "circuit I/O" mode:

  • based on option 2, kinda like a "variable" bundled cable which can have either 16, 32 or 64 buses (explicitly not "colors", because bundled cable colors are just for convenience and they're really just buses) but can't connect to bundled cables.
  • not trivial, but nowhere near as bad as option 1
  • works for all sizes

Pick your poison ;)

(PS: there's probably something I didn't think of)

@Victorious3
Copy link
Owner

For the 16x16 might be a doable thing, it won't be one line though as the renderer has to connect them as well... I'll think about it. I leave this open as a suggestion.

@SoniEx2
Copy link
Author

SoniEx2 commented Feb 9, 2015

For the 16x16, with bundled I/O, it won't have to connect, and it's probably just a few lines to make the renderer support 16x16 bundled I/O + make the 16x16 take bundled cables. Option 3 seems best option tho. Maybe refactor it a bit and make it so mods can add custom I/O (I'm too tired to check if it's already possible with the current code base, so I'll check it tomorrow and edit here what I find)? (then someone would probably add CC and OC I/O modes, lol)

@evg-zhabotinsky
Copy link
Contributor

It might be useful. But I see it a bit different.

It looks to me as a flat cable connecting adjacent circuits, instead of bundled or redstone.
It is impossible to connect non-adjacent circuits this way, because such cables don't tolerate noise well, especially when signal is weak, coming from IC logic and not IO amplifiers.
Only circuits of the same size can connect. Maybe because they use different voltages etc. It might be depicted as different cable colors (e.g. green, orange and red for T1, T2 and T3 respectively).

From inside the CAD, it will look as green pins along whole side, with the same order on left/right and top/bottom sides, numbered for convenience (just a tooltip will do).
There are too much of them, so they will not be controlled from window sides (unlike other IO modes). You will have to click IO pins themselves (on PCB border), preferably just left button, but requiring a screwdriver ("edit" tool) will do. Controls on UI window sides will be disabled (as when the side is disabled completely, see #110)

Internally, this mod already passes signals directly between adjacent ICs, even when no mod provides bundled cables. So passing "extra wide" signals should not be a problem. However, I am not sure if it works the same way when circuit is FMP one. Might be a special feature of non-FMP gates then.

If implemented as above, these "flat cables" will actually work as a way to create bigger circuits, without 16 bits per side interconnection limit, but still with extra hassle of switching between several CADs often.

By the way, T1 chips are in fact 14x14 and not 16x16 (because of unusable PCB border), so I guess there is no well-defined way to enable normal bundled IO for them.

@skyem123
Copy link
Collaborator

I think that there should be a special bus that works only between ICs. It should be numbered, and it will allow a 16x16 to connect to a 32x23 and 64x64 as it only show connections from 1-14.

@skyem123
Copy link
Collaborator

So, my work in doing #164 has shown some things.

  • It will be a huge pain to add another IO mode, and it will change the IC format a little, if I understand what @Victorious3 has done... (the none/disabled mode already existed for segments).
  • IOBits are hardcoded to 16 bits per side, and I'm not sure if changing that value with change the format, Sod's/Murphy's Law says that it will.

And not to mention that rendering it in the CAD GUI will be painful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants