Har som sagt använt PBP, dock är arrayhanteringen i PBP aningen begränsad och känner nu i efterhand att man kunde automatisera väldigt många funktioner ifall man haft tillgång till arrayerna som finns i C.
Kod: Markera allt
'****************************************************************
'* Name : Led Kub 8x8x7 *
'* Author : Petter Nordqvist *
'* Notice : Copyright (c) 2010 *
'* : All Rights Reserved *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Define OSC 20
CMCON = 7 ' stänger av komparatorn
ADCON1 = %00000100
ADCON0.0 = 1 'slå på A/D
'Portkonfiguration
TRISA = %011011
TRISB = %00000000 'PORTB utgång
TRISC = %00000000 'PORTC utgång
TRISD = %00000000 'PORTD utgång
TRISE = %000 'PORTE utgång
PORTA = 0
PORTB = 0
PORTC = 0
PORTD = 0
PORTE = 0
'Portalias
RCK VAR PORTC.6 ' Storage register clock input (Sekundärklocka)
SCL VAR PORTC.7 ' Shift register clock input (Huvudklocka)
LAGER0 VAR PORTB.4
LAGER1 VAR PORTB.5
LAGER2 VAR PORTA.2
LAGER3 VAR PORTE.2
LAGER4 VAR PORTA.5
LAGER5 VAR PORTE.0
LAGER6 VAR PORTE.1
LAGER0 = 1
LAGER1 = 1
LAGER2 = 1
LAGER3 = 1
LAGER4 = 1
LAGER5 = 1
LAGER6 = 1
' Variabelkonfiguration
kublager0 var byte[8]
kublager1 var byte[8]
kublager2 var byte[8]
kublager3 var byte[8]
kublager4 var byte[8]
kublager5 var byte[8]
kublager6 var byte[8]
bakkublager0 var byte[8]
bakkublager1 var byte[8]
bakkublager2 var byte[8]
bakkublager3 var byte[8]
bakkublager4 var byte[8]
bakkublager5 var byte[8]
bakkublager6 var byte[8]
' 2x2 kuber kub[0] = x, kub[1] = y, kub[2] = z
kub1 var byte[3]
kub2 var byte[3]
kub3 var byte[3]
kub4 var byte[3]
kub5 var byte[3]
kub6 var byte[3]
kub7 var byte[3]
kub8 var byte[3]
kub9 var byte[3]
kub10 var byte[3]
kub11 var byte[3]
kub12 var byte[3]
kub13 var byte[3]
kub14 var byte[3]
kub15 var byte[3]
kub16 var byte[3]
i var WORD
k var word
delay var word
n var word
' Kubhantering
x var byte
y var byte
z var byte
g var word
d var word
m var byte
alert var bit
alert = 0
mode var bit
mode = 0 ' 0 = normalt läge, 1 = musikläge
volym var byte
volym = 0
foregaendevolym var byte
foregaendevolym = 255
lage var byte ' avgör vilken animation musikläget skall visa
lage = 0
lageraknare var word
lageraknare = 0
h var byte
j var byte
h = 0
j = 0
' används inuti interrupt
raknare var byte
raknare = 0
u var byte
temp var byte[8]
fordrojinterrupt var Byte
fordrojinterrupt = 0
randomvariabel var word
randomvariabel = 0
INTCON = %11100000 ' Enable TMR0IE interrupt
T0CON = %11000000 ' prescaler 1:2
On Interrupt Goto interruptrutin ' Define interrupt handler
'Huvudprogram
GOSUB nollstall_kub 'Nollställ kuben
goto loop 'Hoppa över subrutiner
pausefunktion:
delay=delay*100
doit:
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
pauseus 1
delay=delay-1
if delay != 0 then goto doit
return
nollstall_kub:
for i = 0 To 7
kublager0[i] = 0
kublager1[i] = 0
kublager2[i] = 0
kublager3[i] = 0
kublager4[i] = 0
kublager5[i] = 0
kublager6[i] = 0
NEXT i
RETURN
nollstall_bakkub:
for i = 0 To 7
bakkublager0[i] = 0
bakkublager1[i] = 0
bakkublager2[i] = 0
bakkublager3[i] = 0
bakkublager4[i] = 0
bakkublager5[i] = 0
bakkublager6[i] = 0
NEXT i
RETURN
ettstall_kub:
for i = 0 To 7
kublager0[i] = 255
kublager1[i] = 255
kublager2[i] = 255
kublager3[i] = 255
kublager4[i] = 255
kublager5[i] = 255
kublager6[i] = 255
NEXT i
RETURN
DISABLE
interruptrutin:
if INTCON.2 = 1 then 'kolla ifall timer0 har utlöst
fordrojinterrupt = fordrojinterrupt+1
if fordrojinterrupt >= 30 then 'anpassat för att ögat inte skall uppfatta flimmer
fordrojinterrupt = 0
raknare=raknare+1
if raknare = 7 then raknare = 0
for u = 0 to 7
if raknare = 0 then PORTD = kublager0[u]
if raknare = 1 then PORTD = kublager1[u]
if raknare = 2 then PORTD = kublager2[u]
if raknare = 3 then PORTD = kublager3[u]
if raknare = 4 then PORTD = kublager4[u]
if raknare = 5 then PORTD = kublager5[u]
if raknare = 6 then PORTD = kublager6[u]
SCL = 1
pauseus 1
SCL = 0
next u
RCK = 1
pauseus 1
RCK = 0
LAGER0 = 1
LAGER1 = 1
LAGER2 = 1
LAGER3 = 1
LAGER4 = 1
LAGER5 = 1
LAGER6 = 1
if raknare = 0 then LAGER0 = 0
if raknare = 1 then LAGER1 = 0
if raknare = 2 then LAGER2 = 0
if raknare = 3 then LAGER3 = 0
if raknare = 4 then LAGER4 = 0
if raknare = 5 then LAGER5 = 0
if raknare = 6 then LAGER6 = 0
endif
INTCON.2 = 0 ' Clear interrupt flag
endif
RESUME
ENABLE
' animationer
fyrkantifyrkant:
gosub nollstall_kub
for i = 0 to 7
kublager0[i] = 255
kublager6[i] = 255
if i = 0 or i = 7 then
kublager1[i] = 255
kublager2[i] = 255
kublager3[i] = 255
kublager4[i] = 255
kublager5[i] = 255
else
kublager1[i] = 129
kublager2[i] = 129
kublager3[i] = 129
kublager4[i] = 129
kublager5[i] = 129
endif
next i
delay = 30
gosub pausefunktion
gosub nollstall_kub
for i = 1 to 6
kublager1[i] = 126
kublager5[i] = 126
if i = 1 or i = 6 then
kublager2[i] = 126
kublager3[i] = 126
kublager4[i] = 126
else
kublager2[i] = 66
kublager3[i] = 66
kublager4[i] = 66
endif
next i
delay = 30
gosub pausefunktion
gosub nollstall_kub
for i = 2 to 5
kublager2[i] = 60
kublager4[i] = 60
if i = 2 or i = 5 then
kublager3[i] = 60
else
kublager3[i] = 36
endif
next i
delay = 30
gosub pausefunktion
gosub nollstall_kub
kublager3[3] = 24
kublager3[4] = 24
return
gardin:
gosub nollstall_kub
for i = 0 to 7
if i = 0 or i = 7 then
kublager6[i] = 255
else
kublager6[i] = 129
endif
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
if i = 0 or i = 7 then
kublager5[i] = 255
else
kublager5[i] = 129
endif
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
if i = 0 or i = 7 then
kublager4[i] = 255
else
kublager4[i] = 129
endif
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
if i = 0 or i = 7 then
kublager3[i] = 255
else
kublager3[i] = 129
endif
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
if i = 0 or i = 7 then
kublager2[i] = 255
else
kublager2[i] = 129
endif
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
if i = 0 or i = 7 then
kublager1[i] = 255
else
kublager1[i] = 129
endif
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
if i = 0 or i = 7 then
kublager0[i] = 255
else
kublager0[i] = 129
endif
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
kublager6[i] = 0
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
kublager5[i] = 0
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
kublager4[i] = 0
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
kublager3[i] = 0
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
kublager2[i] = 0
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
kublager1[i] = 0
next i
delay = 8
gosub pausefunktion
for i = 0 to 7
kublager0[i] = 0
next i
delay = 8
gosub pausefunktion
return
markera_kanter:
gosub nollstall_kub
kublager0[7] = 1
delay = 6
gosub pausefunktion
for i = 6 to 0 step -1
kublager0[7] = kublager0[7] << 1
kublager0[7] = kublager0[7]+1
kublager0[i] = 1
if i = 6 then kublager1[7] = 1
if i = 5 then kublager2[7] = 1
if i = 4 then kublager3[7] = 1
if i = 3 then kublager4[7] = 1
if i = 2 then kublager5[7] = 1
if i = 1 then kublager6[7] = 1
delay = 6
gosub pausefunktion
next i
for i = 6 to 0 step -1
kublager0[0] = kublager0[0] << 1
kublager0[0] = kublager0[0]+1
kublager6[7] = kublager6[7] << 1
kublager6[7] = kublager6[7]+1
kublager6[i] = 1
if i != 0 then kublager0[i] = kublager0[i]+128
if i = 6 then
kublager1[0] = 1
kublager1[7] = kublager1[7]+128
endif
if i = 5 then
kublager2[0] = 1
kublager2[7] = kublager2[7]+128
endif
if i = 4 then
kublager3[0] = 1
kublager3[7] = kublager3[7]+128
endif
if i = 3 then
kublager4[0] = 1
kublager4[7] = kublager4[7]+128
endif
if i = 2 then
kublager5[0] = 1
kublager5[7] = kublager5[7]+128
endif
if i = 1 then
kublager6[0] = 1
kublager6[7] = kublager6[7]+128
endif
delay = 6
gosub pausefunktion
next i
for i = 6 to 0 step -1
kublager6[0] = kublager6[0] << 1
kublager6[0] = kublager6[0]+1
if i != 0 then kublager6[i] = kublager6[i]+128
if i = 6 then kublager1[0] = kublager1[0]+128
if i = 5 then kublager2[0] = kublager2[0]+128
if i = 4 then kublager3[0] = kublager3[0]+128
if i = 3 then kublager4[0] = kublager4[0]+128
if i = 2 then kublager5[0] = kublager5[0]+128
if i = 1 then kublager6[0] = kublager6[0]+128
delay = 6
gosub pausefunktion
next i
return
vagmonster:
For k = 0 to 6
for m = 0 to 11
gosub nollstall_kub
gosub vagmonster_andra
delay = 10
gosub pausefunktion
next m
next k
return
vagmonster_andra:
if m = 0 then
kublager5[0] = 255
kublager6[1] = 255
kublager5[2] = 255
kublager4[3] = 255
kublager3[4] = 255
kublager2[5] = 255
kublager1[6] = 255
kublager0[7] = 255
endif
if m = 1 then
kublager1[5] = 255
kublager2[4] = 255
kublager3[3] = 255
kublager4[2] = 255
kublager5[1] = 255
kublager6[0] = 255
kublager0[6] = 255
kublager1[7] = 255
endif
if m = 2 then
kublager0[5] = 255
kublager1[4] = 255
kublager1[6] = 255
kublager2[3] = 255
kublager3[2] = 255
kublager4[1] = 255
kublager5[0] = 255
kublager2[7] = 255
endif
if m = 3 then
kublager4[0] = 255
kublager3[1] = 255
kublager2[2] = 255
kublager1[3] = 255
kublager0[4] = 255
kublager1[5] = 255
kublager2[6] = 255
kublager3[7] = 255
endif
if m = 4 then
kublager3[0] = 255
kublager2[1] = 255
kublager1[2] = 255
kublager0[3] = 255
kublager1[4] = 255
kublager2[5] = 255
kublager3[6] = 255
kublager4[7] = 255
endif
if m = 5 then
kublager2[0] = 255
kublager1[1] = 255
kublager0[2] = 255
kublager1[3] = 255
kublager2[4] = 255
kublager3[5] = 255
kublager4[6] = 255
kublager5[7] = 255
endif
if m = 6 then
kublager1[0] = 255
kublager0[1] = 255
kublager1[2] = 255
kublager2[3] = 255
kublager3[4] = 255
kublager4[5] = 255
kublager5[6] = 255
kublager6[7] = 255
endif
if m = 7 then
kublager0[0] = 255
kublager1[1] = 255
kublager2[2] = 255
kublager3[3] = 255
kublager4[4] = 255
kublager5[5] = 255
kublager6[6] = 255
kublager5[7] = 255
ENDif
if m = 8 then
kublager1[0] = 255
kublager2[1] = 255
kublager3[2] = 255
kublager4[3] = 255
kublager5[4] = 255
kublager6[5] = 255
kublager5[6] = 255
kublager4[7] = 255
endif
if m = 9 then
kublager2[0] = 255
kublager3[1] = 255
kublager4[2] = 255
kublager5[3] = 255
kublager6[4] = 255
kublager5[5] = 255
kublager4[6] = 255
kublager3[7] = 255
endif
if m = 10 then
kublager3[0] = 255
kublager4[1] = 255
kublager5[2] = 255
kublager6[3] = 255
kublager5[4] = 255
kublager4[5] = 255
kublager3[6] = 255
kublager2[7] = 255
endif
if m = 11 then
kublager4[0] = 255
kublager5[1] = 255
kublager6[2] = 255
kublager5[3] = 255
kublager4[4] = 255
kublager3[5] = 255
kublager2[6] = 255
kublager1[7] = 255
endif
return
vanster_till_hoger_swipe:
gosub nollstall_kub
for n = 0 to 7
kublager0[n] = 255
kublager1[n] = 255
kublager2[n] = 255
kublager3[n] = 255
kublager4[n] = 255
kublager5[n] = 255
kublager6[n] = 255
delay = 8
gosub pausefunktion
next n
return
hoger_till_vanster_swipe:
gosub nollstall_kub
for n = 7 to 0 STEP -1
kublager0[n] = 255
kublager1[n] = 255
kublager2[n] = 255
kublager3[n] = 255
kublager4[n] = 255
kublager5[n] = 255
kublager6[n] = 255
delay = 8
gosub pausefunktion
next n
return
fyrkantsvag:
gosub nollstall_kub
kublager0[3] = 24
kublager0[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager0[0] = 24
kublager0[1] = 126
kublager0[2] = 126
kublager0[3] = 231
kublager0[4] = 231
kublager0[5] = 126
kublager0[6] = 126
kublager0[7] = 24
kublager1[3] = 24
kublager1[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager0[0] = 102
kublager0[1] = 129
kublager0[2] = 129
kublager0[5] = 129
kublager0[6] = 129
kublager0[7] = 102
kublager1[0] = 24
kublager1[1] = 126
kublager1[2] = 126
kublager1[3] = 231
kublager1[4] = 231
kublager1[5] = 126
kublager1[6] = 126
kublager1[7] = 24
kublager2[3] = 24
kublager2[4] = 24
delay = 8
gosub pausefunktion
for n = 0 to 6
gosub nollstall_kub
kublager0[0] = 129
kublager0[7] = 129
kublager1[0] = 102
kublager1[1] = 129
kublager1[2] = 129
kublager1[5] = 129
kublager1[6] = 129
kublager1[7] = 129
kublager2[0] = 24
kublager2[1] = 126
kublager2[2] = 126
kublager2[3] = 231
kublager2[4] = 231
kublager2[5] = 126
kublager2[6] = 126
kublager2[7] = 24
kublager3[3] = 24
kublager3[4] = 24
delay = 5
gosub pausefunktion
gosub nollstall_kub
kublager1[0] = 129
kublager1[7] = 129
kublager2[0] = 102
kublager2[1] = 129
kublager2[2] = 129
kublager2[5] = 129
kublager2[6] = 129
kublager2[7] = 102
kublager3[0] = 24
kublager3[1] = 126
kublager3[2] = 126
kublager3[3] = 231
kublager3[4] = 231
kublager3[5] = 126
kublager3[6] = 126
kublager3[7] = 24
kublager4[3] = 24
kublager4[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager2[0] = 129
kublager2[7] = 129
kublager3[0] = 102
kublager3[1] = 129
kublager3[2] = 129
kublager3[5] = 129
kublager3[6] = 129
kublager3[7] = 102
kublager4[0] = 24
kublager4[1] = 126
kublager4[2] = 126
kublager4[3] = 231
kublager4[4] = 231
kublager4[5] = 126
kublager4[6] = 126
kublager4[7] = 24
kublager5[3] = 24
kublager5[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager3[0] = 129
kublager3[7] = 129
kublager4[0] = 102
kublager4[1] = 129
kublager4[2] = 129
kublager4[5] = 129
kublager4[6] = 129
kublager4[7] = 102
kublager5[0] = 24
kublager5[1] = 126
kublager5[2] = 126
kublager5[3] = 231
kublager5[4] = 231
kublager5[5] = 126
kublager5[6] = 126
kublager5[7] = 24
kublager6[3] = 24
kublager6[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager4[0] = 129
kublager4[7] = 129
kublager5[0] = 102
kublager5[1] = 129
kublager5[2] = 129
kublager5[5] = 129
kublager5[6] = 129
kublager5[7] = 102
kublager6[0] = 24
kublager6[1] = 126
kublager6[2] = 126
kublager6[3] = 231
kublager6[4] = 231
kublager6[5] = 126
kublager6[6] = 126
kublager6[7] = 24
kublager5[3] = 24
kublager5[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager5[0] = 129
kublager5[7] = 129
kublager6[0] = 102
kublager6[1] = 129
kublager6[2] = 129
kublager6[5] = 129
kublager6[6] = 129
kublager6[7] = 102
kublager5[0] = 24
kublager5[1] = 126
kublager5[2] = 126
kublager5[3] = 231
kublager5[4] = 231
kublager5[5] = 126
kublager5[6] = 126
kublager5[7] = 24
kublager4[3] = 24
kublager4[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager6[0] = 129
kublager6[7] = 129
kublager5[0] = 102
kublager5[1] = 129
kublager5[2] = 129
kublager5[5] = 129
kublager5[6] = 129
kublager5[7] = 102
kublager4[0] = 24
kublager4[1] = 126
kublager4[2] = 126
kublager4[3] = 231
kublager4[4] = 231
kublager4[5] = 126
kublager4[6] = 126
kublager4[7] = 24
kublager3[3] = 24
kublager3[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager5[0] = 129
kublager5[7] = 129
kublager4[0] = 102
kublager4[1] = 129
kublager4[2] = 129
kublager4[5] = 129
kublager4[6] = 129
kublager4[7] = 102
kublager3[0] = 24
kublager3[1] = 126
kublager3[2] = 126
kublager3[3] = 231
kublager3[4] = 231
kublager3[5] = 126
kublager3[6] = 126
kublager3[7] = 24
kublager2[3] = 24
kublager2[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager4[0] = 129
kublager4[7] = 129
kublager3[0] = 102
kublager3[1] = 129
kublager3[2] = 129
kublager3[5] = 129
kublager3[6] = 129
kublager3[7] = 102
kublager2[0] = 24
kublager2[1] = 126
kublager2[2] = 126
kublager2[3] = 231
kublager2[4] = 231
kublager2[5] = 126
kublager2[6] = 126
kublager2[7] = 24
kublager1[3] = 24
kublager1[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager3[0] = 129
kublager3[7] = 129
kublager2[0] = 102
kublager2[1] = 129
kublager2[2] = 129
kublager2[5] = 129
kublager2[6] = 129
kublager2[7] = 102
kublager2[0] = 24
kublager1[1] = 126
kublager1[2] = 126
kublager1[3] = 231
kublager1[4] = 231
kublager1[5] = 126
kublager1[6] = 126
kublager1[7] = 24
kublager0[3] = 24
kublager0[4] = 24
delay = 5
gosub pausefunktion
gosub nollstall_kub
kublager2[0] = 129
kublager2[7] = 129
kublager1[0] = 102
kublager1[1] = 129
kublager1[2] = 129
kublager1[5] = 129
kublager1[6] = 129
kublager1[7] = 102
kublager1[0] = 24
kublager0[1] = 126
kublager0[2] = 126
kublager0[3] = 231
kublager0[4] = 231
kublager0[5] = 126
kublager0[6] = 126
kublager0[7] = 24
kublager1[3] = 24
kublager1[4] = 24
delay = 8
gosub pausefunktion
gosub nollstall_kub
kublager1[0] = 129
kublager1[7] = 129
kublager0[0] = 102
kublager0[1] = 129
kublager0[2] = 129
kublager0[5] = 129
kublager0[6] = 129
kublager0[7] = 102
kublager0[0] = 24
kublager1[1] = 126
kublager1[2] = 126
kublager1[3] = 231
kublager1[4] = 231
kublager1[5] = 126
kublager1[6] = 126
kublager1[7] = 24
kublager2[3] = 24
kublager2[4] = 24
delay = 8
gosub pausefunktion
next n
return
kontrolleranivaett:
if n = 0 then gosub z0
if n = 1 then gosub z1
if n = 2 then gosub z2
if n = 3 then gosub z3
if n = 4 then gosub z4
if n = 5 then gosub z5
return
kontrolleranivatva:
if n = 0 then gosub z1
if n = 1 then gosub z2
if n = 2 then gosub z3
if n = 3 then gosub z4
if n = 4 then gosub z5
if n = 5 then gosub z6
return
lookupy:
LOOKUP y,[%11000000,%01100000,%00110000,%00011000,%00001100,%00000110,%00000011],y
return
z0:
gosub lookupy
bakkublager0[x] = bakkublager0[x]+y
bakkublager0[x+1] = bakkublager0[x+1]+y
return
z1:
gosub lookupy
bakkublager1[x] = bakkublager1[x]+y
bakkublager1[x+1] = bakkublager1[x+1]+y
return
z2:
gosub lookupy
bakkublager2[x] = bakkublager2[x]+y
bakkublager2[x+1] = bakkublager2[x+1]+y
return
z3:
gosub lookupy
bakkublager3[x] = bakkublager3[x]+y
bakkublager3[x+1] = bakkublager3[x+1]+y
return
z4:
gosub lookupy
bakkublager4[x] = bakkublager4[x]+y
bakkublager4[x+1] = bakkublager4[x+1]+y
return
z5:
gosub lookupy
bakkublager5[x] = bakkublager5[x]+y
bakkublager5[x+1] = bakkublager5[x+1]+y
return
z6:
gosub lookupy
bakkublager6[x] = bakkublager6[x]+y
bakkublager6[x+1] = bakkublager6[x+1]+y
return
sma_kuber:
gosub nollstall_bakkub
for n = 0 to 5
if kub1[2] = n then
x = kub1[0]
y = kub1[1]
gosub kontrolleranivaett
y = kub1[1]
gosub kontrolleranivatva
endif
if kub2[2] = n then
x = kub2[0]
y = kub2[1]
gosub kontrolleranivaett
y = kub2[1]
gosub kontrolleranivatva
endif
if kub3[2] = n then
x = kub3[0]
y = kub3[1]
gosub kontrolleranivaett
y = kub3[1]
gosub kontrolleranivatva
endif
if kub4[2] = n then
x = kub4[0]
y = kub4[1]
gosub kontrolleranivaett
y = kub4[1]
gosub kontrolleranivatva
endif
if kub5[2] = n then
x = kub5[0]
y = kub5[1]
gosub kontrolleranivaett
y = kub5[1]
gosub kontrolleranivatva
endif
if kub6[2] = n then
x = kub6[0]
y = kub6[1]
gosub kontrolleranivaett
y = kub6[1]
gosub kontrolleranivatva
endif
if kub7[2] = n then
x = kub7[0]
y = kub7[1]
gosub kontrolleranivaett
y = kub7[1]
gosub kontrolleranivatva
endif
if kub8[2] = n then
x = kub8[0]
y = kub8[1]
gosub kontrolleranivaett
y = kub8[1]
gosub kontrolleranivatva
endif
if kub9[2] = n then
x = kub9[0]
y = kub9[1]
gosub kontrolleranivaett
y = kub9[1]
gosub kontrolleranivatva
endif
if kub10[2] = n then
x = kub10[0]
y = kub10[1]
gosub kontrolleranivaett
y = kub10[1]
gosub kontrolleranivatva
endif
if kub11[2] = n then
x = kub11[0]
y = kub11[1]
gosub kontrolleranivaett
y = kub11[1]
gosub kontrolleranivatva
endif
if kub12[2] = n then
x = kub12[0]
y = kub12[1]
gosub kontrolleranivaett
y = kub12[1]
gosub kontrolleranivatva
endif
if kub13[2] = n then
x = kub13[0]
y = kub13[1]
gosub kontrolleranivaett
y = kub13[1]
gosub kontrolleranivatva
endif
if kub14[2] = n then
x = kub14[0]
y = kub14[1]
gosub kontrolleranivaett
y = kub14[1]
gosub kontrolleranivatva
endif
if kub15[2] = n then
x = kub15[0]
y = kub15[1]
gosub kontrolleranivaett
y = kub15[1]
gosub kontrolleranivatva
endif
if kub16[2] = n then
x = kub16[0]
y = kub16[1]
gosub kontrolleranivaett
y = kub16[1]
gosub kontrolleranivatva
endif
next n
gosub uppdatera_bak_kub
return
uppdatera_bak_kub:
for i = 0 To 7
kublager0[i] = bakkublager0[i]
kublager1[i] = bakkublager1[i]
kublager2[i] = bakkublager2[i]
kublager3[i] = bakkublager3[i]
kublager4[i] = bakkublager4[i]
kublager5[i] = bakkublager5[i]
kublager6[i] = bakkublager6[i]
NEXT i
return
definiera_kuber: ' anger startpositionerna på de små kuberna
kub1[0] = 0
kub1[1] = 0
kub1[2] = 0
kub2[0] = 6
kub2[1] = 0
kub2[2] = 0
kub3[0] = 0
kub3[1] = 6
kub3[2] = 0
kub4[0] = 6
kub4[1] = 6
kub4[2] = 0
kub5[0] = 0
kub5[1] = 3
kub5[2] = 0
kub6[0] = 0
kub6[1] = 0
kub6[2] = 5
kub7[0] = 6
kub7[1] = 0
kub7[2] = 5
kub8[0] = 0
kub8[1] = 6
kub8[2] = 5
kub9[0] = 6
kub9[1] = 6
kub9[2] = 5
kub10[0] = 6
kub10[1] = 3
kub10[2] = 0
kub11[0] = 0
kub11[1] = 3
kub11[2] = 5
kub12[0] = 6
kub12[1] = 3
kub12[2] = 5
kub13[0] = 3
kub13[1] = 0
kub13[2] = 0
kub14[0] = 3
kub14[1] = 6
kub14[2] = 0
kub15[0] = 3
kub15[1] = 0
kub15[2] = 5
kub16[0] = 3
kub16[1] = 6
kub16[2] = 5
return
kontrolleraz:
LOOKUP y,[%11000000,%01100000,%00110000,%00011000,%00001100,%00000110,%00000011],m
if z = 0 AND (kublager0[x] & m) != 0 then alert = 1
if z = 1 AND (kublager1[x] & m) != 0 then alert = 1
if z = 2 AND (kublager2[x] & m) != 0 then alert = 1
if z = 3 AND (kublager3[x] & m) != 0 then alert = 1
if z = 4 AND (kublager4[x] & m) != 0 then alert = 1
if z = 5 AND (kublager5[x] & m) != 0 then alert = 1
if z = 6 AND (kublager6[x] & m) != 0 then alert = 1
if z = 0 AND (kublager0[x+1] & m) != 0 then alert = 1
if z = 1 AND (kublager1[x+1] & m) != 0 then alert = 1
if z = 2 AND (kublager2[x+1] & m) != 0 then alert = 1
if z = 3 AND (kublager3[x+1] & m) != 0 then alert = 1
if z = 4 AND (kublager4[x+1] & m) != 0 then alert = 1
if z = 5 AND (kublager5[x+1] & m) != 0 then alert = 1
if z = 6 AND (kublager6[x+1] & m) != 0 then alert = 1
return
kontrollerax:
LOOKUP y,[%11000000,%01100000,%00110000,%00011000,%00001100,%00000110,%00000011],m
if z = 0 AND (kublager0[x] & m) != 0 then alert = 1
if z = 1 AND (kublager1[x] & m) != 0 then alert = 1
if z = 2 AND (kublager2[x] & m) != 0 then alert = 1
if z = 3 AND (kublager3[x] & m) != 0 then alert = 1
if z = 4 AND (kublager4[x] & m) != 0 then alert = 1
if z = 5 AND (kublager5[x] & m) != 0 then alert = 1
if z = 0 AND (kublager1[x] & m) != 0 then alert = 1
if z = 1 AND (kublager2[x] & m) != 0 then alert = 1
if z = 2 AND (kublager3[x] & m) != 0 then alert = 1
if z = 3 AND (kublager4[x] & m) != 0 then alert = 1
if z = 4 AND (kublager5[x] & m) != 0 then alert = 1
if z = 5 AND (kublager6[x] & m) != 0 then alert = 1
return
kontrolleray:
LOOKUP y,[%10000000,%01000000,%00100000,%00010000,%00001000,%00000100,%00000010,%00000001],m
if z = 0 AND (kublager0[x] & m) != 0 then alert = 1
if z = 1 AND (kublager1[x] & m) != 0 then alert = 1
if z = 2 AND (kublager2[x] & m) != 0 then alert = 1
if z = 3 AND (kublager3[x] & m) != 0 then alert = 1
if z = 4 AND (kublager4[x] & m) != 0 then alert = 1
if z = 5 AND (kublager5[x] & m) != 0 then alert = 1
if z = 0 AND (kublager0[x+1] & m) != 0 then alert = 1
if z = 1 AND (kublager1[x+1] & m) != 0 then alert = 1
if z = 2 AND (kublager2[x+1] & m) != 0 then alert = 1
if z = 3 AND (kublager3[x+1] & m) != 0 then alert = 1
if z = 4 AND (kublager4[x+1] & m) != 0 then alert = 1
if z = 5 AND (kublager5[x+1] & m) != 0 then alert = 1
if z = 0 AND (kublager1[x] & m) != 0 then alert = 1
if z = 1 AND (kublager2[x] & m) != 0 then alert = 1
if z = 2 AND (kublager3[x] & m) != 0 then alert = 1
if z = 3 AND (kublager4[x] & m) != 0 then alert = 1
if z = 4 AND (kublager5[x] & m) != 0 then alert = 1
if z = 5 AND (kublager6[x] & m) != 0 then alert = 1
if z = 0 AND (kublager1[x+1] & m) != 0 then alert = 1
if z = 1 AND (kublager2[x+1] & m) != 0 then alert = 1
if z = 2 AND (kublager3[x+1] & m) != 0 then alert = 1
if z = 3 AND (kublager4[x+1] & m) != 0 then alert = 1
if z = 4 AND (kublager5[x+1] & m) != 0 then alert = 1
if z = 5 AND (kublager6[x+1] & m) != 0 then alert = 1
return
slumpakuber:
gosub definiera_kuber
gosub sma_kuber
igen:
h = h+1
if h = 33 then h = 0
lookup h,[5,14,3,8,4,5,1,7,9,10,11,11,10,2,16,4,13,6,4,15,12,16,1,1,3,8,8,11,16,4,4,9,5,14,7],g
if g = 0 OR g > 17 then goto igen
gosub lasvarden
igen2:
j = j+1
if j = 19 then j = 0
lookup j,[5,4,0,1,3,3,1,2,3,5,0,1,1,0,2,4,4,5,3,2,1,0],d
if d > 5 then goto igen2
kalle:
if d = 0 then
if z != 5 then
z = z+2
gosub kontrolleraz
if alert = 1 then
alert = 0
z = z-2
goto klar
else
z = z-1
endif
else
goto klar
endif
endif
if d = 5 then
if z != 0 then
z = z-1
gosub kontrolleraz
if alert = 1 then
alert = 0
z = z+1
goto klar
endif
else
goto klar
endif
endif
if d = 3 then
if x != 6 then
x = x+2
gosub kontrollerax
if alert = 1 then
alert = 0
x = x-2
goto klar
else
x = x-1
endif
else
goto klar
endif
endif
if d = 2 then
if x != 0 then
x = x-1
gosub kontrollerax
if alert = 1 then
alert = 0
x = x+1
goto klar
endif
else
goto klar
endif
endif
if d = 4 then
if y != 6 then
y = y+2
gosub kontrolleray
if alert = 1 then
alert = 0
y = y-2
goto klar
else
y = y-1
endif
else
goto klar
endif
endif
if d = 1 then
if y != 0 then
y = y-1
gosub kontrolleray
if alert = 1 then
alert = 0
y = y+1
goto klar
endif
else
goto klar
endif
endif
gosub uppdateravarden
delay = 3
gosub pausefunktion
gosub sma_kuber
gosub lasvarden
randomvariabel = randomvariabel+1
if randomvariabel = 450 then goto fardig ' gör 700 drag innan den byter animation
goto kalle
klar:
gosub lasvarden
goto igen
fardig:
randomvariabel = 0
return
lasvarden:
if g = 1 then
x = kub1[0]
y = kub1[1]
z = kub1[2]
endif
if g = 2 then
x = kub2[0]
y = kub2[1]
z = kub2[2]
endif
if g = 3 then
x = kub3[0]
y = kub3[1]
z = kub3[2]
endif
if g = 4 then
x = kub4[0]
y = kub4[1]
z = kub4[2]
endif
if g = 5 then
x = kub5[0]
y = kub5[1]
z = kub5[2]
endif
if g = 6 then
x = kub6[0]
y = kub6[1]
z = kub6[2]
endif
if g = 7 then
x = kub7[0]
y = kub7[1]
z = kub7[2]
endif
if g = 8 then
x = kub8[0]
y = kub8[1]
z = kub8[2]
endif
if g = 9 then
x = kub9[0]
y = kub9[1]
z = kub9[2]
endif
if g = 10 then
x = kub10[0]
y = kub10[1]
z = kub10[2]
endif
if g = 11 then
x = kub11[0]
y = kub11[1]
z = kub11[2]
endif
if g = 12 then
x = kub12[0]
y = kub12[1]
z = kub12[2]
endif
if g = 13 then
x = kub13[0]
y = kub13[1]
z = kub13[2]
endif
if g = 14 then
x = kub14[0]
y = kub14[1]
z = kub14[2]
endif
if g = 15 then
x = kub15[0]
y = kub15[1]
z = kub15[2]
endif
if g = 16 then
x = kub16[0]
y = kub16[1]
z = kub16[2]
endif
return
uppdateravarden:
if g = 1 then
kub1[0] = x
kub1[1] = y
kub1[2] = z
endif
if g = 2 then
kub2[0] = x
kub2[1] = y
kub2[2] = z
endif
if g = 3 then
kub3[0] = x
kub3[1] = y
kub3[2] = z
endif
if g = 4 then
kub4[0] = x
kub4[1] = y
kub4[2] = z
endif
if g = 5 then
kub5[0] = x
kub5[1] = y
kub5[2] = z
endif
if g = 6 then
kub6[0] = x
kub6[1] = y
kub6[2] = z
endif
if g = 7 then
kub7[0] = x
kub7[1] = y
kub7[2] = z
endif
if g = 8 then
kub8[0] = x
kub8[1] = y
kub8[2] = z
endif
if g = 9 then
kub9[0] = x
kub9[1] = y
kub9[2] = z
endif
if g = 10 then
kub10[0] = x
kub10[1] = y
kub10[2] = z
endif
if g = 11 then
kub11[0] = x
kub11[1] = y
kub11[2] = z
endif
if g = 12 then
kub12[0] = x
kub12[1] = y
kub12[2] = z
endif
if g = 13 then
kub13[0] = x
kub13[1] = y
kub13[2] = z
endif
if g = 14 then
kub14[0] = x
kub14[1] = y
kub14[2] = z
endif
if g = 15 then
kub15[0] = x
kub15[1] = y
kub15[2] = z
endif
if g = 16 then
kub16[0] = x
kub16[1] = y
kub16[2] = z
endif
return
explosion_fade:
for m = 1 to 7
gosub explosion
delay = 10
if i = 1 then delay = delay+20
if i = 2 then delay = delay+10
gosub pausefunktion
next m
Return
explosion:
gosub nollstall_kub
if m = 1 then
kublager2[3] = %00011000
kublager3[3] = %00011000
kublager2[4] = %00011000
kublager3[4] = %00011000
endif
if m = 2 then
kublager1[3] = %00011000
kublager1[4] = %00011000
kublager2[3] = %00111100
kublager3[3] = %00111100
kublager2[4] = %00111100
kublager3[4] = %00111100
kublager4[3] = %00011000
kublager4[4] = %00011000
kublager2[2] = %00011000
kublager3[2] = %00011000
kublager2[5] = %00011000
kublager3[5] = %00011000
endif
if m = 3 then
kublager0[3] = %00011000
kublager0[4] = %00011000
kublager1[2] = %00011000
kublager1[3] = %00111100
kublager1[4] = %00111100
kublager1[5] = %00011000
kublager2[1] = %00011000
kublager2[2] = %00111100
kublager2[3] = %01111110
kublager2[4] = %01111110
kublager2[5] = %00111100
kublager2[6] = %00011000
kublager3[1] = %00011000
kublager3[2] = %00111100
kublager3[3] = %01111110
kublager3[4] = %01111110
kublager3[5] = %00111100
kublager3[6] = %00011000
kublager4[2] = %00011000
kublager4[3] = %00111100
kublager4[4] = %00111100
kublager4[5] = %00011000
kublager5[3] = %00011000
kublager5[4] = %00011000
endif
if m = 4 then
kublager0[2] = %00011000
kublager0[3] = %00111100
kublager0[4] = %00111100
kublager0[5] = %00011000
kublager1[1] = %00011000
kublager1[2] = %00111100
kublager1[3] = %01111110
kublager1[4] = %01111110
kublager1[5] = %00111100
kublager1[6] = %00011000
kublager2[0] = %00011000
kublager2[1] = %00111100
kublager2[2] = %01111110
kublager2[3] = %11111111
kublager2[4] = %11111111
kublager2[5] = %01111110
kublager2[6] = %00111100
kublager2[7] = %00011000
kublager3[0] = %00011000
kublager3[1] = %00111100
kublager3[2] = %01111110
kublager3[3] = %11111111
kublager3[4] = %11111111
kublager3[5] = %01111110
kublager3[6] = %00111100
kublager3[7] = %00011000
kublager4[1] = %00011000
kublager4[2] = %00111100
kublager4[3] = %01111110
kublager4[4] = %01111110
kublager4[5] = %00111100
kublager4[6] = %00011000
kublager5[2] = %00011000
kublager5[3] = %00111100
kublager5[4] = %00111100
kublager5[5] = %00011000
kublager6[3] = %00011000
kublager6[4] = %00011000
endif
if m = 5 then
kublager0[1] = %00011000
kublager0[2] = %00111100
kublager0[3] = %01111110
kublager0[4] = %01111110
kublager0[5] = %00111100
kublager0[6] = %00011000
kublager1[0] = %00011000
kublager1[1] = %00111100
kublager1[2] = %01111110
kublager1[3] = %11111111
kublager1[4] = %11111111
kublager1[5] = %01111110
kublager1[6] = %00111100
kublager1[7] = %00011000
kublager2[0] = %00111100
kublager2[1] = %01111110
kublager2[2] = %11111111
kublager2[3] = %11111111
kublager2[4] = %11111111
kublager2[5] = %11111111
kublager2[6] = %01111110
kublager2[7] = %00111100
kublager3[0] = %00111100
kublager3[1] = %01111110
kublager3[2] = %11111111
kublager3[3] = %11111111
kublager3[4] = %11111111
kublager3[5] = %11111111
kublager3[6] = %01111110
kublager3[7] = %00111100
kublager4[0] = %00011000
kublager4[1] = %00111100
kublager4[2] = %01111110
kublager4[3] = %11111111
kublager4[4] = %11111111
kublager4[5] = %01111110
kublager4[6] = %00111100
kublager4[7] = %00011000
kublager5[1] = %00011000
kublager5[2] = %00111100
kublager5[3] = %01111110
kublager5[4] = %01111110
kublager5[5] = %00111100
kublager5[6] = %00011000
kublager6[2] = %00011000
kublager6[3] = %00111100
kublager6[4] = %00111100
kublager6[5] = %00011000
endif
if m = 6 then
kublager0[0] = %00111100
kublager0[1] = %01111110
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %11111111
kublager0[5] = %11111111
kublager0[6] = %01111110
kublager0[7] = %00111100
kublager1[0] = %01111110
kublager1[1] = %11111111
kublager1[2] = %11111111
kublager1[3] = %11111111
kublager1[4] = %11111111
kublager1[5] = %11111111
kublager1[6] = %11111111
kublager1[7] = %01111110
for d = 0 to 7
kublager2[d] = %11111111
next d
for d = 0 to 7
kublager3[d] = %11111111
next d
kublager4[0] = %01111110
kublager4[1] = %11111111
kublager4[2] = %11111111
kublager4[3] = %11111111
kublager4[4] = %11111111
kublager4[5] = %11111111
kublager4[6] = %11111111
kublager4[7] = %01111110
kublager5[0] = %00111100
kublager5[1] = %01111110
kublager5[2] = %11111111
kublager5[3] = %11111111
kublager5[4] = %11111111
kublager5[5] = %11111111
kublager5[6] = %01111110
kublager5[7] = %00111100
kublager6[0] = %00111100
kublager6[1] = %01111110
kublager6[2] = %11111111
kublager6[3] = %11111111
kublager6[4] = %11111111
kublager6[5] = %11111111
kublager6[6] = %01111110
kublager6[7] = %00111100
endif
if m = 7 then
kublager0[0] = %01111110
kublager0[1] = %11111111
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %11111111
kublager0[5] = %11111111
kublager0[6] = %01111110
kublager0[7] = %00111100
for d = 0 to 7
kublager1[d] = %11111111
next d
for d = 0 to 7
kublager2[d] = %11111111
next d
for d = 0 to 7
kublager3[d] = %11111111
next d
for d = 0 to 7
kublager4[d] = %11111111
next d
for d = 0 to 7
kublager5[d] = %11111111
next d
kublager6[0] = %01111110
kublager6[1] = %11111111
kublager6[2] = %11111111
kublager6[3] = %11111111
kublager6[4] = %11111111
kublager6[5] = %11111111
kublager6[6] = %11111111
kublager6[7] = %01111110
endif
if m = 7 then gosub ettstall_kub
return
stapelbar:
gosub nollstall_kub
if m = 1 then
kublager0[0] = %11011111
kublager0[1] = %10110111
kublager0[2] = %11111101
kublager0[3] = %11111111
kublager0[4] = %10111111
kublager0[5] = %11111111
kublager0[6] = %11111011
kublager0[7] = %11111111
kublager1[0] = %10000010
kublager1[1] = %00010001
kublager1[5] = %00000000
kublager1[7] = %10010001
endif
if m = 2 then
kublager0[0] = %11011111
kublager0[1] = %11110111
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %11111111
kublager0[5] = %11111111
kublager0[6] = %11111011
kublager0[7] = %11111111
kublager1[0] = %11011011
kublager1[1] = %10110111
kublager1[2] = %11110110
kublager1[3] = %01001011
kublager1[4] = %11111111
kublager1[5] = %00011110
kublager1[6] = %11011011
kublager1[7] = %11001111
kublager2[1] = %00001000
kublager2[3] = %01001001
kublager2[4] = %01000000
kublager2[5] = %00010000
endif
if m = 3 then
kublager0[0] = %11111111
kublager0[1] = %11110111
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %11111111
kublager0[5] = %11111111
kublager0[6] = %11111011
kublager0[7] = %11111111
kublager1[0] = %11111111
kublager1[1] = %11110111
kublager1[2] = %11110111
kublager1[3] = %11001011
kublager1[4] = %11111111
kublager1[5] = %11011110
kublager1[6] = %11111011
kublager1[7] = %11101111
kublager2[0] = %11001101
kublager2[1] = %01010110
kublager2[2] = %01110110
kublager2[3] = %11001010
kublager2[4] = %11110111
kublager2[5] = %01011110
kublager2[6] = %01111011
kublager2[7] = %01101110
kublager3[1] = %00010000
kublager3[2] = %00100100
kublager3[3] = %00001000
kublager3[4] = %00010100
kublager3[5] = %01010000
kublager4[3] = %00001000
endif
if m = 4 then
kublager0[0] = %11111111
kublager0[1] = %11111111
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %11111111
kublager0[5] = %11111111
kublager0[6] = %11111111
kublager0[7] = %11111111
kublager1[0] = %11111111
kublager1[1] = %10111111
kublager1[2] = %11111111
kublager1[3] = %11101110
kublager1[4] = %11111111
kublager1[5] = %11111011
kublager1[6] = %01111111
kublager1[7] = %11111011
kublager2[0] = %11110111
kublager2[1] = %00110010
kublager2[2] = %11111110
kublager2[3] = %00101110
kublager2[4] = %11111111
kublager2[5] = %10111011
kublager2[6] = %01111101
kublager2[7] = %11001011
kublager3[0] = %00110010
kublager3[1] = %00110010
kublager3[2] = %01010010
kublager3[3] = %00101000
kublager3[4] = %10100111
kublager3[5] = %00100010
kublager3[6] = %01010101
kublager3[7] = %10001011
kublager4[1] = %00100010
kublager4[2] = %01010000
kublager4[3] = %00001000
kublager4[4] = %00000100
kublager4[5] = %00000000
kublager5[3] = %00001000
endif
if m = 5 then
kublager0[0] = %11111111
kublager0[1] = %11111111
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %11111111
kublager0[5] = %11111111
kublager0[6] = %11111111
kublager0[7] = %11111111
kublager1[0] = %11110111
kublager1[1] = %01111111
kublager1[2] = %11111110
kublager1[3] = %01111111
kublager1[4] = %11011110
kublager1[5] = %11111011
kublager1[6] = %11111110
kublager1[7] = %11011011
kublager2[0] = %11110111
kublager2[1] = %01110110
kublager2[2] = %11111110
kublager2[3] = %01111100
kublager2[4] = %11011110
kublager2[5] = %11011011
kublager2[6] = %11110010
kublager2[7] = %01011011
kublager3[0] = %01010101
kublager3[1] = %01100110
kublager3[2] = %10101110
kublager3[3] = %01111100
kublager3[4] = %11011000
kublager3[5] = %11011001
kublager3[6] = %10110010
kublager3[7] = %01011001
kublager4[0] = %00000001
kublager4[1] = %00000100
kublager4[2] = %10100010
kublager4[3] = %01010000
kublager4[4] = %10011000
kublager4[5] = %10010001
kublager4[6] = %00110000
kublager4[7] = %01010001
kublager5[3] = %01000000
kublager5[4] = %00001000
endif
if m = 6 then
kublager0[0] = %11110111
kublager0[1] = %11111111
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %01111110
kublager0[5] = %11111111
kublager0[6] = %11111111
kublager0[7] = %11110111
kublager1[0] = %11110111
kublager1[1] = %11000111
kublager1[2] = %11101110
kublager1[3] = %10111111
kublager1[4] = %01111110
kublager1[5] = %11110100
kublager1[6] = %11101110
kublager1[7] = %11110111
kublager2[0] = %10110101
kublager2[1] = %11000111
kublager2[2] = %01101110
kublager2[3] = %10110111
kublager2[4] = %01110110
kublager2[5] = %11110100
kublager2[6] = %10101110
kublager2[7] = %11110101
kublager3[0] = %10110101
kublager3[1] = %11000111
kublager3[2] = %01001110
kublager3[3] = %10110101
kublager3[4] = %01010010
kublager3[5] = %11010100
kublager3[6] = %10101110
kublager3[7] = %11010101
kublager4[0] = %10010101
kublager4[1] = %11000111
kublager4[2] = %01001010
kublager4[3] = %10110100
kublager4[4] = %01010010
kublager4[5] = %01010100
kublager4[6] = %10101010
kublager4[7] = %11010101
kublager5[0] = %00000101
kublager5[1] = %10000000
kublager5[2] = %01001000
kublager5[3] = %10000100
kublager5[4] = %00010010
kublager5[6] = %10001010
kublager5[7] = %10000101
kublager6[2] = %00001000
kublager6[3] = %10000000
endif
if m = 7 then
kublager0[0] = %11110111
kublager0[1] = %11111111
kublager0[2] = %11111111
kublager0[3] = %11111111
kublager0[4] = %01111110
kublager0[5] = %11111111
kublager0[6] = %11111111
kublager0[7] = %11110111
kublager1[0] = %11110111
kublager1[1] = %11111110
kublager1[2] = %11101111
kublager1[3] = %11111111
kublager1[4] = %01111110
kublager1[5] = %11110111
kublager1[6] = %10111111
kublager1[7] = %11110111
kublager2[0] = %11010111
kublager2[1] = %11111110
kublager2[2] = %11101111
kublager2[3] = %10110110
kublager2[4] = %01111110
kublager2[5] = %11110111
kublager2[6] = %10111011
kublager2[7] = %11110111
kublager3[0] = %11010110
kublager3[1] = %11111100
kublager3[2] = %11101111
kublager3[3] = %10110110
kublager3[4] = %01111110
kublager3[5] = %11010111
kublager3[6] = %10111011
kublager3[7] = %11110111
kublager4[0] = %11010110
kublager4[1] = %10111000
kublager4[2] = %11101111
kublager4[3] = %10110110
kublager4[4] = %01011010
kublager4[5] = %11010111
kublager4[6] = %10101010
kublager4[7] = %11110111
kublager5[0] = %11010100
kublager5[1] = %10111000
kublager5[2] = %10101011
kublager5[3] = %10110110
kublager5[4] = %01011010
kublager5[5] = %11010111
kublager5[6] = %10101010
kublager5[7] = %10110111
kublager6[0] = %10000100
kublager6[1] = %10101000
kublager6[2] = %00101001
kublager6[3] = %10100100
kublager6[4] = %01011010
kublager6[5] = %10010111
kublager6[6] = %00101010
kublager6[7] = %00100101
endif
return
av_till_pa:
for m = 0 to 80
gosub nollstall_kub
for d = 0 to (80-m)
pauseus 1
fordrojinterrupt = 30
next d
gosub ettstall_kub
for d = 0 to m
pauseus 1
fordrojinterrupt = 30
next d
next m
gosub ettstall_kub
return
pa_till_av:
for m = 80 to 0 step -1
gosub ettstall_kub
for d = 0 to m
pauseus 1
fordrojinterrupt = 30
next d
gosub nollstall_kub
for d = 0 to (80-m)
pauseus 1
fordrojinterrupt = 30
next d
next m
gosub nollstall_kub
returN
upp_till_ner:
for i = 0 to 7
kublager6[i] = 255
next i
delay = 10
gosub pausefunktion
for i = 0 to 7
kublager6[i] = 0
kublager5[i] = 255
next i
delay = 10
gosub pausefunktion
for i = 0 to 7
kublager5[i] = 0
kublager4[i] = 255
next i
delay = 10
gosub pausefunktion
for i = 0 to 7
kublager4[i] = 0
kublager3[i] = 255
next i
delay = 10
gosub pausefunktion
for i = 0 to 7
kublager3[i] = 0
kublager2[i] = 255
next i
delay = 10
gosub pausefunktion
for i = 0 to 7
kublager2[i] = 0
kublager1[i] = 255
next i
delay = 10
gosub pausefunktion
for i = 0 to 7
kublager1[i] = 0
kublager0[i] = 255
next i
delay = 10
gosub pausefunktion
for i = 0 to 7
kublager0[i] = 0
next i
return
loop:
if mode = 0 then ' 0 = normalt läge, 1 = musikläge
gosub slumpakuber
gosub upp_till_ner
gosub explosion_fade
gosub pa_till_av
delay = 60
gosub pausefunktion
gosub gardin
gosub av_till_pa
gosub fyrkantifyrkant
delay = 40
gosub pausefunktion
gosub gardin
gosub av_till_pa
delay = 40
gosub pausefunktion
gosub pa_till_av
gosub markera_kanter
delay = 40
gosub pausefunktion
gosub vanster_till_hoger_swipe
gosub hoger_till_vanster_swipe
gosub vagmonster
gosub explosion_fade
gosub pa_till_av
gosub hoger_till_vanster_swipe
gosub vanster_till_hoger_swipe
gosub fyrkantsvag
gosub explosion_fade
gosub pa_till_av
gosub vanster_till_hoger_swipe
gosub hoger_till_vanster_swipe
gosub gardin
else
lageraknare = lageraknare+1
if lageraknare = 1000 AND lage = 2 then
lageraknare = 0
lage = 0
endif
if lageraknare = 55000 AND lage != 2 then
lageraknare = 0
lage = lage+1
endif
adcin 0, volym
m = volym/35 ' volym = 0-7
if lage = 0 then ' bargraph under utveckling
if foregaendevolym = m then
goto loop
else
foregaendevolym = m
endif
if m = 0 then
gosub nollstall_kub
else
gosub stapelbar
endif
endif
if lage = 1 then
if foregaendevolym = m then
goto loop
else
foregaendevolym = m
endif
if m = 0 then
gosub nollstall_kub
else
gosub explosion
endif
endif
if lage = 2 then
j=j+1
gosub nollstall_kub
delay = 20-(volym/15)
m = j
gosub vagmonster_andra
gosub pausefunktion
if j >= 11 then j = 0
endif
endif
goto loop
finns Eagle schema och pcb (har blivit några ändringar i schemat i efterhand därav några inverterade ledningar)