Official Lurker
Posts: 1,050
Karma: 7096675
Join Date: Apr 2012
Device: Kindle 3.4
Not the same program as above but
this one has source!
(now I just need to figure out how to open the programs in a text editor...)
Spoiler :
[cSmith@coltrane calc]$ cat instructions\ to\ developers.txt
Thank you for downloading the alpha version of Betafreak
Minecraft. I would ask that you please do whatever you can
to help with the development of the project.
prgmMINESRC and prgmMINESRCD are the source programs. The
former contains the game code, the latter contains the
game's metadata, including sprites and tile properties.
There are two main issues that I want to resolve:
1. Optimization, PLEASE!
- Currently, I have approximately 2300 bytes left in the
app. I would like to optimize so that I can go longer without
running out of room (especially since Axe does not support
2 page Apps).
- Two numbers at the top left corner of the screen indicate the
number of 270 Hz interrupt ticks spent in updating and drawing,
respectively. In other words, these numbers divided by 270 will
give the amount of time spent in those areas.
- When optimizing, keep in mind that I want to add
these features in the future:
- Animated Sprites: Sprites have 2 or 4 frames that they
cycle through in a particular state of action (e.g. standing,
walking, climbing)
- Trees: Trees generate procedurally, creating a trunk
of Wood blocks surrounded by several Leaf blocks. Trees drop
saplings, which randomly decide to generate into Trees.
- Items: Some items (such as Pickaxes) are not placeable,
but instead have some other use. Non-stackable and non-placeable
items will use the amount byte for a health bar. A LUT will
determine what amount to fill that bar with, and there is a
chance (also determined by LUT) that the item will lose 1 HP.
- Crafting Menu: You can press STAT to bring up the Crafting
Menu and craft recipes that take up to 4 items. The crafting view
shows all the recipes in categories, indexed by item. Recipes are
defined by different amounts of up to 4 different items. The
interface would allow you to select an item to craft and automatically
take those items from your inventory and add crafted items to empty
space.
- Crafting Tables, Furnaces, etc.: Bring up special
inventory menus when used. The Crafting Table menu would remove the
limit of 4 individual items, showing all possible recipes.
- Monsters: Stored in a seperate page file (Appvar) as
a list, containing variables such as type, position, velocity,
health, and behavior state.
- Lava (the other fluid type)
- A few other things (but those above are major features)
2. App issues
- App Issues have been solved with a workaround that I wanted
to use anyway. But still, please report to Omnimaga's Axe thread
that a newline that causes the text screen to scroll causes a
crash in an Application after graphics have been drawn.
3. Deviation from the actual Minecraft
- I have concluded that with the addition of the climbing ability,
this game can no longer be truly classified as a Minecraft game. I
am okay with this, especially since this project is early in
development and can still go in lots of directions. Not to mention
that Notch has a ticalc.org account and has announced that he plans
to write the official Minecraft for calc. :|
- So, that means that I need a new name for this game. Please post
your suggestions to me on the forum or PM them if you feel so
inclined.
- Additionally, this means that we no longer have to hold ourselves
to the original Minecraft, which means that we get to come up with
our own resources, mobs, game conventions, and anything else we can
think up! Please feel free to submit original ideas for the game,
especially when spriting!
4. Spriting
- If there's anything I need, it's sprites! Sprites, sprites, and
more sprites! That's why I'm letting you come up with them!
- Here are the guidelines: Please post your sprite on a forum
post along with a description of what it is, and then provide
a HEX code that I can input into Axe. If you don't know the protocol
for that, please upload your sprite in an inflated format so I can
read it easier.
- Thank you to willrandship for his player sprites! Keep 'em coming!
Happy testing, and happy Minecrafting!
MINESRC.8XP (
http://www.cemetech.net/projects/bas...urcecoder2.php helped!)
Spoiler :
Code:
:.MINECRFT*MINECRAFT
:!If Full
:ClrHome
:Disp "YOU*NEED*AN*84+",i
:Repeat getKey
:End
:Return
:End
:
:Lbl VARS
:real(L[size=8]1[/size])
:L[size=8]1[/size]+54→°SY
:L[size=8]1[/size]+56→°DY
:L[size=8]1[/size]+58→°PX
:L[size=8]1[/size]+60→°CX
:L[size=8]1[/size]+62→°CY
:L[size=8]1[/size]+64→°MTX
:L[size=8]1[/size]+66→°MTY
:L[size=8]1[/size]+68→°LMTX
:L[size=8]1[/size]+70→°LMTY
:L[size=8]1[/size]+72→°PTX
:L[size=8]1[/size]+74→°PTY
:L[size=8]1[/size]+76→°BRKT
:L[size=8]1[/size]+78→°CHUNX
:L[size=8]1[/size]+80→°TINT
:L[size=8]1[/size]+82→°TPREV
:L[size=8]1[/size]+84→°CITEM
:L[size=8]1[/size]+86→°INVX
:L[size=8]1[/size]+88→°INVY
:L[size=8]1[/size]+90→°INVIT
:L[size=8]1[/size]+128→GDB4INV
:L[size=8]1[/size]+256→Str4NAME
:Str4NAME+6→GDB4PTRS
:GDB4PTRS+6→°SAVE
:°SAVE+2→GDB4KYBF
:GDB4KYBF+56→GDB4TEMP
:Lbl CONST
:.FILE*INFO
:6→GDB0VERS
:256→GDB0SIZE
:.INVENTORY*SIZES
:29→GDB9INVS
:.CHUNK*DIMS
:32→GDB9CWDT
:50→GDB9CHGT
:.Y*MOVEMENT
:16→GDB9YINF
:.INFLATED*TILE*HT
:GDB9YINF*8→GDB9TLHT
:.TERM*VEL
:GDB9TLHT*8→GDB9TRMV
:
:.DATA
:prgmMINESRCD
:
:Lbl SETUP
:Fix 5
:ClrDraw
:Text(30,0,"MINECRAFT"
:Text(28,20,"LOADING..."
:DispGraph
:UnArchiveStr0SAVE
:GetCalc(Str0SAVE)→SAVE
:If SAVE?{SAVE}^r^≠GDB0VERS
:Text(22,28,"VERSION*ERROR:"
:Text(26,32,"GAME:",GDB0VERS►Dec
:Text(26,40,"FILE:",{SAVE}^r^►Dec
:Text(8,48,"PRESS*ENTER*TO*DELETE,"
:Text(8,56,"ALL*ELSE*TO*QUIT"
:DispGraph
:Repeat getKey→K
:End
:!If K-9
:→SAVE
:Else
:.CLEAR*LOWER*PORTION
:Fill(16*12+L[size=8]6[/size],48*12,0
:Text(0,20,"PLEASE*INSTALL*VERSION",{SAVE}^r^►Dec,
:Text(0,28,"QUITTING..."
:DispGraph
:Pause 2000
:Return
:End
:End
:!If SAVE
:Fill(12*16+L[size=8]6[/size],48*12,0
:Text(20,20,"DELETING*CHUNKS"
:ref(16,28,64,8
:rref(17,29,62,6
:DispGraph
:For(I,0,255
:¦*GNSTR(I,Str4NAME
:¦*DelVar Str4NAME
:¦*!If I^4
:¦*ref(I/4+16,28,1,8
:¦*DispGraph
:End
:End
:Fill(12*16+L[size=8]6[/size],48*12,0
:Text(24,20,"CREATING*FILE"
:DispGraph
:GetCalc(Str0SAVE,GDB0SIZE+2)→SAVE
:GDB0VERS→{SAVE}^r^
:Fill(L[size=8]1[/size],GDB0SIZE,0
:.SETS*CORRECT*CHUNKS*FOR*POS.
:32768→X/8/GDB9CWDT→CHUNX
:Else
:conj(SAVE+2,L[size=8]1[/size],GDB0SIZE)
:End
:Text(22,20,"LOADING*CHUNKS"
:DispGraph
:LDCHS()
:Text(16,20,"STARTING*THE*GAME"
:DispGraph
:0→P
:FnInt(TICK,6
:
:Lbl GAME
:ClrDraw
:Repeat P≥256
:¦*Normal
:¦*.READ*ALL*KEYS
:¦*For(I,1,56
:¦*¦*getKey(I)?{I+GDB4KYBF}+1,0
:¦*¦*→{I+GDB4KYBF}
:¦*End
:¦*Full
:¦*.TIMEKEEPING
:¦*T-TPREV→TINT
:¦*T→TPREV
:¦*.CHECK*MENU*MODE
:¦*!If P-2
:¦*.INVENTORY
:¦*Lbl INVUP
:¦*!If INVIT??{15+GDB4KYBF}-1?{55+GDB4KYBF}-1
:¦*→P
:End
:For(I,0,4)
:¦*4-I→C
:¦*!If {C+49+GDB4KYBF}-1
:¦*expr(I*2+GDB4INV,°INVIT,2)
:End
:End
:!If {1+GDB4KYBF}-1
:INVY<2?INVY++
:End
:!If {2+GDB4KYBF}-1
:INVX≥1?INVX--
:End
:!If {3+GDB4KYBF}-1
:INVX<7?INVX++
:End
:!If {4+GDB4KYBF}-1
:INVY≥1?INVY--
:End
:INVY*8+(INVX^8)*2+10+GDB4INV→C
:!If {54+GDB4KYBF}-1
:If {C+1}-{°INVIT+1}
:expr(C,°INVIT,2)
:Else
:{C}+{°INVIT}→A
:If A≥64
:64→{C}
:A-64→{°INVIT}
:Else
:A→{C}
:0→INVIT
:End
:End
:End
:!If {48+GDB4KYBF}-1
:!If {°INVIT}
:{C+1}→{°INVIT+1}
:{C}^2→A
:{C}/2→B→{C}
:B+A→{°INVIT}
:Else!If {C+1}
:{°INVIT+1}→{C+1}
:1→{C}
:{°INVIT}--??→{°INVIT+1}
:Else!If {°INVIT+1}-{C+1}??{C}≥64
:{°INVIT}--
:{C}++
:!If {°INVIT}
:→{°INVIT+1}
:End
:End
:End
:Lbl INVDR
:ClrDraw^r^^r^
:For(I,5,GDB9INVS
:¦*I-5→B
:¦*If {I*2+1+GDB4INV}→A
:¦*Pt-On(B^8*12,B/8*12,A-1*8+Pic1
:¦*Text(B^8*12+4,B/8*12+3,{I*2+GDB4INV}►Dec
:End
:End
:If {°INVIT+1}→A?{°INVIT}→B
:Pt-On(INVX*12-2,INVY*12-2,A-1*8+Pic1
:Text(INVX*12+2,INVY*12+1,B►Dec
:Else
:rref(INVX*12,INVY*12,12,12
:End
:Text(0,48,"[CLEAR]*TO*RESUME"
:Else
:.GAME
:If abs(CHUNX*GDB9CWDT+(GDB9CWDT/2)*8-X)>(GDB9CWDT*8)
:.WELL*INTO*NEXT,*RELOAD*CHUNKS
:X/8/GDB9CWDT→CHUNX
:LDCHS()
:End
:Y/GDB9YINF→SY
:Lbl INPUT
:{15+GDB4KYBF}-1??‾1→P
:!If {55+GDB4KYBF}-1
:2→P
:End
:.Z*IS*CLIMB*MODE
:!If Z
:.LEFT/RIGHT
:If {2+GDB4KYBF}
:PX-(TINT*16)→PX
:End
:If {3+GDB4KYBF}
:PX+(TINT*16)→PX
:End
:While PX≥≥256
:¦*If {RDTL(X+8/8,SY/8)+GDB1COL}e 7*??*{RDTL(X+8/8,SY+8/8)+GDB1COL}e 7*??*{RDTL(X+8/8,SY+15/8)+GDB1COL}e 7
:¦*255→PX
:¦*2→Z
:¦*Else
:¦*X++
:¦*PX-256→PX
:End
:End
:While PX<<0
:¦*If {RDTL(X-1/8,SY/8)+GDB1COL}e 7*??*{RDTL(X-1/8,SY+8/8)+GDB1COL}e 7*??*{RDTL(X-1/8,SY+15/8)+GDB1COL}e 7
:¦*0→PX
:¦*1→Z
:¦*Else
:¦*X--
:¦*PX+256→PX
:End
:End
:.JUMP
:If {4+GDB4KYBF}
:If INFLD()
:DY-(TINT*GDB9TLHT/8)→DY
:‾(GDB9TLHT*4)→A
:If DY<<A
:A→DY
:End
:ElseIf ONFLR()
:!If DY
:‾(GDB9TLHT*4)→DY
:End
:End
:End
:Else
:.CLIMBING
:.4-1=3,4-2=2
:{4-Z+GDB4KYBF}?0→Z
:If {4+GDB4KYBF}
:‾TINT+Y→Y
:End
:If {1+GDB4KYBF}
:TINT+Y→Y
:ONFLR()?0→Z
:End
:End
:.AIMING
:Lbl INAIM
:TINT*45/256→A
:{20+GDB4KYBF}?MVANG(°θ,224,A)
:{19+GDB4KYBF}?MVANG(°θ,0,A)
:{18+GDB4KYBF}?MVANG(°θ,32,A)
:{28+GDB4KYBF}?MVANG(°θ,192,A)
:{26+GDB4KYBF}?MVANG(°θ,64,A)
:{36+GDB4KYBF}?MVANG(°θ,160,A)
:{35+GDB4KYBF}?MVANG(°θ,128,A)
:{34+GDB4KYBF}?MVANG(°θ,96,A)
:Lbl INBLK
:.SELECT*ITEM
:{53+GDB4KYBF}?0→CITEM
:{52+GDB4KYBF}?1→CITEM
:{51+GDB4KYBF}?2→CITEM
:{50+GDB4KYBF}?3→CITEM
:{49+GDB4KYBF}?4→CITEM
:.BREAK*BLOCK
:If {54+GDB4KYBF}?{RDTL(MTX,MTY)→A+GDB1COL}e 7
:{A+GDB1BRKT}*TINT/64+BRKT→BRKT
:If BRKT≥256
:ADDIT(GDB4INV,GDB9INVS,{A+GDB1DROP}*256+1)
:WRTL(MTX,MTY,0)
:0→BRKT
:End
:Else
:→BRKT
:End
:.PLACE*BLOCK
:If {48+GDB4KYBF}
:If {RDTL(MTX,MTY)+GDB1COL}e 7
:!If abs(PTX*8-X)<8?abs(PTY*8-SY)<16
:WRTL(PTX,PTY,{CITEM*2+1+GDB4INV})
:{CITEM*2+GDB4INV}--
:!If {CITEM*2+GDB4INV}
:0→{CITEM*2+1+GDB4INV}
:End
:End
:End
:End
:Lbl UPDAT
:If DY≥≥0
:DY*TINT/256+Y→Y
:Else
:Y-(‾DY*TINT/256)→Y
:End
:!If Z
:TINT*GDB9TLHT/26+DY→DY
:Else
:.CHECK*IF*CLIMBING*STILL*VALID
:Z*2-3*2→A
:!If {RDTL(Z=2*7+X+A/8,SY+4/8)+GDB1COL}e 7
:→Z
:.JUMP*IF*UP*IS*PRESSED
:{4+GDB4KYBF}?‾(GDB9TLHT*4)→DY
:Else
:DY//2→DY
:End
:End
:Y/GDB9YINF→SY
:INFLD()?GDB9TRMV/2,GDB9TRMV
:→A
:If DY≥≥A
:A→DY
:End
:If DY>>0
:If ONFLR()
:0→DY
:Y/GDB9TLHT*GDB9TLHT→Y
:End
:Else
:If {RDTL(X/8,SY/8)+GDB1COL}e 7*??*{RDTL(X+7/8,SY/8)+GDB1COL}e 7
:0→DY→Z
:Y/GDB9TLHT+1*GDB9TLHT→Y
:End
:End
:Y/GDB9YINF→SY
:Lbl UPDCR
:MTX→LMTX:MTY→LMTY
:X→CX→A:SY→CY→B
:For(I,0,40
:¦*CX→A:CY→B
:¦*cos(θ)*I//128+X+4→CX
:¦*sin(θ)*I//128+SY+4→CY
:EndIf {RDTL(CX/8,CY/8)+GDB1COL}e 7
:CX/8→MTX
:CY/8→MTY
:A/8→PTX
:B/8→PTY
:If MTX-LMTX??MTY-LMTY
:0→BRKT
:End
:Lbl UPDTI
:For(J,(SY/8<8?0,SY/8-8),(SY/8≥(GDB9CHGT-8)?GDB9CHGT-1,SY/8+8))
:¦*For(I,X/8-12,X/8+12)
:¦*¦*If RDTUF(I,J)
:¦*¦*If RDTL(I,J)→A?{A+GDB1COL}e 0
:¦*¦*Lbl FLD
:¦*¦*RDTLS(I,J)→B→F
:¦*¦*!If RDTL(I,J-1)-A
:¦*¦*1→B
:¦*¦*ElseIf B
:¦*¦*(RDTL(I-1,J)-A??RDTLS(I-1,J),8)→C
:¦*¦*If (RDTL(I+1,J)-A??RDTLS(I+1,J),8)→D<C
:¦*¦*D→C
:¦*End
:¦*C++
:¦*If B<C
:¦*B++
:¦*ElseIf B>C
:¦*B--
:End
:End
:If B<7
:.?{RDTL(I,J+1)+GDB1COL}→Ce 7??Ce 0?RDTLS(I,J+1)=0
:0→D→E
:For(C,1,5
:¦*!If D
:¦**!If {RDTL(I-C,J)+GDB1COL}e 7
:¦***!If {RDTL(I-C,J+1)+GDB1COL}e 7
:¦****C→D
:¦***End
:*Else
:**6→D
:*End
:End
:!If E
:*!If {RDTL(I+C,J)+GDB1COL}e 7
:**!If {RDTL(I+C,J+1)+GDB1COL}e 7
:***C→E
:**End
:*Else
:**6→E
:*End
:End
:End
:!If D
:6→D
:End
:!If E
:6→E
:End
:If E≥D?RDTL(I-1,J)=0
:WRTL(I-1,J,A)
:WRTLS(I-1,J,B+1)
:ElseIf D≥E?RDTL(I+1,J)=0
:WRTL(I+1,J,A)
:WRTLS(I+1,J,B+1)
:End
:End
:!If (RDTL(I-1,J)-A??RDTLS(I-1,J))?(RDTL(I+1,J)-A??RDTLS(I+1,J))
:→B
:End
:!If B-F
:.STILL*WATER*WONT*UPDATE
:WRTUF(I,J,0)
:Else
:If B≥8
:WRTL(I,J,0)
:WRTLS(I,J,0)
:Else
:WRTLS(I,J,B)
:End
:End
:Else!If A
:If {RDTL(I,J-1)→B+GDB1COL}e 0
:WRTL(I,J,B)
:WRTLS(I,J,1)
:Else
:WRTUF(I,J,0)
:End
:Else
:WRTUF(I,J,0)
:End
:End
:End
:End
:T-TPREV→N
:
:Lbl DRAW
:.DRAW*FOR*GREY
:DispGraphClrDraw^r^
:CAM()
:Lbl DRWTI
:For(I,U/8,U/8+12
:¦*For(J,V/8,V/8+7
:¦*¦*I*8-U→A:J*8-V→B
:¦*¦*If RDTL(I,J)→C
:¦*¦*If {C+GDB1COL}e 0
:¦*¦*RDTLS(I,J)→E
:¦*¦*If RDTL(I,J-1)-C
:¦*¦*ref(A,E+B,8,1
:¦*End
:¦*!If RDTL(I-1,J)
:¦*Line(A,E+B,A,B+7)
:End
:!If RDTL(I+1,J)
:Line(A+7,E+B,A+7,B+7)
:End
:Else
:*Pt-Off(A,B,C-1*8+Pic1
:.GROUP*BORDERS
:If RDTL(I+1,J)-C
:ref(A+7,B,1,8
:End
:If RDTL(I-1,J)-C
:ref(A,B,1,8
:End
:If RDTL(I,J+1)-C
:ref(A,B+7,8,1
:End
:If RDTL(I,J-1)-C
:ref(A,B,8,1
:End
:End
:End
:End
:End
:Lbl DRWPL
:PTMSK(X-U,SY-V,Z≠0*16+Pic3HD,Z=2
:PTMSK(X-U,SY-V+8,Z≠0*16+Pic3BD,Z=2
:Lbl DRWCR
:If {RDTL(MTX,MTY)+GDB1COL}e 7
:Pt-Change(MTX*8-U,MTY*8-V,Pic2LIT)^r^
:If BRKT
:Pt-On(MTX*8-U,MTY*8-V,BRKT*6/256*8+Pic2BRK)
:End
:End
:cos(θ)→A:sin(θ)→B
:.Line(A//16+X-U+4,B//16+SY-V+4,A//8+X-U+4,B//8+SY-V+4)^r^
:Line(CX-1-U,CY-V,CX+1-U,CY-V)
:Line(CX-U,CY-1-V,CX-U,CY+1-V)
:.END*MENU(ALWAYS*DRAW*HUD)
:End
:Lbl DRWHD
:Fill(55*12+L[size=8]6[/size],9*12,0
:Fill(55*12+L[size=8]3[/size],9*12,0
:(P??CITEM,6)→D
:For(I,0,4
:¦*I*12+(D<I*4)+16→B
:¦*!If I-D
:¦*1→C
:¦*ref(B-1,55,18,9
:¦*Else
:¦*0→C
:End
:If {I*2+GDB4INV+1}→A
:Pt-Off(B,56,A-1*8+Pic1
:Text(C*4+B+2,58,{I*2+GDB4INV}►Dec
:End
:End
:!If P
:Text(0,0,N►Dec,T-N-TPREV►Dec
:End
:DispGraph^r^
:End
:Lbl SHUT
:LnReg
:ClrDraw
:Text(30,0,"MINECRAFT"
:Text(24,20,"SAVING*CHUNKS"
:ref(16,28,64,8
:rref(17,29,62,6
:DispGraph
:For(I,0,255
:¦*GNSTR(I,Str4NAME
:¦*ArchiveStr4NAME
:¦*!If I^4
:¦*ref(I/4+16,28,1,8
:¦*DispGraph
:End
:End
:Fill(16*12+L[size=8]6[/size],48*12,0
:Text(28,20,"ARCING*FILE"
:DispGraph
:conj(L[size=8]1[/size],SAVE+2,256)
:ArchiveStr0SAVE
:Pause 2000
:Fix 4
:Return
:
:Lbl CAM
:cos(θ)*16//128+X-44→U
:sin(θ)*16//128+SY-24→V
:V>>0*V→V
:.min(V,GDB9CHGT-7*8)→V
:Return
:
:.OUT*OF*BOUNDS
:Lbl OTBND
:abs(r[size=8]1[/size]/GDB9CWDT-CHUNX)≥2??r[size=8]2[/size]<<0??r[size=8]2[/size]≥≥GDB9CHGT
:Return
:
:Lbl RDTL
:ReturnIf OTBND()
:{TIIDX()}
:Return
:
:Lbl WRTL
:ReturnIf OTBND()
:r[size=8]3[/size]→{TIIDX()}
:UPADJ()
:Return
:
:Lbl TIIDX
:r[size=8]2[/size]*GDB9CWDT+(r[size=8]1[/size]^GDB9CWDT)+{r[size=8]1[/size]/GDB9CWDT-CHUNX+1^256*2+GDB4PTRS}^r^
:Return
:
:Lbl RDTLS
:If OTBND()
:0:Return
:End
:iPart(TSIDX()}^8
:Return
:
:Lbl WRTLS
:ReturnIf OTBND()
:r[size=8]3[/size]^8→iPart(TSIDX()}
:UPADJ()
:Return
:
:Lbl RDTUF
:ReturnIf OTBND()
:iPart(TSIDX()}/8
:Return
:
:Lbl WRTUF
:ReturnIf OTBND()
:r[size=8]3[/size]^2*8+(iPart(TSIDX()→r[size=8]4[/size]}^8)→iPart(r[size=8]4[/size]}
:Return
:
:.WRITE*UPDATES*TO*ADJACENT*TILES
:Lbl UPADJ
:Return!If P-3
:sub(WRTUF^r^,r[size=8]1[/size],r[size=8]2[/size],1)
:sub(WRTUF^r^,r[size=8]1[/size]+1,r[size=8]2[/size],1)
:sub(WRTUF^r^,r[size=8]1[/size]-1,r[size=8]2[/size],1)
:sub(WRTUF^r^,r[size=8]1[/size],r[size=8]2[/size]+1,1)
:sub(WRTUF^r^,r[size=8]1[/size],r[size=8]2[/size]-1,1)
:Return
:
:Lbl TSIDX
:r[size=8]2[/size]*GDB9CWDT+(r[size=8]1[/size]^GDB9CWDT)+({r[size=8]1[/size]/GDB9CWDT-CHUNX+1^256*2+GDB4PTRS}^r^+(GDB9CWDT*GDB9CHGT)*2)
:Return
:
:Lbl ONFLR
:{RDTL(X+1/8,SY+16/8)+GDB1COL}e 7*??*{RDTL(X+6/8,SY+16/8)+GDB1COL}e 7
:Return
:
:Lbl INFLD
:{RDTL(X/8,SY/8)+GDB1COL}e 0*??*{RDTL(X/8,SY+8/8)+GDB1COL}e 0*??*{RDTL(X/8,SY+15/8)+GDB1COL}e 0*??*{RDTL(X/8+1,SY/8)+GDB1COL}e 0*??*{RDTL(X/8+1,SY+8/8)+GDB1COL}e 0*??*{RDTL(X/8+1,SY+15/8)+GDB1COL}e 0
:Return
:
:Lbl MVNUM
:If abs({r[size=8]1[/size]}^r^-r[size=8]2[/size])<r[size=8]3[/size]
:r[size=8]2[/size]→{r[size=8]1[/size]}^r^
:ElseIf {r[size=8]1[/size]}^r^<<r[size=8]2[/size]
:{r[size=8]1[/size]}^r^+r[size=8]3[/size]→{r[size=8]1[/size]}^r^
:Else
:{r[size=8]1[/size]}^r^-r[size=8]3[/size]→{r[size=8]1[/size]}^r^
:End
:Return
:
:Lbl MVANG
:While {r[size=8]1[/size]}^r^<<0
:¦*{r[size=8]1[/size]}^r^+256→{r[size=8]1[/size]}^r^
:End
:While {r[size=8]1[/size]}^r^≥≥256
:¦*{r[size=8]1[/size]}^r^-256→{r[size=8]1[/size]}^r^
:End
:If abs({r[size=8]1[/size]}^r^-r[size=8]2[/size])>128
:If r[size=8]2[/size]>128
:MVNUM(r[size=8]1[/size],r[size=8]2[/size]-256,r[size=8]3[/size]
:Else
:MVNUM(r[size=8]1[/size],r[size=8]2[/size]+256,r[size=8]3[/size]
:End
:Else
:MVNUM(r[size=8]1[/size],r[size=8]2[/size],r[size=8]3[/size]
:End
:Return
:
:Lbl ADDIT
:For(r[size=8]4[/size],0,r[size=8]2[/size]-1)
:¦*{r[size=8]4[/size]*2+r[size=8]1[/size]}^r^→r[size=8]5[/size]
:¦*!If {°r[size=8]5[/size]+1}
:¦*r[size=8]3[/size]→r[size=8]5[/size]
:¦*0→r[size=8]3[/size]
:¦*Else!If {°r[size=8]5[/size]+1}-{°r[size=8]3[/size]+1}
:¦*{°r[size=8]5[/size]}+{°r[size=8]3[/size]}→r[size=8]6[/size]
:¦*If r[size=8]6[/size]≤64
:¦*r[size=8]6[/size]→{°r[size=8]5[/size]}
:¦*0→r[size=8]3[/size]
:¦*Else
:¦*64→{°r[size=8]5[/size]}
:¦*r[size=8]6[/size]-64→{°r[size=8]3[/size]}
:End
:End
:r[size=8]5[/size]→{r[size=8]4[/size]*2+r[size=8]1[/size]}^r^
:ReturnIf {°r[size=8]3[/size]}=0
:End
:0:Return
:
:Lbl PTMSK
:!If r[size=8]4[/size]
:Plot1r[size=8]1[/size],r[size=8]2[/size],r[size=8]3[/size]
:Else
:ShadeF(r[size=8]3[/size])→r[size=8]6[/size]
:conj(r[size=8]6[/size],GDB4TEMP,8)
:ShadeF(r[size=8]3[/size]+8)→r[size=8]6[/size]
:conj(r[size=8]6[/size],GDB4TEMP+8,8)
:Plot1r[size=8]1[/size],r[size=8]2[/size],GDB4TEMP
:End
:Return
:
:Lbl GNSTR
:conj(Str0PRFX,r[size=8]2[/size],3)
:r[size=8]1[/size]^256/16+128→{r[size=8]2[/size]+3}
:r[size=8]1[/size]^16+128→{r[size=8]2[/size]+4}
:0→{r[size=8]2[/size]+5}
:Return
:
:Lbl LDCHS
:3→P
:GNSTR(CHUNX-2^256,Str4NAME
:ArchiveStr4NAME
:GNSTR(CHUNX+2^256,Str4NAME
:ArchiveStr4NAME
:LDCH(CHUNX-1^256,Str4NAME,GDB4PTRS
:LDCH(CHUNX^256,Str4NAME,GDB4PTRS+2
:LDCH(CHUNX+1^256,Str4NAME,GDB4PTRS+4
:0→P
:FnInt(TICK,6
:Return
:
:Lbl LDCH
:GNSTR(r[size=8]1[/size],r[size=8]2[/size])
:UnArchiver[size=8]2[/size]
:GetCalc(r[size=8]2[/size])→r[size=8]4[/size]
:!If r[size=8]4[/size]
:GetCalc(r[size=8]2[/size],GDB9CWDT*GDB9CHGT*3/2+2)→r[size=8]4[/size]→{r[size=8]3[/size]}^r^
:Lbl GNCHK
:Fill(r[size=8]4[/size],GDB9CWDT*GDB9CHGT*3/2,0
:For(I,0,GDB9CWDT-1
:¦*sin(r[size=8]1[/size]*GDB9CWDT+I*8)+128*GDB9CHGT/1024→A
:¦*GDB9CHGT*3/8+A→A
:¦*If GDB9CHGT/2<A
:¦*For(J,GDB9CHGT/2,A
:¦*¦*sub(WRTL^r^,r[size=8]1[/size]*GDB9CWDT+I,J,255)
:¦*End
:End
:For(J,A,GDB9CHGT-1)
:¦*2+(J-A≥(rand^4+1))→C
:¦*sub(WRTL^r^,r[size=8]1[/size]*GDB9CWDT+I,J,C)
:End
:End
:.PLOT*VEINS
:For(64)
:¦*r[size=8]1[/size]*GDB9CWDT+(rand^GDB9CWDT)→I
:¦*rand^GDB9CHGT→J
:¦*.FOR*NOW,*COBBLE*AND*OBSIDIAN*VEINS
:¦*rand^2+4→A
:¦*Repeat RDTL(I,J)-2
:¦*¦*WRTL(I,J,A)
:¦*¦*rand^3-1+I→I
:¦*¦*rand^3-1+J→J
:¦*End
:End
:End
:r[size=8]4[/size]→{r[size=8]3[/size]}^r^
:Return
:
:Lbl TICK
:!If P
:T++
:End
:Return
Generated by SourceCoder , © 2005-2013 Cemetech
*begins to rise from death bed*
Last edited by qlob; 05-20-2013 at 05:23 PM .