Click here to edit contents of this page.
Click here to toggle editing of individual sections of the page (if possible). Watch headings for an "edit" link when available.
Append content without editing the whole page source.
Check out how this page has evolved in the past.
If you want to discuss contents of this page - this is the easiest way to do it.
View and manage file attachments for this page.
A few useful tools to manage this Site.
See pages that link to and include this page.
Change the name (also URL address, possibly the category) of the page.
View wiki source for this page without editing.
View/set parent page (used for creating breadcrumbs and structured layout).
Notify administrators if there is objectionable content in this page.
Something does not work as expected? Find out what you can do.
General Wikidot.com documentation and help section.
Wikidot.com Terms of Service - what you can, what you should not etc.
Wikidot.com Privacy Policy.
What the community thinks:
I had a new version ready that added some stuff, the biggest feature was automatically generating (when you load a world) a 2 pixel thick wall around the edge of the screen to prevent you from accidentally falling and crashing the game. I also organized the code for loading and creating new worlds. I don't remember all that I added. Unfortunately, my calculator crashed, so the RAM was deleted. Luckily all I lost was 3 unfinished programs with only a few lines of code, a simple 3D rotating cube drawing program that I have memorized (if anyone lets me use their graphing calculator I rewrite that program on it) and TiCrAFT, which I uploaded here. I'll hopefully have the update ready by the weekend.
I've been working on other stuff, I could retype the updated version in under an hour, but no one seems to care…
I actually tried out your game, and I must say, it is fairly cool. I would love to see your updates :)
Also, can you make it so that the terrain goes all the way across the screen? with your old version it just goes like 1/3 of the way from the left. As a suggestion, you could also program hills or something into it.
I'm working on a custom menu for you too, I'll post the code here when I'm done with it :)
Originally when I programmed the terrain I was still not sure about the dimensions of the screen or the order of the coordinates, so I made it small so it didn't crash the game. In the update I was making I fixed it. I could probably make randomly generated terrain like in minecraft, but I'll have to finish remaking the update first.
All my stuff (including archived stuff) got deleted :(
I don't want to create new programs or anything, in case there's a way to get my stuff back
There is an assembly program called something like archive undeleter. It essentially works like a normal recovery program for the computer, however it only works if you've archived the program at any point and have not done a garbage collect. I'm currently on mobile so you'll have to search yourself but it's one of the best assembly programs to have when you have multiple uncompleted projects.
The Silver Phantom welcomes you
Suggestion: type up the code you have memorized on chemtech's sourcecoder3
related sited -> Chemtech -> sourcecoder3
then maybe you could upload it.
Could you please post the source code for this game, or someone at least, I don't have a cord but my classmates would love this game!!! THX :)
Here you go. Welcome to the TI-Basic Developer, TIBOY117!
Thanks! :) you're the best!
In the source code, on the first line, there is a weird L shaped thing in front of TC, What is that and where is it on the TI83+, I'm asking because when I tried running it said error and took me to that.
EX: "SetUpEditor ⌊TC"
That "⌊" or "⸤" is a list identifier, used for custom list names.
You can find it by pressing [2ND][STAT], then going to the OPS list. It can also be found in the Catalog ([2ND][0]) under "L".
The solution to a complex problem is often a simple answer.
hi, 12Me21, in tiCraft after I press enter after entering "SEED: 2" I get an error message of Window Range, how do I fix this?
ANYONE, PLEASE RESPOND AND HELP!
It looks the error arises in this set of lines
which was probably transcribed erroneously. I don't have the means to check the actual code myself at the moment, but I'd guess the proper window is supposed to be
Please test this out for yourself and let me know if there are still any issues.
Also, in the future, please avoiding posting in quick succession and using CAPS. Posting a message on the forum does not notify the intended recipient, so you must wait for somebody to come along to give some help. We, of course, are always happy to provide.
The solution to a complex problem is often a simple answer.
I am not the author, but I would say it is more likely that the intended code is supposed to use the negative symbol.
So:
You can also replace the Xmax and Ymax with the Ans token.
That seems like a simpler fix, yes.
I was wary of the window dimensions being negative due to the game using pixel commands, but I suppose it doesn't matter if it always uses pixel commands.
The solution to a complex problem is often a simple answer.
It worked, Thank you so much, sorry for the late reply… :) Works great!!! THX
-TIBOY117
I was looking at the source code for this game, and for the "load world" part of the code, I noticed this:
With the way that pictures work, this might be the fastest method, but I feel like there should be a faster way. Does anyone know if there is a good optimization for this code?
Actually, there is.
Hewwo, my name is Achak Claw. I was formerly BioHazard.
I dont think that will work. I believe it would throw ERR: DATA TYPE as the RecallPic page states it must be a number from 0-9. Although you are using a real variable, if I am not mistaken, that is treated as a REAL and not a NUMBER. In fact, the page even says:
“The number passed to RecallPic must be one of 0 through 9. It has to be a number: RecallPic X will not work, even if X contains a value 0 through 9.”
I don't think there's a faster way since RecallPic doesn't use variables, but maybe their's some way around that, like using a different way of saving. but I don't think it would be worth it.
Ya, the only way I can think of is using strings to build the command but that would be bigger and slower than just doing that.
The Silver Phantom welcomes you
This code also feels like it could be optimized too, but I'm not sure what would be the best method, or if it's even worth bothering. One thing I tried was to store a 1 or -1 to a variable according to the K value, but that just ended up being about the same size as the original. I know this code isn't super big, but optimization is always good anyways…
The problem is that the way the keys are numbered isn't based on their position relative to the 5 key.
The main thing I need to figure out is how to save the location of the player.
Right now it basically doesn't save it, so if you mess with the S and T variables It will change the location of the player. I've prevented this from crashing the game by setting them to 48,8 if they are outside the screen, and making sure they're integers, but it still puts the player underground a lot.
have you looked into using archiveable lists as a form of storage? if you directly call upon the stored elements containing coordinates of your player and store it into your variables, you can store it back in when you save or while you are running the game every 60 seconds or so.
The Silver Phantom welcomes you
I actually just thought of that a few minutes ago, before I saw this!
I think you accidentally switched X and Y, just switch those letters back around and it works ;)
That seems like it should work, maybe with some small changes
Instead of
:If sum(K={72,73,74,82,84,92,93,94
you could use
:If K>70
actually no you couldn't
maybe do:
:If K>50 and K<100
and then all you need to do is subtract 7 from the first digit to get the y coordinate, and subtract 3 from the second digit to get the x coordinate:
:If K>50 and K<100
:PxlChange(Int(K/10)-7+Y,10*fPart(K/10)-3+Y
YAY!! (as a side effect, you could place blocks anywhere within 2 pixels of the player)
(haven't tested it yet, though)
(I just noticed it's almost the same as your code…) Apparently remainder doesn't work on all calculators, so I think I'll use fPart
Crap, I just realized that I forgot to bring my TI-84 keypad…
The probablem is that on the TI-84 calculators, the keys in the left and right columns aren't aligned into the rows, On the TI-84 keypad for the TI-nspire, they're all in rows, like on the TI-83.
by the way, has anyone noticed that all the TI-8x calculators have the EXACT same buttons?
It seems harder to program on ti-84's, mostly because of geykey
but is it faster?
Yes, it's much faster. Try reading up on piecewise expressions.
.1K would be shorter than K/10
I finally finished the update!
Changes:
a 2 pixel thick wall is generated around the edge of the screen when you load a world or create a new one
Terrain is randomly generated in new worlds
The player's coordinates now save in L6
The first time you use the new version, select L6 FIX in the main menu
Coming Soon:
Better block-placing code
Caves (maybe)
well, to reduce the player errors that can be made. use setuplist L6. this basically unarchives L6 even if it already is, and if it doesnt exist, it'll make a new one. what you can do is if not(dim(L6: then (your setup code). also it might be better to create your own list instead of using L6 so that it doesnt conflict with other programs
The Silver Phantom welcomes you
Unarchive L6 seems to work even if L6 is already unarchived or doesn't exist.
I'll add the
if not(dim(L6
then
…
to my next update
I wish there was a way to make an IF statement run multiple lines of code without using THEN and END, maybe by putting the commands on one line like this:
IF X=Y
COMMAND:COMMAND:COMMAND
instead of:
IF X=Y
THEN
COMMAND
COMMAND
COMMAND
END
Well the idea behind using SetUpEditor is for User defined lists. Not L1-6, but lists with names
The Silver Phantom welcomes you
Also, the part where you said
should work.Just make sure to put a colon between each command
Sorry, but that actually won't work(I even tested it, just to make sure).
The way your calculator works is that it interprets each colon as a new line(as long as its not inside quotation marks). If X=Y, then the following command will be run, and then it will run the next 2 commands. If X is not equal to Y, then it will not run the following command, but it will still run the next 2 commands. Hope this helps ;)
How do you create your own list?
2nd list right L. That'll give you the token that declares and list and just type the name, so LNAME (little L)
The Silver Phantom welcomes you
What should I name the list? I was originally going to do "CRAFT" but I would rather do something shorter, like "TC" (for TiCrAFT)
TC is good, I would generally avoid save or data since those are common list names
The Silver Phantom welcomes you
You can name it whatever you want. TC sounds fine :)
The thing I'm worried about is that some other program uses the same list
I finished adding a custom menu to your program, and added in some of the new things that you added in the recent update. I'll post the code or a download somewhere (where?) if you want me to. In the future, I also might try to change the block size to 4x4 pixels and change your characters size to 2 blocks tall. Since the character size is still currently a 1x1 pixel, it can get confusing when you're in a 1x1 hole.
I'm not sure if it's possible to make blocks 4x4 pixels without lag, but if you can do it, then there could be different type of blocks!
Also, if you look closely, the player is a slightly lighter shade of gray than the other pixels. Do you think I should make it lighter?
Honestly I don't think there's much else I can add in the main game, because the program already runs slower than I had hoped.
The fastest and (probably) most optimized way to break and place 4x4 pixel blocks would be using a for loop with a line command inside of it, because unfortunately, you can't turn several pixels on at the same time(unless you have some crazy Hex code or something, if one exists). Still, it might be pretty cool. I might get working on that later, after finals are done.
And btw, are you wanting to see my version? All I did was add a custom menu to make it look cooler, so I didn't really add anything to the main game yet.
yeah
Where should I put the download, btw? I don't see a "Forum Attachments" link on this page at all. Also, how do you create a group file out of two .8xp files? I'm not sure if you can create a group file on cemetech source coder(which is what I'm using) or not. I've never done this before, so I'm still learning.
I could post the source code here just to make it easier, but I'm guessing you don't want to type all of it in. It's a little bit over 100 lines of code.
EDIT: Nevermind the .8xg question, I figured out how to do it :)
you could email the files to me,
What about creating a forum post and attaching the .8xg file to that forum?
And btw, I stopped working on my version because I have finals coming up. It still has some bugs in it, so I'm still trying to fix them. I'll post my version sometime after this Friday.
yeah, that should work.
I finally put your latest version on my calculator - I see you made the player a bit lighter, but it is still too dark and you can hardly tell the difference. I don't think it would be possible on a TI 83+/84+ in pure basic, but it would be better if your player was even lighter.
Actually I haven't intentionally changed it yet, I'll do it in the next update
Do you think i should keep the original name "TiCrAFT" It's the most obvious name, but I've seen other people using "TI-CRAFT". This is the only working Minecraft game with that name (that I know of), but maybe I should use a different name.
Also, I'm thinking about not using pictures for the saves. the problem is that a lot of other programs use them, so your save could get messed up. Maybe I could convert the image into lines and store the coordinates somehow, though now that I think about it, maybe pictures are the best.
I just realized that you can do seeds! :)
I don't quite understand seeds yet, can anyone explain to me what they do? (I've looked at the rand command page and I'm still confused)
Basically if you use the same seed on 2 calculators, the random number generator will make the same numbers in the same order.
Could you post the code for this for those of us without cables to download?
I currently don't have a cable either.
Heres a simple solution you can use, especially if the download is a .8xp file.
-Download the file on this page
-Goto Cemetech Source Coder 3, click choose files, and select your download.
It will then show you the source code of the given file.
What type of calculator do you have?
TI-83 Plus. Why do you ask?
Because the TI-84s have mini-usb ports, and mini-usb to usb cables are really common
Yeah, if you have a TI-84 it's really easy to download the programs onto your calculator. (Using TI-Connect).
I finished the new version, there are a ton of HUGE optimizations, I'll post it in a few hours after I go to the dentist.
6.3 is out now!
ChangesL
Random Optimizations
the "Save/Quit" option has been removed because it wasn't worth having
Player coordinates are now saved in a list called "TC"
Some label names and variables have been changed or removed
Block-placement code has been optimised
You can now input a seed
optimized code for drawing border
more random Optimizations
Coordinates are now fixed to be Y,X for pixel commands
Note: player coordinates will be reset to 5,5
How do I create a new world?
Nevermind, I didn't realize I was a dot.
Wow, I'm loving your updates! I am now rethinking if creating a custom menu for your game on the graph screen was even worth it, because it just contributes to the memory and is unnecessary for the game to work. I'll still post my version(probably sometime this weekend, or within the next week) unless told otherwise.
Anyways, you did a good job on optimizing, but here, couldn't you replace
with:
It's just a small optimization really, but wouldn't it be just a bit better?
Also, do you know how to get the little L when typing a code in on cemetech source coder?
It's |L
also, when I post stuff here I usually use a subscript L: LTC
you put two commas on each side, like: ,,L,,
Anyway, I'll change those lines in the next update. The problem is that it's really annoying to upload stuff. The USB port on my calculator doesn't work very well, so it takes a while to get the files from my calc. I try not to upload new stuff right after I release a new version, unless there is a major problem.
I made this picture for a logo, It might not work because of the gray parts, but maybe I could make a title screen using some assembly stuff
For the next update, could you possibly fix the domain error? It probably wouldn't be all that hard, you would just have to add some stuff to the if statements that would not allow you to move more left/right/down if you are at the left/right/bottom of the screen. If you added that, you might be able to get rid of those borders, and then you could add something that wouldn't allow you to move farther up if you were at the top of the screen.
no. that would make the game too slow. just don't break the border.
Okay. Btw, did you see my Modified TICRAFT? I included almost everything from your latest update. All I did was add a custom menu, so I kept all of your main code pretty much the same.
Cool, but I don't have time to try it now.
What does the menu look like?
Right now I'm experimenting with a way to make gray, but I don't think there's a good way to make large amounts without text.
I would double check with @SilverPhantom or another high karma member, but you may be able to make grey using the sub( command to quickly switch between pixel on and pixel off. The combination of Black and not on should make a medium grey.
well, i've never dealt with gray scaling, but if i were to go more in depth with more blocks, more visuals, more shades, i'd use a hybrid library instead, but even that im not to good at.
The Silver Phantom welcomes you
Originally, I made an amazing custom menu on the graph screen, but I ended up changing that because sharing the graph screen between the menu and the game was a bit hard and rather unnecessary. So, I put the custom menu on the home screen, and IMO, it looks a lot better than the Menu( function.
Basically, the menu has "TI-CRAFT" at the top, and then there are 3 options; New World, Load World, and Quit. I also added on the ability to go back to the main menu from each of the submenus. Of course, I also changed the pause menu. To see what the menu looks like, it would be better if you downloaded it :) :)
For further info, just check out the main page.
It actually wouldn't make the game too slow, it is just an if condition stating if x<(bottom value):(bottom value)->X
That's what I do. Or I just edit this movement code:
so that it doesn't go out of bounds.
Adding 4 more if statements would make the game a lot slower. It's easier to just not go through the border.
You can do it without if statements and with equality statements instead.
(Ans=26 and x not equal border number)
The Silver Phantom welcomes you
Even if the game was faster, there are a bunch of other things that I would rather add, like water, or counting the number of blocks you have.
When it comes to adding different block types, it would be better to make the blocks 4x4 pixels. I already have a prototype working(with your character being 4 pixels wide by 8 pixels tall), but honestly, that just reduces the amount of area you have to dig/build. If you were to change it to 4x4(or whatever number you want to use - the bigger the block, the less area you have to play), and have different block textures, then it would be better to use a matrix. Using a matrix is the only way I can think of right now, however they do take up a lot of space.
On the other hand, if you kept it at 1x1 and added water, it would be better to have gray/light gray pixels. However, this would probably make the game A LOT slower, so I wouldn't recommend that.
what I'm thinking about doing for water is somehow making some pixels turn on and off really fast, so they look gray AND make the player fall more slowly, also maybe allowing them to "swim"
Whatever happened to adding water, or anything else to the game? Or are you not wanting to do any more updates? :(
If you go through the border and haven't saved your world recently, then you would lose whatever changes you made to your world since you last saved it. Personally, I think it would be better to prevent that, but it's whatever you want.
Just change the movement code to:
Any way you look at it, this is the fully optimized movement code, with screen borders. So any if statements are eliminated, and it is the smallest and fastest, since it uses piecewise functions.
that does look pretty good, the problem is that I don't fully understand how it works
Check out Piecewise Expressions. Basically, the code subtracts 1 from X if (these certain conditions are met) and it adds 1 to X if (these certain conditions are met). Same goes for the Y.
The code is just the same as, but faster than:
Also, I don't think you'd have the K=34 code in there, because the only thing controlling downwards movement is gravity and "climbing" down two blocks (the [STAT] key). You could probably just remove the "K=34" code all together so that it would be:
:If Y≠{bottom border number}
:Y-1→Y
Also remember that if you are using pixels, the bottom of the screen is a higher Y value than the top of the screen, so you might have to change Y- to Y+, and Y+ to Y-. That is, if you are using pixels.
Oh, I get it now. But you need to do pxl-test so you can't go through walls.
Yup.
Btw, talking about the movement engine, there's one bug with [DEL] and [STAT]. If a pxl is not on 2 blocks above/beneath you, but the pixel directly above/beneath you is on, then you are able to jump through the ceiling/wall. This isn't a big problem especially if this is the way you wanted it, but if you wanted to make it more realistic, you could do something like:
If you are using pixels then yes, that would be the code for the Y system. You would just need to change it for the X system.
No - 12Me only programmed it so you can climb up and down 2 blocks([DEL] and [STAT]). He did not program sprinting(moving left/right two blocks), so you would not need to program for the X value.
If 12Me21 wanted to, however, he could add sprinting.
That's the way I wanted it.
well, if you already know the coordinates for the borders, you wouldnt need to pixel test. youll just make sure the player cant move to those coordinates
The Silver Phantom welcomes you
I think he is also talking about the terrain, not just the borders, so yes, you would need pixel test.
yeah, that's what I meant.
ok, I changed all the movement code into 2 lines of piecewise expressions, and it works really well, but a lot of stuff is different. I can't jump and place blocks, I think because the code for falling is before the block placement code. Here's the order:
getkey
left, right
falling, jumping, climb up, climb down
block placement
(the ones separated by commas are in the same line, so you can only do one of them each time it loops through)
before it was:
getkey
right
left
jump
climb up
climb down
block placement
falling
the order of the controlled movements shouldn't really matter much (it can only detect one button at a time), but I think falling needs to be after block placement.
which means I need to use an If statement, or…
:T+not(pxlTest(T+1,S->T
I've also been having problems with climbing up, because if you hold the del button in a 3 block high space, it will delete a block in the ceiling
Here's the new movement/block placing code:
:Repeat K=91 //91 is the pause button (sto>)
:S->X:T->Y
:getKey->K
:Pxl-On(Y,X
:S-1(K=24 and not(pxl-Test(T,S-1)))+1(K=26 and not (pxl-Test(T,S+1)->S
:T-1(K=25 and not(pxl-Test(T-1,S)))+2(K=33 and not(pxl-Test(T+2,S)))-2(K=23 and not(pxl-Test(T-2,S)->T
:If sum(K={72,73,74,82,84,92,93,94
:Pxl-Change(Y-8+int(K/10),X-3+remainder(K,10
:T+not(pxl-Test(T+1,S)->T
:Pxl-Off(Y,X)
:End
(I haven't added the code to stop the player from going outside the screen yet)
It works perfectly! :D
How many parentheseis do I need?
Also:
How to find the player:
Press up. If nothing changes, press 8.
Should I keep the pause key as STO>? It's really close to the ON key, and I don't want people to accidentally press it.
I thought I could do this:
:(-1)(V>2)+(1)(V<-2)->V
instead of
:If V>2
:-1->V
:If V<-2
:1->V
but it didn't work at all.
Then I tried:
:(-1)(V>2)+(1)(V<-2)+(V)(1)->V
And it worked, but it generated different terrain than before.
I just realized that piecewise expressions aren't actually commands…
if more than one of the things is true, it will do both expressions…
anyway, I just made it into one if statement:
:If abs(V)>2
:-V/3->V
It works because if V is greater than 2, it must be 3 because you can only add/subtract one each time.
Since I can only guess as to what part of the code you are talking about, could you post an updated source code as a comment so that the TIBD community can help you optimize?
Oh, sorry.
I won't post all the code (I can't get TI-Connect on this computer), but here's the part I was talking about:
(It's the code for generating the terrain)
:Lbl N
:Input "Seed: ",R
:R->rand
:0->H
:0->V
:For(W,-I,I,1
:V+randInt(-1,1->V
:If abs(V)>2
:-V/3->V
:H+V->H
:Line(W,H,W,-J)
:End
I is 47, which is 1/2 the width of the screen
J is 31, which is 1/2 the height of the screen
Your terrain generation code was fine the way you had it earlier… I don't see the point in changing it.
Also, using ENTER as the pause button would probably be fine.
Perhaps he was going for size optimization. That's why it would be nice to have a full current code so we can help fully optimize it.
Ok, I'll post the update after 12:00 today (my school has a half day)
Ok, cool. Thanks. Hopefully we can make it a whole lot faster
Ok, here are the changes:
Slightly optimized list setup code
Replaced I and J with Xmax and Ymax
Made text in menus lowercase
Added more terrain generator customizations
optimized movement code a lot! (now it's just 2 lines!)
Changed TiCrAFT logo slightly
Removed secret
Added Help Menu
Have you looked at my Modified TiCraft w/ a custom menu yet?
Yeah, It looks pretty good. I think I'll make the menus look like that once I finish doing some other stuff.
I'm glad you like it. It would've been nice to add cooler graphics and make it more pleasing, but I kept it really basic and simple just to reduce the size of the game. Plus, it would've been a bit hard to have both the main game and the menu on the graph screen without making the size of the game too much bigger.
Also, I love how you added more options to world generation! It looks really cool :)
I see you also put CREDITS at the end, are you planning on doing something with that? Currently it doesn't look like it will show up in-game.
I was going to have the appear if you inputted i as the seed, but I removed it.
Love the improvements.
I created a prototype for caves into the game. It's not much really, but it works. Let me know what you think.
Under Label I, here are the changes I made:
And then it goes on to the main game code.
This isn't completely necessary, but if you want, you can also add "Loading" text to the screen while the terrain is generating.
Also, when do you think the next update will be?
Cool, I'll test it out tomorrow. As for the next update, It depends on what I'm going to add. I think I won't be updating the game much anymore, since I think I'm reaching the limit for what can be improved without slowing the game down.
I wouldn't add much more code (if any) to the main game code, I would just add some other things—
Currently the only 2 things I can think of that you can still add are:
-Caves
-Custom Menu
Also, have you messed with adding a block counter(how many blocks you've placed/destroyed)? If not, I may try to add that.
Why put it after Lbl I? then it would generate caves every time you exit the pause menu.
Here's a list of variables:It should be right before Lbl L.
Unused:
B,D,E,F,I,J,M,O,P,Q,U,Z,θ
Also, Wouldn't
(Abs(θ)<43)
be better than
(θ>-43)(θ<43)
Oops, my mistake. You can move it to the spot right after the code finishes generating the terrain. Then it should work.
Btw, have you tried adding a block counter yet?
I was thinking about it, but I don't think It's worth adding.
Here's my cave prototyp[e
(between the normal terrain generation code and the End of the For( loop)
U+randInt(-C,C)→U
I+U→I
If I>H-randint(0,1)
U-3→U
Line(W,I,W,I+U*2,0
If I<-30
2→U
if abs(U)>3
U/3→U
(end)
If where I placed that code is correct, then that just completely messed up the terrain. Also, it seemed to mess up the worldborder placement.
EDIT: It also makes the terrain generation a lot slower.
It shouldn't mess up the worldborder, the only variables used for the border are XMin,XMax,YMin, Ymax, and A, which is reset by another for loop.
I might have typed the code wrong, I'll check later.
It would help if I knew exactly where to put it in the code. I may have placed it in the wrong spot, but I'm pretty sure I was right.
It should go inside the For( loop where the normal terrain generation code is:
For(W,Xmin,Xmax,1
V+randInt(~C,C->V
If V>L
~G->V
If V<~L
G->V
H+V->H
Line(W,H,W,Ymin
Here
End
Also, thanks for the variable list. That helps out a lot.
And yes, using Abs would be better.
hmm… I'm not so sure about adding caves anymore… at least… not yet…
anyway, I have a plan to prevent you from trying to load nonexistent pictures, and list the unused pictures during saving (so you don't overwrite saves) Instead of starting the coordinate list with all 5's in it, I'll start it with -1's, and change them when saving. that way I can check if a picture file has been saved in yet.