[MECH] RedstoneChips 0.97 - Integrated circuits plugin [1.5.1-R0.2]

Discussion in 'Archived: Plugin Releases' started by eisental, Jan 19, 2011.

  1. Offline

    eisental

    RedstoneChips 0.97 / BasicCircuits 0.97 / SensorLibrary 0.34
    (Last update on April 30th, 2013, cb 1.5.1-R0.2)


    [​IMG]

    Features:
    • Build chips with any number of input and output pins, from compact 2 block chips up to whatever you can imagine.
    • Choose from over 50 different chip types and several 3rd party chip libraries.
    • Most chip types can work with a wide or infinte range of i/o configurations. Sign arguments allow you to customize chip behavior.
    • Chips can communicate through redstone, or directly by touching each other. Some chip types can also communicate over wireless channels.
    • Chips can be built in almost any imaginable structure allowing very compact circuits.
    • Debug and maintain large projects using various tools and commands.
    [​IMG]

    [cake] Help me spend more time working on RedstoneChips. Please donate

    Circuit libraries made by other people:
    Changelog (open)

    RedstoneChips 0.97 (Apr 30th, 2013)
    • Fixed the saving bug on cb 1.5.1.
    • Added an option to disable update checking.
    BasicCircuits 0.96 (Apr 30th, 2013)
    • pixel: Added a maximum distance value preference to prevent lags and server crashes. The max can be changed using/rcprefs pixel.maxDistance x and defaults to 7.
    • sram: Fixed a problem with anonymous memory.
    SensorLibrary 0.34 (Dec 1st, 2012)
    • daytime: Fixed daytime offset bug.



    Full changelogs and source code @ github.com:
    RedstoneChips [gunpowder] BasicCircuits [gunpowder] SensorLibrary
     
    DoomLord, Shamebot, Vecht and 6 others like this.
  2. Offline

    Malkierian

    @nala3 That's a problem with MinecartManiaAdmin (says so in the error).
     
  3. Offline

    Pasukaru

    Alright I'm not completly done yet, since it's a pain in the a** to write a million signs for every rotation.. but here is how it works (for one rotation). First off, two pictures:
    Click me! (open)

    [​IMG]

    [​IMG]


    And a more or less detailed explanation:
    Click me too! (open)

    Okay. As you can see in pic1 a rotation works like this:
    Color A moves to D, Color B to E, Color C to F and so on.

    I realised it like this:

    *Note* the receivers for the current colors(4) are always up-to-date.

    Tick 1:
    We get an input from the receiver(1) and the signal is passed to the SRAM's R/W-Pin to write the current colors into the ram. Because I use a stone-button for the signal, the SRAM stays in read-mode for 1 second - important!
    The signal also reaches the repeatears ( (2) - 1 tick delay) and ( (8) - 2 ticks delay)

    Tick 2:
    The signal reaches a zero-pulse-chip(3) and then the address pin of the SRAM. Since it's a 0-pulse, it immediatly switches back to the previous address and reads the written bits, thus setting the output pins - which are connected to the Transmitters(6).
    This step has to be done while the SRAM is in read-mode! - That's why I use a zero-pulse to reduce the pulse length from one second(the button) to zero

    Tick 3:
    The signal reaches a repeater-chip(7) to transmitt colors. As you can see they are "rotated" here.

    There are 20 color-updates required for one rotation. 12 in the row you see in pic1 AND the 8 colors of the "bottom-layer" - you can't see them in the picture.

    The other rotations work analog to this. Just with other receiver/transmitter channels.

    And this is the reset-button-room, to set the cube to the solved-state:
    And me as well! (open)

    Receiver connected to a huge repeater with 27 outputs, which are each connected to 2 transmitters with the 54 reset-colors saved by using redstone-torches.
    [​IMG]



    I hope I didn't forget anything, or even worse - explain it wrong. :eek:
    ~~Going to bed now. I'm getting tired. :p

    Edit - Once I completed it, I'll make a video and upload it to youtube :>
     
  4. Offline

    Mordenkainen

    Ok, so the program to convert the font worked, except the bit order is backward, stupid mistake, easy to fix.

    I'm gonna work on it a bit more, then once I think it's ready, I'll upload the .data file here so others can use it.

    In any case, here is a video of the contents of the glyph cache scrolling across my proof of concept screen:



    Morden.
     
  5. Offline

    Mordenkainen

    Don't know if this is helpful to anyone, but here is a Worldedit craftscript to generate wool screens. It will build the whole screen including signs with the appropriate text. All that needs to be done is to activate the pixels.

    It does not add a border around the screen, so if you want one, make sure you are standing at least 1 block above ground level so there is room to build a border.

    To install it, extract it to the craftscripts directory on on your server.

    To use, stand where you want your screen and type "/cs screen.js x y channel" in the terminal, where "x" is the width of the screen, "y" is the height, and "channel" is the name of the channel the pixel should listen on. (For example "/cs
    screen.js 15 5 pix" for a 15 x 5 screen with pixels whose channel names begin with "pix")

    Channels will be named in the format "channelx.y", so for example, if your channel name is "pix", the bottom left pixel will be named "pix0.0", the one to its right will be "pix0.1", the one above it will be "pix1.0", etc. NOTE: To save sign space, the pixel numbers are in Hex.

    Chip material will alternate between Sandstone and GlowStone.

    If you have comments or suggestions, let me know!

    Morden.

    TODO:
    - Add ability to create indexed color pixels.
    - Add ability to specify chip materials used.
    - Add ability to create pixels that only listen to a single bit of a multi-bit transmitter.
     

    Attached Files:

  6. Offline

    Pasukaru

    @Mordenkainen Thanks! I've been looking for something like this for quite some time now. Much appreciated!
     
  7. Offline

    treve

    i have a huge sram :)
    and more then one, i love srams, i dont get what you want in tekst, i should see it (play with it) to understand and help you, but i should be able to, just know that i make things complex when i can lol :D

    euhm, eisental, is it possible that beacon chips make server laag, (sending message etc) or cause other problems?
    i hope to see you on nala's server soon, so i can explain it, i made something to write letters into an sram and then hit next (for next adres) or hit store button to store the data on adres, somethimes, it just does not send



    this is my beta movie, finished yesterday night. 5 frames building my name :).
    BUT: if you programe a letter, you can pick any number (0 9) or letter (A-Z)
    or create new letters in sram (if youre chineese or something, but then first tell me, so i can give you an adress to store (i mean it)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 6, 2016
  8. Offline

    Pasukaru

    @treve
    Well - my SRAM would have 60 Data-Pins - thats too much for the plugin to handle because it doesn't use long integers.
    Wasn't a big deal to solve it, I just split it into 3 SRAMs.

    Okay - and here is my result:
    (There are still 4 rotations missing, but you are able to solve the cube without them)
     
  9. Offline

    eisental

    Lot's of cool things since I last replied... @Pasukaru Well done! and thanks for the credits :) This should go to the examples section in the wiki together with your explanations etc. I can set it up when I have the time.

    @Mordenkainen Thanks a lot for the script and the font .data file. I think they will be very helpful. How about setting your own message on the scrolling screen did you get that working yet?
    I seem to recall Richard posted a 5x5 pixel font. Could be a good option for small places.

    @treve I'll come have a look when I can. It was very laggy when I was there.
     
  10. Offline

    Mordenkainen

    I haven't tried the 5x5 yet. I have been working with an 8x8. I don't have the whole message board up and running yet, but given what is left to do I think the majority of it will be done tonight

    That said, converting the 5x5 font should be no big deal. I'll probably clean up the image conversion program when I finish the message board.

    On that note, the conversion programs is coming along nicely. It still only handles greyscale, but can now convert an image of any size, and gives you warnings if the image is too large for a single sram.
     
  11. Offline

    eisental

    Too bad it's windows only :(
     
  12. Offline

    Mordenkainen

    yeah, but the actal code is kinda simple, so I guess it wouldn't be too hard to port to another language.
     
  13. Offline

    treve


    lol, aint that what i am making? i have 13 x 9 segment display to set letters or numbers, or make messages, but if youre making the same, i better stop lol, i can only fill in one letter for now. what about script? etc, i want it to (dunno if i can use it, but i want it :p)
    its laggy somethimes yes, but nala is having problem with something spamming SENDING!!!
    i think it might be the beacon chip? i used more then 5 at least, maybe close to each other etc.
    yesterday, my display was working fine, i even wrote my name, m4rb0's, marios and nalas haha
     
  14. Offline

    cduce2411

    [WARNING] Task of 'RedstoneChips' generated an exception
    unacceptable character #FFFD special characters are not allowed
    in "<reader>", position 948

    keeps happening every time I start my server, requiring me to re-activate all circuits :(
     
  15. Offline

    Shamebot

    Had a similar error when I edited the redstonechips.circuits file.
     
  16. Offline

    eisental

    @cduce2411 Did you try to delete your redstonechips.circuits before reactivating everything? If you did change it by hand like Shamebot is suggesting maybe your text encoding is somehow wrong. In any case it's the Yaml library having problems parsing the file. Anybody knows what character #FFFD is?

    @treve The beacon will only wake up the chunk if it's unloading. It shouldn't happen that much. Once you wake it up once it will probably stay loaded until the beacon is stopped. But you could always deactivate them and see if there's any difference...
     
  17. Offline

    Shamebot

    Seems to be this one.
    I'm surprised nobody demanded color support for the print circuit, thats why i tried to put a § into the redstonechips file; not that I'd need color support, I just was curious whether it would work :D.
     
  18. Offline

    treve

    @treve The beacon will only wake up the chunk if it's unloading. It shouldn't happen that much. Once you wake it up once it will probably stay loaded until the beacon is stopped. But you could always deactivate them and see if there's any difference...[/quote] If i only knew where i did put them :p anything else that can make server spam sending? (loading sram datas?)

    i did not follow good were the current discussion is going to, and shamebot, thanks, but i am affraid its going way over may head ;) i can do things with redstone, but not with scripts and stuff :(

    If anyone needs 16 segment display driver for letters and numbers, just ask or copy the sram i wrote! you dont need scripts, full color support, easy pick methode etc (next letter, next letter, previous letter, etc) and some adress to store youre work on.
    it took me alot time to write the sram, and i don't have small letters yet, but if it can help anyone, just ask, i would actually like it when my work is not done for nothing
     
  19. Offline

    Mordenkainen

    I'm not quite sure what you are working on. I know it's some kind of display, but I don't really understand how you are implementing it. Based on your videos, it's VERY different from what I am doing.

    As far as the utilities, well, the ability for convert a bitmap font without having to hand enter it would be useful to anyone right? Yourself included?

    EDIT - We posted at the same time... By your above post I think I see we are working on totally different things, the only thing in common is that they both output to some kind of display.

    I'm currently working on 3 different things at once:
    1. A message board that users can walk up to, type in a message and the message will be scrolled across the screen until someone changes it.
    2. A SRAM containing a font, that will be used to populate the message board, including the needed support circuitry to take the ASCII received and convert it to a 8x8 bit parallel bitstream that represents the glyph of a character. This would effectively be pixel level access, or a 64 segment display driver. This technique could be expanded to support data of ANY size though.
    3. A PC tool that reads in an image and converts it to a format that can be loaded by the SRAM chips.
     
    t2wave likes this.
  20. Offline

    treve

    i looks like what i requested? really, i cant follow you guys on alot, youre way ahead off me on the plugin writing etc, i do not understand much actually :D some parts are chineese. what you mean with ascii? i can only binair.
    just join nalas server, BUT DONT GET TO CLOSE TO THE DISPLAY! stay in control room :) good fps and good vision :) (nala3.dyndns.info, all friendly people welcome.

    (some kind of tutorial if you would ever try to write youre name on my board, for anyone)
    - 1: message board. it was very short beta move, at late hour when creating, thing is, i can only do 1 letter yet (copy paste and sign edit left, but its alot and boring part, not that fun anymore. what you mean with segment? To display a letter, i need a segments, i use 16 to be able to make any letter (see 16segment displays on google). but if you make a driver for any single pixel, that would be awsome. but can you choose the height then.
    At the moment i dont know how i have to call the next letter ( Second position, 3th, 4th...etc) ( ie: N A L A in one frame, now i write nala in 4 frames, because i only have 1 letter. and i also call that a segment :D because its a segment on the big display. so the big screen/display is build up with with alot 16-segment displays i call segments also! (do not confuse them) i can handle up to 64 letters in one frame (if i would build them...) And you can pick alot frames, so an image would be stored on first adres. second players can store his data on second adres. and i use counter to change the frames. If the server would be able to handle 30 frames in 1 sec (clock not fast enoug) than it would be able to display movies (the frame part!) but thats only theorie, the server will fail and skip images :(

    What can it do:
    It can show a message and store it somewere) (what you see in movie, are frames, not yet wors on frames, just one test letter)
    How and what:
    -after you picked the adres, you need to schoose what letter you are going to use what position (segment) on the display (currently 64, only 1 in use for now)
    -when you picked the frame and place on display, its time to select the letter you want (T on first segment for treve)
    how to do it: look at the display form control room. there are 2 switches and 1 button. With those controllers, you can pick youre letter. 1 reset button, to go back to A (actually, nothing/testpixel)
    then you have up or down switch to pick like this: A B C D or D C B A (so if you ran over it, you can go back hehe)
    When you picked youre first letter, you can pick the color! manual with switches or just hit the next button and use the counter.
    When this is done, SET BACK the segment switch (place to store on display ie: T first position, R second, etc.
    that last step stores the letter and color on the sram of the selected segment.

    This way, a player can simply pick any letter or number in the color he likes and make any word
    (for the moment, you need to build youre words in frames, but that just because only 1/64th is working yet :p)

    Important: If you want to store youre text/number, make sure to look first if the adres (frame) you are going to store/work on is EMPTY! do not overwrite other players tekst! (or i will need to build slotinput chip etc and build a safe around it :D

    ANYTHING can be done from control room. if you control the way how to make words etc, you can start program chinees letters (if a 16-segment display can hold it)
    ------------------------------------------------------------------------------------------------------------------------------
    future part (ready, not done)

    - i need a chip/plugin/pctool that can convert a real image into 16-color data and send it to the pixels, because, an sram would be to small no? you cannot command/store data for 5000 diffrent pixels (not that big acutally!)
    how are you planning to fix that? (other way to Rome)
    - any pixel is 1x1, so i need 6 transmitters for segment 4 (d)

    (repeat question, what you mean with 64 bit segments? 64 segments for 1 letter, or 64 letters? (me 16seg 64letters) but my screen is to small for that. it looked just to much work for what i was planning, thats alot writing to sram if you do the same like i did (i still need to do abc i only have ABC09). good to know i can use youre work also, and i really look forward to see the pc tool! (euro dropping) hmm with 64 segments on one, the tool looks possible for sram, but you will need alot srams then? i would need like 80 for 5000pixels?)
    lol, looks doable, and more easy for me to build than what i have now (the segments suck, i need to name transmitters and its like 1504 1403 for like 6... and then other patrn, so not much help on the signeditscript.
    building that would only request 5000 transmitters (color to pixel), but i can name them like 1 2 3. easy job (takes much time, but easy money) same for srams :p

    stop youre message board for now, use mine if you need one for now, and work full time on the pc tool :D once you have that, you have the biggest part :p so a display is build up with X - 64segemnt displays?)

    i should stop, writing for more then 35 min, i hope you dont read it haha (actually i hope you do)

    See ya @ Nala's
     
  21. Offline

    Mordenkainen

    Ok, ran into an issue.

    Parts of my circuit do so much in a tic that I am getting problems with chips being disabled because they think they are in a feedback loop.

    I have fixed it in the short term by changing the count from 100 to 5000, but I think this should probably be a configurable option.
     
  22. Offline

    eisental

    Ok. I'll add it next time. It should probably be higher anyways.
     
  23. Offline

    Mordenkainen

    ASCII is a standard for how computers store characters. It assigns a binary number to each letter/symbol. This makes it easy to store the data, because you only need to store a single 8bit number to represent any letter. I am using ASCII because it is the format both the Terminal (the message boards input) and Print (the preview output) use. It also makes the glyphs easy to select because they are stored by their ASCII value. for example, to get an uppercase "A", I just tell the glyph circuit I want character 65 and it sends all the required info to draw an "A". Because of this, I can send the output of a Terminal right into the display and whatever the user types will show up.

    Actually, the theoretical limit as to the number of pixels that can be stored in an SRAM is 15,032,385,529:
    Max addresses possible in SRAM: 2147483647
    Max data value in an address: 2147483647 (31 bits)
    With 31 bits, you can easily fit 7 4bit pixels in a single address.
    So 7 * 2147483647 = 15,032,385,529


    I mean 64 individually addressable pixels arranged in an 8x8 grid. That is the space occupied by a single character.

    Can't do that. I have already worked the details of the message board out with my clan and the server admin. We are hoping to get it up and running on the clan server this before next weekend.

    I'm almost there, just a single circuit left to build, so I would be happy to look at your screen and offer advice/help, but I still need to finish the one I'm working on.
     
  24. Offline

    eisental

    Why 31 bits? Can't you have 32?

    EDIT: Oh, I guess I forgot about the sign bit...
     
  25. Offline

    Mordenkainen

    I was gonna mention that to you.

    Even if you don't want to change to a long int, can it be changed to an unsigned int for sram data and address?

    One extra output bit makes a world of difference to me, and the additional address space would be nice as well.

    That said I don't know if java even supports unsigned values.
     
  26. Offline

    Shamebot

    I wanted to use uints for slotinput, too, but java seems to not support them -.-
     
  27. Offline

    treve

    the outcome of the message board will be almost the same... but i think you will need alot less transmitters then i do.
    also, i do not have print or terminal, so i cant just send to terminal, because, i dont know how it works (did not put any time in it either)
    but i have levers and a control room, almost dummy proof to write letters.
    i would love to see how you made youre V / X / Z / Y W and M. i tried 8x8 but i didnt like the result, its just to square for me.
    to bad to hear you wont put all youre energy on the pctool :p but i can understand it. I dont have a clan, only nala is helping me a little little bit, but i loose alot time with server issues like forgetting levers/ replace signs to other wall etc.
    We use the same principal i guess. send a number to the sram to get a letter out of it and let it dipslay on some place on the screen. where i can see what you have already? i like to see it.
    for my work: nala3.dyndns.info /warp scherm or /warp control

    i am even planning to work with pirsensors also, so you could WALK youre letter on the screen :D just stop on the letter you want or something :D
     
  28. Offline

    eisental

    It's just a matter of representation isn't it? the sram won't have any troubles working with negative addresses. I just tried the writing part on a 2^32x32 bit sram.

    Btw, @Mordenkainen do u know how did u manage to have 100 input changes to the same pin in 1 tick? Is that the ringcounter+pulsar trick?
     
  29. Offline

    Mordenkainen

    It was indeed. I have a pulsar/ringcounter set up to perform two sequential operations per character on a buffer of characters. Because of the way I have these set up, that requires 3 pulses per character, so the ring counter gets 6 state changes per character.

    Everything works fine if the buffer has less than 17 characters in it, but with 17, the ringcounter undergoes 102 transitions in a tick and gets flagged as a feedback loop.

    The buffer needs to support up to 255 characters, which would be 1530 transitions in a tick. To support this I made a quick change to the source to allow for 5000 state changes before it is flagged as a feedback loop, which is far more than I need, but wanted some breathing room.
     
  30. Offline

    eisental

    I wonder how much lag this brings into the server. Doing so many calculations on a single tick. 50ms is a long time though. Did you try making an actual infinite loop with this settings and see if you don't get disconnected or something? You can do that with a not chip connected to itself.

    Oh and I've just made a BasicCircuits commit that allows to use a pulse chip with 1 input and multiple outputs. This is the equivalent of pulsar+ringcounter. The order of pulses will always be from 1st output to the last. Would appreciate if you try it. Let me know if you need a jar...
     
  31. Offline

    Mordenkainen

    Sure, I'll check it out and let you know... No need for a Jar, I can "roll my own".

    As far as lag, I haven't noticed any, but it is a single shot thing. It does it once, when the user asks it to. I'm sure if it was doing this constantly it might be a problem. I have not tried an actual feedback loop though.

    I'll try some experiments and let you know.

    Tried it, and it does not appear to be working.

    It looks as if the outputs all go on at the same time, but of course at low pulse widths you can't tell visually.

    It does not work dropped in as a replacement for a ringcounter/pulsar.

    Debug messages make it look like all the inputs are changing at once as well... But, when I look at the source I compiled, I see the changes.

    EDIT - I take it back, it DOES work, but only if the pulse duration is set to 0.

    You may want to force that when used in this way!

    I'll replace all the ringcounter/pulser combo's this this and see if there is any change in behavior.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 6, 2016

Share This Page