v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Editing User:Larix

Jump to navigation Jump to search

Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.


The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 24: Line 24:
 
http://www.bay12forums.com/smf/index.php?topic=147725.0
 
http://www.bay12forums.com/smf/index.php?topic=147725.0
  
== Odds and Ends ==
+
=== Odds and Ends ===
  
 
A collection of Dwarf Logic projects, ranging from an overengineered silly joke to overengineered solutions for simple problems or challenges to... overengineered overengineering:
 
A collection of Dwarf Logic projects, ranging from an overengineered silly joke to overengineered solutions for simple problems or challenges to... overengineered overengineering:
  
  
=== Maple 6/6 Programmable Computer ===
+
== Maple 6/6 Programmable Computer ==
  
 
* A project that grew out of a crude tape processor originally built to see how close i could get data processing to the 100-step limit set by pressure plates' reset time. With some encouragement and helpful comments on the forum, i put another afternoon into the extant machine and turned it into a computer capable of executing programs written in an ultra-compact (and extremely low-powered) machine language consisting of six main instructions modified by the actual program adress as parameter (six values possible). I tried to make it as simple and small as possible while still giving it more functionality than just pushing a solitary bit around.
 
* A project that grew out of a crude tape processor originally built to see how close i could get data processing to the 100-step limit set by pressure plates' reset time. With some encouragement and helpful comments on the forum, i put another afternoon into the extant machine and turned it into a computer capable of executing programs written in an ultra-compact (and extremely low-powered) machine language consisting of six main instructions modified by the actual program adress as parameter (six values possible). I tried to make it as simple and small as possible while still giving it more functionality than just pushing a solitary bit around.
Line 41: Line 41:
 
Handout that hopefully gives a better idea of how this machine processes data: http://dwarffortresswiki.org/index.php/User:Larix/Programming_the_Maple_6-6
 
Handout that hopefully gives a better idea of how this machine processes data: http://dwarffortresswiki.org/index.php/User:Larix/Programming_the_Maple_6-6
  
=== hq9+ Interpreter ===
+
== hq9+ Interpreter ==
  
  
Line 51: Line 51:
 
: I am especially proud of the unary memory device.
 
: I am especially proud of the unary memory device.
  
=== The Drunk Number Generator ===
+
== The Drunk Number Generator ==
  
 
* Dwarfs are always so sloshed that when they try to be random, they still just end up drunk. Their drunk stumbling around the meeting hall can be used to derive irresponsibly unpredictable signals, which in turn can be converted into apparently random numbers. Be careful when constructing such contraptions on your own computers, intoxicated computers can be quite difficult to handle.
 
* Dwarfs are always so sloshed that when they try to be random, they still just end up drunk. Their drunk stumbling around the meeting hall can be used to derive irresponsibly unpredictable signals, which in turn can be converted into apparently random numbers. Be careful when constructing such contraptions on your own computers, intoxicated computers can be quite difficult to handle.
Line 59: Line 59:
 
: http://www.bay12forums.com/smf/index.php?topic=129226.msg4452422#msg4452422
 
: http://www.bay12forums.com/smf/index.php?topic=129226.msg4452422#msg4452422
  
=== Security Blast Door ===
+
== Security Blast Door ==
  
 
* Do you lack the patience to wait a hundred steps for a pressure plate to re-set and close a door? Are you annoyed by dwarfs dragging their feet when ordered to pull the "close that door!" lever? No problem, you can get a door to close as reaction to an "on" signal, potentially in less than ten steps. It just takes ~400 power and 25 rollers and pressure plates and link jobs.
 
* Do you lack the patience to wait a hundred steps for a pressure plate to re-set and close a door? Are you annoyed by dwarfs dragging their feet when ordered to pull the "close that door!" lever? No problem, you can get a door to close as reaction to an "on" signal, potentially in less than ten steps. It just takes ~400 power and 25 rollers and pressure plates and link jobs.
Line 65: Line 65:
 
: http://www.bay12forums.com/smf/index.php?topic=128095.msg4449221#msg4449221
 
: http://www.bay12forums.com/smf/index.php?topic=128095.msg4449221#msg4449221
  
=== Taming the diagonal Minecart ===
+
== Taming the diagonal Minecart ==
  
 
* Just working out that diagonally-moving minecarts are notoriously unwilling to follow track directions only served as an incentive for me to step up my game and tame the wild diagonal minecart. I succeeded in getting such carts to stay in holding loops, cycle through repeaters and even hold a bit of information by their rotation direction in a read-writeable 'memory cell'.  
 
* Just working out that diagonally-moving minecarts are notoriously unwilling to follow track directions only served as an incentive for me to step up my game and tame the wild diagonal minecart. I succeeded in getting such carts to stay in holding loops, cycle through repeaters and even hold a bit of information by their rotation direction in a read-writeable 'memory cell'.  
Line 75: Line 75:
 
: '''Controlling diagonal minecarts'''; one-cart one-byte memory; seven-state fluid memory/potential base-seven adder? http://www.bay12forums.com/smf/index.php?topic=131325.msg4621257#msg4621257
 
: '''Controlling diagonal minecarts'''; one-cart one-byte memory; seven-state fluid memory/potential base-seven adder? http://www.bay12forums.com/smf/index.php?topic=131325.msg4621257#msg4621257
  
=== Multiplication with beyond-binary result calculation ===
+
== Multiplication with beyond-binary result calculation ==
  
 
* Binary multiplication has a simple basis, but tends to get unwieldy because so many adders are needed to put all the partial results together. DF's mechanical logic, however, offers amazing options to compactify the adding-up process so that for a multiplication of two eight-bit numbers, no more than fifteen additions are run in a single adding step, and the sum results generated in another semi-simultaneous step. But how can this be, when up to sixty-four signals are generated before any addition takes place, and the addition will produce a slew of extra carries, up to seven on the "middle" result bit, while a full adder has no more than three inputs? Simple (or not so simple): by using something else than normal binary adders, so that more than three signals can be added in a single circuit. A load-based "how many inputs are on?" circuit can not only check against a defined threshold of inputs before switching off, by using the output-generating pressure plates to re-configure the circuit itself and thus change the load, it can check for different significant load limits in succession and enforce a stable state when the "correct" output is reached.
 
* Binary multiplication has a simple basis, but tends to get unwieldy because so many adders are needed to put all the partial results together. DF's mechanical logic, however, offers amazing options to compactify the adding-up process so that for a multiplication of two eight-bit numbers, no more than fifteen additions are run in a single adding step, and the sum results generated in another semi-simultaneous step. But how can this be, when up to sixty-four signals are generated before any addition takes place, and the addition will produce a slew of extra carries, up to seven on the "middle" result bit, while a full adder has no more than three inputs? Simple (or not so simple): by using something else than normal binary adders, so that more than three signals can be added in a single circuit. A load-based "how many inputs are on?" circuit can not only check against a defined threshold of inputs before switching off, by using the output-generating pressure plates to re-configure the circuit itself and thus change the load, it can check for different significant load limits in succession and enforce a stable state when the "correct" output is reached.
Line 88: Line 88:
 
: http://www.bay12forums.com/smf/index.php?topic=132977.0
 
: http://www.bay12forums.com/smf/index.php?topic=132977.0
  
=== The Signal Grinder ===  
+
== The Signal Grinder ==  
  
 
: An unbeatably dwarven (and delicious) power-to-signal converter.
 
: An unbeatably dwarven (and delicious) power-to-signal converter.
Line 117: Line 117:
 
: List of Materials: 1 millstone, 2 mechanisms, one chair, millable plant(s), empty bag(s). The chair can be deconstructed after priming the circuit, to recover materials.
 
: List of Materials: 1 millstone, 2 mechanisms, one chair, millable plant(s), empty bag(s). The chair can be deconstructed after priming the circuit, to recover materials.
  
=== Very compact incrementers and a collection of other computing components ===
+
== Very compact incrementers and a collection of other computing components ==
  
 
: The second post in a thread originally made to present a pseudo-random RNG using standard computing procedure - a linear-feedback shift register. During that construction, i got some ideas for smaller dwarven computing stuff, so went and built those, too. Some of them may be of practical use (as far as dwarven computing can be considered practical).
 
: The second post in a thread originally made to present a pseudo-random RNG using standard computing procedure - a linear-feedback shift register. During that construction, i got some ideas for smaller dwarven computing stuff, so went and built those, too. Some of them may be of practical use (as far as dwarven computing can be considered practical).
Line 125: Line 125:
 
: The two designs of '''all-purpose logic gates''' are primarily concept demonstrations, to show what minecart computing is capable of. Each can distinguish the four possible states of two binary inputs accurately, using only two input devices/connections, which don't need reconfiguring for different logical conditions.  
 
: The two designs of '''all-purpose logic gates''' are primarily concept demonstrations, to show what minecart computing is capable of. Each can distinguish the four possible states of two binary inputs accurately, using only two input devices/connections, which don't need reconfiguring for different logical conditions.  
  
: The '''memory cell''' is still more for showing off - there are compacter and more reliable powerless memory cells possible. The design shown was an important stepping stone, since it was the first time i fiddled with concepts of adressing memory instead of using memory cells dedicated to a single purpose.
+
: The '''memory cell''' is still more for showing off - there are compacter and more reliable powerless memory cells possible. The design shown has been demonstrated to be a workable adressable memory cell which reliably acquires and holds an input after enabling, until reset, and can be read out to a memory buffer, which can be shared with other memory arrays.
  
 
: The '''binary and ternary incrementer''' are ''very'' compact and to my knowledge perfectly reliable devices. I fully intend to use them in future projects.
 
: The '''binary and ternary incrementer''' are ''very'' compact and to my knowledge perfectly reliable devices. I fully intend to use them in future projects.
Line 132: Line 132:
  
 
: Grab-bag of mechanical and minecart logic stuff, crammed into a thread full of weird computey things: http://www.bay12forums.com/smf/index.php?topic=135141.msg4881573#msg4881573
 
: Grab-bag of mechanical and minecart logic stuff, crammed into a thread full of weird computey things: http://www.bay12forums.com/smf/index.php?topic=135141.msg4881573#msg4881573
 +
 +
== Division by minecart collision ==
 +
 +
Since i successfully built devices to perform addition, subtraction and multiplication, i felt the need to complete my mastery of basic algebra by designing something that divides. This is notoriously difficult to achieve automatically, because to the best of my knowledge, binary division is a sort of iterative subtraction and there's no reasonable way to do this without a massively complicated processor, like the one shown in [[User:BaronW|The Almighty Dwarven Calculator]].
 +
 +
Since the reasonable way to do it would be to laboriously repeat a feat already achieved handily by someone else, i settled for an unreasonable way to do it: bashing minecarts together. In case you didn't know, [[User:Larix/Minecart Collisions|bashing minecarts together]] is the new magma. If it's not the answer, the question has been formulated wrong.
 +
 +
Since the output speed of a linear minecart collision is simply the speed of the incoming minecart, multiplied by its mass and then divided by the mass of the outgoing cart - capped at incoming speed itself - every such collision effectively performs a division. By choosing and changing weight and speed of the incoming cart, the dividend can be changed, and by selecting outgoing carts of different weights, different divisors can be chosen. By letting the outgoing cart run freely for a constant number of game steps, then stopping it, the output speed can be measured (in integer numbers).
 +
 +
The entire complication of the device lies in selecting and combining carts and speeds to implement a sufficiently large range of divisions to run. You could of course just inscribe a huge lookup table of sample divisions into your fort's floor (or simply put it into the notes). My dividing machine's primary merit is making the looking-up of division results more entertaining through colliding minecarts.
 +
 +
http://www.bay12forums.com/smf/index.php?topic=15096.msg5129395#msg5129395

Please note that all contributions to Dwarf Fortress Wiki are considered to be released under the GFDL & MIT (see Dwarf Fortress Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)