#wxSand: Owen Piette's Falling Sand Game
#Version 4.4, File subversion 2

group	Logic	Trans1	Trans1a	Trans3	if	not	Switch	or	and
group	Microchip	Note	Case	8way

#Empty.
element	Empty	0	0	0	0.000	1.000	0.000	0.000	1


#Physical Elements

#Connects transistors and other such items.
element	SC	128	128	128	0.000	1.000	0.000	0.000	1

#Wire Guard. Turns adjacent SCa to SC in direct SC -> SCa transfers.
element	WG	126	126	126	0.000	1.000	0.000	0.000	1
neighbor	1.0	WG	SCa	1.0	WG	SC
neighbor	1.0	WG	Buffr2a	1.0	WG	Buffer2
neighbor	1.0	WG	Buffr3a	1.0	WG	Buffer3

#Buffer create. Creates buffer when turned 'on'.
element	BC	194	194	194	0.000	1.000	0.000	0.000	1
element	BCa	194	195	194	0.000	1.000	0.000	0.000	0
neighbor	1.0	BC	Bit11	1.0	BCa	Buffer5
neighbor	1.0	BCa	SC	1.0	BC	Buffer1
neighbor	0.5	BC	Buffer2	1.0	BC	Buffer4

#Data Block. Stops buffer, freezing the bits into storage.
element	DB	192	192	192	0.000	1.000	0.000	0.000	1
element	10f	1	1	0	0.000	1.000	0.000	0.000	0
element	11f	254	254	255	0.000	1.000	0.000	0.000	0
element	20f	0	1	1	0.000	1.000	0.000	0.000	0
element	21f	255	255	254	0.000	1.000	0.000	0.000	0
neighbor	1.0	Buffer1	DB	1.0	Buffer2	DB
neighbor	1.0	Bit10	DB	1.0	10f	DB
neighbor	1.0	Bit11	DB	1.0	11f	DB
neighbor	1.0	Bit20	10f	1.0	20f	10f
neighbor	1.0	Bit21	10f	1.0	21f	10f
neighbor	1.0	Bit20	11f	1.0	20f	11f
neighbor	1.0	Bit21	11f	1.0	21f	11f
neighbor	1.0	Bit10	20f	1.0	10f	20f
neighbor	1.0	Bit11	20f	1.0	11f	20f
neighbor	1.0	Bit10	21f	1.0	10f	21f
neighbor	1.0	Bit11	21f	1.0	11f	21f
neighbor	1.0	Buffer4	20f	1.0	SC	20f
neighbor	1.0	Buffer4	21f	1.0	SC	21f
neighbor	1.0	Buffer1	10f	1.0	Buffer2	Buffer1
neighbor	1.0	Buffer1	11f	1.0	Buffer2	Buffer1
neighbor	1.0	Buffer1	20f	1.0	Buffer2	Buffer1
neighbor	1.0	Buffer1	21f	1.0	Buffer2	Buffer1

#Data Transfer. Takes frozen bits and copies them to an adjacent wire.
element	DT	192	193	192	0.000	1.000	0.000	0.000	0
element	DTo	192	193	193	0.000	1.000	0.000	0.000	0
element	DT0	1	1	1	0.000	1.000	0.000	0.000	0
element	DT1	254	254	254	0.000	1.000	0.000	0.000	0

#Wire Manipulators.
element	SCa	128	129	128	0.000	1.000	0.000	0.000	1
element	Ent	129	129	128	0.000	1.000	0.000	0.000	1
element	Ext	128	129	129	0.000	1.000	0.000	0.000	1
neighbor	1.0	Buffer1	Ent	1.0	Buffr1c	Ent
neighbor	1.0	Buffr1c	SCa	1.0	Buffr1a	Buffer2
neighbor	1.0	Buffr1a	SCa	1.0	Buffr1a	Buffr2a
neighbor	0.5	Buffr1a	Ext	1.0	Buffr1b	Ext
neighbor	0.5	Bit10a	Ext	1.0	Bit10b	Ext
neighbor	0.5	Bit11a	Ext	1.0	Bit11b	Ext
neighbor	0.5	Bit10b	Ext	1.0	Bit10a	Ext
neighbor	0.5	Bit11b	Ext	1.0	Bit11a	Ext
neighbor	1.0	Buffr1b	SC	1.0	Buffr2a	Buffer1
neighbor	1.0	Buffer2	Ext	1.0	Buffr2a	Ext
neighbor	1.0	Buffer3	Ext	1.0	Buffr3a	Ext
neighbor	1.0	SC	Ext	1.0	SCa	Ext

#Wire Copier. Takes info from a stream and copies it to a new stream.
element	WC	129	129	129	0.000	1.000	0.000	0.000	1
element	WCB	129	129	129	0.000	1.000	0.000	0.000	0
element	W10	130	129	129	0.000	1.000	0.000	0.000	0
element	W20	129	130	129	0.000	1.000	0.000	0.000	0
element	W11	129	129	130	0.000	1.000	0.000	0.000	0
element	W21	129	130	130	0.000	1.000	0.000	0.000	0
neighbor	1.0	WC	Buffer1	1.0	WCB	Buffer1
neighbor	1.0	WCB	SCa	1.0	WCB	Buffr1a
neighbor	1.0	WCB	Bit10	1.0	W10	Bit10
neighbor	1.0	WCB	Bit20	1.0	W20	Bit20
neighbor	1.0	WCB	Bit11	1.0	W11	Bit11
neighbor	1.0	WCB	Bit21	1.0	W21	Bit21
neighbor	1.0	W20	Bit10	1.0	W10	Bit10
neighbor	1.0	W10	Bit20	1.0	W20	Bit20
neighbor	1.0	W20	Bit11	1.0	W11	Bit11
neighbor	1.0	W10	Bit21	1.0	W21	Bit21
neighbor	1.0	W21	Bit10	1.0	W10	Bit10
neighbor	1.0	W11	Bit20	1.0	W20	Bit20
neighbor	1.0	W21	Bit11	1.0	W11	Bit11
neighbor	1.0	W11	Bit21	1.0	W21	Bit21
neighbor	1.0	W10	Buffer4	1.0	WC	Buffer4
neighbor	1.0	W11	Buffer4	1.0	WC	Buffer4
neighbor	1.0	W20	Buffer4	1.0	WC	Buffer4
neighbor	1.0	W21	Buffer4	1.0	WC	Buffer4
neighbor	1.0	WC	Buffr2a	1.0	WC	Buffr4a
neighbor	1.0	WC	Buffr3a	1.0	WC	Buffr4a
neighbor	1.0	W10	Buffr2a	1.0	W10	Bit10
neighbor	1.0	W20	Buffr3a	1.0	W20	Bit20
neighbor	1.0	W11	Buffr2a	1.0	W11	Bit11
neighbor	1.0	W21	Buffr3a	1.0	W21	Bit21
neighbor	1.0	WC	Bit10	1.0	W10	Bit10
neighbor	1.0	WC	Bit11	1.0	W10	Bit11
neighbor	1.0	W10	SCa	1.0	W10	Bit10a
neighbor	1.0	W11	SCa	1.0	W11	Bit11a

#Bit Splitter. Splits a byte into 8 bits. The bits need to be re-routed, as they are all on the same line.
element	BS	162	161	161	0.000	1.000	0.000	0.000	0

#Bit Detector. If buffer is detected travelling down the line, it sends an 'on' upwards.
element	BD	162	162	162	0.000	1.000	0.000	0.000	0
element	BDa	162	163	162	0.000	1.000	0.000	0.000	0

#Bit Rerouter. Makes one go up, one go right.
element	BR	164	165	164	0.000	1.000	0.000	0.000	0
element	BRa	165	165	164	0.000	1.000	0.000	0.000	0
element	BRb	164	165	165	0.000	1.000	0.000	0.000	0

#Case. Does nothing but look nice.
element	Case	0	128	64	0.000	1.000	0.000	0.000	1
element	Case2	192	192	128	0.000	1.000	0.000	0.000	0
neighbor	1.0	Case	SC	1.0	Case2	SC
neighbor	1.0	Case	SCa	1.0	Case2	SCa

#No items under the "Microchip" section work yet, as per pending Bit Splitter, Detector, Rerouter, and Data Transfer.
element	Note	0	0	0	0.000	1.000	0.000	0.000	1


#Begin Transistor Parts. Based off of Purple100's concepts.
#The transistor is always left to right processing. The a type deletes the bits instead of simply not letting them pass.
#Transistors allow current to pass under certain conditions. Used in conjunction with logic.
element	Trans1	177	176	176	0.000	1.000	0.000	0.000	1
element	Trans2	176	177	176	0.000	1.000	0.000	0.000	0
element	Trans1a	175	174	174	0.000	1.000	0.000	0.000	1
element	Trans2a	174	175	174	0.000	1.000	0.000	0.000	0
neighbor	1.0	Trans1	Buffer1	1.0	Trans1	Buffr1a
neighbor	1.0	Trans1a	Buffer1	1.0	Trans1a	Buffr1a
neighbor	1.0	Trans2a	Buffer1	1.0	Trans2a	Buffer5
neighbor	1.0	Trans2a	Bit10	1.0	Trans2a	Buffer5
neighbor	1.0	Trans2a	Bit11	1.0	Trans2a	Buffer5
neighbor	1.0	Trans2a	Bit20	1.0	Trans2a	Buffer5
neighbor	1.0	Trans2a	Bit21	1.0	Trans2a	Buffer5

#Put this adjacent to Trans1, or adjacent to SCa to send bits for true/false.
element	Trans3	178	177	176	0.000	1.000	0.000	0.000	1
element	Trans3a	178	177	177	0.000	1.000	0.000	0.000	0
element	Trans4	178	177	176	0.000	1.000	0.000	0.000	0
element	Trans4a	178	178	176	0.000	1.000	0.000	0.000	0
neighbor	1.0	Trans4	Trans2	1.0	Trans4	Trans1
neighbor	1.0	Trans3	Trans1	1.0	Trans3	Trans2
neighbor	1.0	Trans4	Trans2a	1.0	Trans4	Trans1a
neighbor	1.0	Trans3	Trans1a	1.0	Trans3	Trans2a
neighbor	1.0	Trans4a	SCa	1.0	Trans4	Bit11
neighbor	1.0	Trans3a	SCa	1.0	Trans3	Bit10
neighbor	1.0	Trans4	Buffer2	1.0	Trans4	Buffer4

#The 'If' Gate gives 'on' when the input is 'on'.
element	If	255	0	0	0.000	1.000	0.000	0.000	0
element	if	255	1	1	0.000	1.000	0.000	0.000	1
neighbor	1.0	If	Bit10	1.0	if	Buffer5
neighbor	1.0	if	Bit10	1.0	if	Buffer5
neighbor	1.0	If	Bit11	1.0	If	Buffer5
neighbor	1.0	if	Bit11	1.0	If	Buffer5
neighbor	1.0	If	Trans3	1.0	If	Trans4a
neighbor	1.0	if	Trans4	1.0	if	Trans3a

#The 'Not' Gate gives 'on' when the input is 'off'.
element	Not	0	255	0	0.000	1.000	0.000	0.000	0
element	not	1	255	1	0.000	1.000	0.000	0.000	1
neighbor	1.0	Not	Bit10	1.0	not	Buffer5
neighbor	1.0	not	Bit10	1.0	not	Buffer5
neighbor	1.0	Not	Bit11	1.0	Not	Buffer5
neighbor	1.0	not	Bit11	1.0	Not	Buffer5
neighbor	1.0	Not	Trans4	1.0	Not	Trans3a
neighbor	1.0	not	Trans3	1.0	not	Trans4a

#The 'Switch' Gate switches every time a bit touches it, regardless of value.
element	Switch	0	0	255	0.000	1.000	0.000	0.000	1
element	switch	1	1	255	0.000	1.000	0.000	0.000	0
neighbor	1.0	Switch	Trans3	1.0	Switch	Trans4a
neighbor	1.0	switch	Trans4	1.0	switch	Trans3a
neighbor	1.0	Bit10	Switch	1.0	Buffer5	switch
neighbor	1.0	Bit11	Switch	1.0	Buffer5	switch
neighbor	1.0	Bit10	switch	1.0	Buffer5	Switch
neighbor	1.0	Bit11	switch	1.0	Buffer5	Switch

#The 'Else' logic sends an 'on' when an adjacent logic is 'off'. Placeholder.

#The 'Or' logic gives an 'on' when either input is 'on'.
element	Or	255	255	0	0.000	1.000	0.000	0.000	0
element	or	255	255	1	0.000	1.000	0.000	0.000	1
element	ora	255	255	2	0.000	1.000	0.000	0.000	0
neighbor	1.0	Or	Trans3	1.0	Or	Trans4a
neighbor	1.0	ora	Trans4	1.0	or	Trans3a
neighbor	1.0	Or	Bit11	1.0	Or	Buffer5
neighbor	1.0	or	Bit11	1.0	Or	Buffer5
neighbor	1.0	Or	Bit10	1.0	or	Buffer5
neighbor	1.0	or	Bit10	1.0	ora	Buffer5

#The 'And' logic gives an 'on' when both inputs are 'on'.
element	And	0	255	255	0.000	1.000	0.000	0.000	0
element	AND	1	255	255	0.000	1.000	0.000	0.000	0
element	and	2	255	255	0.000	1.000	0.000	0.000	1
neighbor	1.0	AND	Trans3	1.0	And	Trans4
neighbor	1.0	And	Trans4	1.0	And	Trans4a
neighbor	1.0	and	Trans4	1.0	and	Trans3a
neighbor	1.0	And	Bit11	1.0	AND	Buffer5
neighbor	1.0	and	Bit11	1.0	AND	Buffer5
neighbor	1.0	And	Bit10	1.0	and	Buffer5
neighbor	1.0	and	Bit10	1.0	and	Buffer5


#Non-physical Elements

#Bit-code, Buffer
element	Buffer1	191	191	127	0.000	1.000	0.000	0.000	1
element	Buffer2	127	127	63	0.000	1.000	0.000	0.000	0
element	Buffer3	127	127	63	0.000	1.000	0.000	0.000	0
element	Buffer4	191	191	127	0.000	1.000	0.000	0.000	0
neighbor	0.7	Buffer1	SC	1.0	Buffer2	Buffer1
neighbor	0.7	Buffer4	Buffer2	1.0	SC	Buffer4
neighbor	0.7	Buffer4	Buffer3	1.0	SC	Buffer4
neighbor	0.7	Buffer4	Buffer4	1.0	SC	SC
neighbor	0.7	Buffer2	SC	1.0	Buffer2	Buffer4
neighbor	0.7	Buffer3	SC	1.0	Buffer3	Buffer4
neighbor	1.0	Buffer4	Buffr2a	1.0	SC	Buffr4a
neighbor	1.0	Buffer4	Buffr3a	1.0	SC	Buffr4a
neighbor	1.0	Buffr4a	Buffr2a	1.0	SCa	Buffr4a
neighbor	1.0	Buffr4a	Buffr3a	1.0	SCa	Buffr4a
neighbor	1.0	Buffr4a	Buffer2	1.0	SCa	Buffer4
neighbor	1.0	Buffr4a	Buffer3	1.0	SCa	Buffer4

#Buffer Clear
element	Buffer5	127	127	191	0.000	1.000	0.000	0.000	0
neighbor	0.7	Buffer5	Bit10	1.0	Buffer5	Buffer2
neighbor	0.7	Buffer5	Bit11	1.0	Buffer5	Buffer2
neighbor	0.7	Buffer5	Bit20	1.0	Buffer5	Buffer3
neighbor	0.7	Buffer5	Bit21	1.0	Buffer5	Buffer3
neighbor	0.7	Buffer5	Buffer4	1.0	Buffer4	SC

#Extra Buffers
element	Buffr1a	191	191	127	0.000	1.000	0.000	0.000	0
element	Buffr1b	191	191	127	0.000	1.000	0.000	0.000	0
element	Buffr1c	191	191	127	0.000	1.000	0.000	0.000	0
element	Buffr2a	127	127	63	0.000	1.000	0.000	0.000	0
element	Buffr3a	127	127	63	0.000	1.000	0.000	0.000	0
element	Buffr4a	191	191	127	0.000	1.000	0.000	0.000	0
neighbor	1.0	Buffr1a	SCa	1.0	Buffr2a	Buffr1a
neighbor	1.0	Buffr1b	SC	1.0	Buffr2a	Buffer1
neighbor	1.0	Buffr1b	SCa	1.0	Buffr2a	Buffr1b

#Bit-code, Bit Odd
element	Bit10	1	0	0	0.000	1.000	0.000	0.000	0
element	Bit11	254	255	255	0.000	1.000	0.000	0.000	0
element	Bit10a	2	0	0	0.000	1.000	0.000	0.000	0
element	Bit11a	253	255	255	0.000	1.000	0.000	0.000	0
element	Bit10b	3	0	0	0.000	1.000	0.000	0.000	0
element	Bit11b	252	255	255	0.000	1.000	0.000	0.000	0
neighbor	0.7	Bit10	Buffer2	1.0	Buffer3	Bit10
neighbor	0.7	Bit11	Buffer2	1.0	Buffer3	Bit11
neighbor	1.0	Bit10	Buffr2a	1.0	Buffr3a	Bit10
neighbor	1.0	Bit11	Buffr2a	1.0	Buffr3a	Bit11
neighbor	0.7	Bit10	SC	1.0	Buffer3	Bit10
neighbor	0.7	Bit11	SC	1.0	Buffer3	Bit11
neighbor	0.7	Bit10b	SC	1.0	Buffr3a	Bit10
neighbor	0.7	Bit11b	SC	1.0	Buffr3a	Bit11
neighbor	0.7	Bit10a	SCa	1.0	Buffr3a	Bit10a
neighbor	0.7	Bit11a	SCa	1.0	Buffr3a	Bit11a

#Bit-code, Bit Even
element	Bit20	0	0	1	0.000	1.000	0.000	0.000	0
element	Bit21	255	255	254	0.000	1.000	0.000	0.000	0
neighbor	0.7	Bit20	Buffer3	1.0	Buffer2	Bit20
neighbor	0.7	Bit21	Buffer3	1.0	Buffer2	Bit21
neighbor	1.0	Bit20	Buffr3a	1.0	Buffr2a	Bit20
neighbor	1.0	Bit21	Buffr3a	1.0	Buffr2a	Bit21
neighbor	0.7	Bit20	SC	1.0	Buffer3	Bit10
neighbor	0.7	Bit21	SC	1.0	Buffer3	Bit11

#Test bit false
item	TestBit0	1
Buffer4	4	Bit10	Q
"4Q"

#Test bit true
item	TestBit1	1
Buffer4	4	Bit11	W
"4W"

#Test byte 51
item	TestByte	1
Buffer1	1	Buffer4	4	Bit10	Q	Bit11	W	Bit20	E	Bit21	R
"4RQEWRQEW1"


#Items Section

#All Microchip items created with Purple100's "Itemizer 1.2" program.
#None of the microchip items work yet (at least not yet), they just simply serve as examples.
#The 8-way splitter reroutes split bits from a byte into order from top to bottom.
item	8way	1
Case	#	SC	%	BRa	&	BR	*	BRb	+	SCa	,	Ext	-	Ent	. 
"####################################",
"####################,,,,,,,,,,,,,,##",
"##############&,,,,,##.####%%%##-#%%",
"##########,,,%*######%,,,,%##-%%%###",
"#########&#-##+,,,,,%####%,,,,###%%%",
"####,,,,%*#########%,,,,%#####%%####",
"####,#-##+#-##&,,,%####%,,,,,###%%%%",
"####,#####,,,%*#-####,,######,%#####",
"###&##########+,,,%%,#-###,,%%,%%%%%",
"%%%*###############,%%%##,-####,####",
"###+##########&,,,,####%,#######,%%%",
"####,#####,,,%*########,%######-####",
"####,#-##&#-##+,,,,,%%,##%##,,,,,%%%",
"####,,,,%*#########%,#.###%,########",
"#########+#-##&,,,%##,####,%%%%%%%%%",
"##########,,,%*#-#####,,,,##########",
"##############+,,,%%%%%%%%%%%%%%%%%%",
"####################################"

#End

    Source: geocities.com/normandy_333/FSG

               ( geocities.com/normandy_333)