Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: Michael_Lee on August 29, 2010, 08:42:50 pm
-
I'm going to try to make a minesweeper game using Axe.
Some more interesting features that I'm going to try to include are an undo button, multiple high scores, customizable field size and mine amount, and grayscale.
Although, I'm not too sure about the grayscale one - I've tried to make one, but artistically, it kind of sucks. It's a bit dull, and doesn't really enhance the gameplay at this time.
Currently, I have a crude mockup and am working on the basic mechanics.
I've attached a gif of what I have so far - obviously, it's far from complete, but my code seems to be placing the mines if not the numbers correctly. (Although, oddly, it places more mines then it should).
-
awesome. love seeing your works :D
i can't wait.
note: i thought the grayscale looked good on it.
-
Looks nice!
Excellent job so far! :)
-
Yes, this looks great. Hope you get everything worked out.
The greyscale looks good, too.
-
Excellent! Don't forget to have the "smiley face" wear sunglasses when the player wins the game! Like this: 8)
-
Muhahaha!
My program now adds in the numbers correctly! It also displays exactly how many mines I want (which is 16, at the moment).
@Hot_Dog:
Sunglasses? Hmm, I'll try that, but it's difficult to draw add sunglasses when I have only 8 by 8 pixels. Maybe I'll try using a bigger circle.
-
Muhahaha!
My program now adds in the numbers correctly! It also displays exactly how many mines I want (which is 16, at the moment).
Man, that's a sweet screenshot! I might actually play this minesweeper game!
-
Wow, looks great so far! Keep up the good work! :D
-
This looks pretty sweet. I'll be sure to play it when it's done :)
Glad to see you make more programs
-
Looking really nice :) Minesweeper is an excellent game to write that is both challenging and entertaining ^^
-
I've added flags, the question mark thing, and am currently working on getting the revealed squares to expand when I click on a blank one. It isn't working!
Or maybe it's just really slow - either way, the code (and I) am unhappy.
-
Whatever the case, nice work on the flags and question mark! Although, I've never had to use the question mark...
-
You're going to have to use some sort of flood-filling algorithm for this.
-
You may want to check some TI-BASIC source code for minesweeper games. There are some nice ones in Omnimaga archives, if you want to check for flood filling algorithms. Hopefully it is not too hard to translate to Axe code. Good luck!
-
Hmmmm flood fill eh? I have written quite a few of those in my time, PM me if you want some detailed descriptions :) I will have to see how they translate to a minesweeper game tho...
-
Flood fill?
It's a possibility, but it seems a bit inefficient.
@ DJ
I'm not sure what you mean - I checked the downloads and the archives from the old website, but there doesn't appear to be any Minesweeper games that does a mass reveal - they just seem to show only the adjacent squares without branching out.
-
Flood fill?
It's a possibility, but it seems a bit inefficient.
That's pretty much the only way to do it and handle all cases correctly (because what happens when you click a blank space is the exact definition of a flood fill). As for being inefficient, you won't really have to worry about that when using Axe, as long as you code it well.
-
Yeah pretty much what calc84 said, you will need some sort of flood fill algorithm in order to code that properly, and while it may sound inefficient, it may not be as slow as you think, especially in Axe, and for such a small space.
-
Flood fill?
It's a possibility, but it seems a bit inefficient.
@ DJ
I'm not sure what you mean - I checked the downloads and the archives from the old website, but there doesn't appear to be any Minesweeper games that does a mass reveal - they just seem to show only the adjacent squares without branching out.
I thought this one did? http://www.omnimaga.org/index.php?action=downloads;sa=view;down=195
Maybe I am confused about what you mean by branching out, though...
@Builderboy keep in mind if he uses way too much code from someone else and he decides to enter this to the contest (seeing there are no download provided) this might affect his score a bit, though. However that's up to him so...
-
Nah, that technically doesn't branch out. All that one does is show the eight other squares around the center point where you clicked. If the spot is a number it shows it and if blank it shows blank. If it is a bomb it doesn't reveal. I'll take a screenshot of the Minesweeper and show you what the branching out is, if I get a good example.
Edit:
Here is the picture. See where there is like a "bubble" of numbers? What happens there is that you click on a square that is blank and then it branches out to all the blank ones that is by it until it hits a number creating that "bubble." Make more sense?
-
Aah ok I see. Thanks for the info
-
No problem :)
-
Haha, I've finally got expanding to work!
I can't post a screenshot because I'm at school right now, but it works, and it's respectably fast.
It still has a few bugs though, and needs to be optimized, but I should hammer that out soon.
Edit: I might enter this into the contest, even though I'll probably lose a bunch of points for originality. (There's an entire folder for BASIC minesweeper games on ticalc). But hey, if few people are entering, I might have a shot. (I think)
-
Great! Hope you can get those bugs fixed easily :)
Can't wait for screenshots :)
-
I've got the very basics coded: it's now a playable game. It still needs a lot of polishing though, but that should be easy.
-
It still needs a lot of polishing though
And more mines :)
Regardless, that's awesome! You've done some excellent work!
-
Wow looks really nice!
-
That looks really cool! I notice that when the area is clearing, it doesnt update all at once, but kinda goes in a sweeping fashion. Was this intentional or just a byproduct of the method?
-
@Hot_Dog:
I can easily change the number of mines. I just set it at 10 so that the expanding process is more clear. It's harder to test if I did it right if the bubbles are tiny.
@ Builderboy:
The sweeping is a byproduct. Just a question, does it look better this way, or would be better if it was instantaneous?
-
I think it would be better if instantaneous, but as long as it won't freeze the grayscale during the entire loading process
-
Looks great, I like the sweeping effect whether it was intentional or not. :)
-
I don't know how I overlooked this, but this is really cool!
-
The progress looks really good :) Keep up the good work :D
-
i like the sweeping effect. although it could hurt highscore times...
-
I guess the question is, how fast does it do the sweep if there is no update?
-
i like the sweeping effect. although it could hurt highscore times...
If it does the timing separately, the sweep would pause the clock for just that moment, and that'd be perfect, though.
-
Ya. I noticed that in one spot, when it's checking the lower left side, that it takes longer for it to sweep it and such. Is there any reason why it takes longer there?
-
Noticed that too. And how can there be a 1 in a corner with blank squares surrounding it?
The game looks great, though :)
-
Noticed that too. And how can there be a 1 in a corner with blank squares surrounding it?
The game looks great, though :)
Where are you talking about? I only saw the single "1" in the top left corner.
-
About the slowness at the bottom left: it's a bit complicated, but it's also something that's inherent in the design. If I manage to find a method to make the program sweep back and forth vs from just one side, it should be much improved.
Also, the one in the corner? Are you referring to the upper left one? I'm pretty sure it was touching a mine...
Also, how would I do time? I've been looking through my list of commands, and I can't find any timer-related commands. Or am I just being stupid and overlooking it?
To prevent any delays, could I use interrupts? Create a subprogram that adds 1 to a variable each time, and after x amount, I display another second? I think this might be also compatible with older calculators, even though the seconds might be more elongated on the older ones. Hmm. If I've misunderstood what an interrupt is, this'll all go out the window...
Edit: 20th post!
-
You would most likely need to use interrupts for a timer. I think they slow down when batteries are low, though, but I could be wrong. If they don't, then at least you can keep time flow more consistent than calling a sub-routine.
-
How exactly are you doing the checking for the bubbles? You could maybe make a routine that checks up and then below the selected point and then just travels one way and then back, if that makes sense. I can't better type that out if you need. Just a thought though.
As for time, technically the only way you could do accurate time would be by using assembly code with 84+'s (and I think 83+SE's can but they don't have it built in, just something but I don't know.) but Axe has no timer features that I know of. I think though the closest you can get is by using pseudo timing.
-
Yeah that's what I meant. Interrupts can be used for some sort of timer. I'll ask a question in the Axe sub-forum about them.
-
that's pretty sweet!
unless you find some way to radically increase the speed of the sweeping, though, i'd leave it as it is. pausing screen update would ruin the gray, and the only other way i can think of doing it would be storing the data in a different spot and then copying it all over after the sweeping process is over(which adds a bit of unnecessary code). oh, and a suggestion: you should try making scrolling maps larger than the screen, as nobody has ever done that either, and it would make your sweeping effect more useful. good luck!
-
that's pretty sweet!
unless you find some way to radically increase the speed of the sweeping, though, i'd leave it as it is. pausing screen update would ruin the gray, and the only other way i can think of doing it would be storing the data in a different spot and then copying it all over after the sweeping process is over(which adds a bit of unnecessary code). oh, and a suggestion: you should try making scrolling maps larger than the screen, as nobody has ever done that either, and it would make your sweeping effect more useful. good luck!
You're referring to the possible speed bump if there's no updating, right?
If so, then I don't think that there'll be much of a difference even if I don't update at all, unless using DispGraph is REALLY slow.
Also, if I use the FULL command, it goes very fast, but decreases compatibility. It also causes my gray to occasionally flicker to a slight checkerboard pattern. Anybody know why that's happening?
-
DispGraph every pixel change:
For(X,0,95
For(Y,0,63
Pxl-Change(X,Y
DispGraph
End
End
Result: (http://www.omnimaga.org/images/screenshots/pixelupdate1.gif)
DispGraph every column done updating:For(X,0,95
For(Y,0,63
Pxl-Change(X,Y
End
DispGraph
End
Result: (http://www.omnimaga.org/images/screenshots/pixelupdate2.gif)
DispGraph at the very end:For(X,0,95
For(Y,0,63
Pxl-Change(X,Y
End
End
DispGraph
Result: (http://www.omnimaga.org/images/screenshots/pixelupdate3.gif)
Should tell you how slow DispGraph is. (thanks to TI crappy LCD drivers)
-
Holy crap, when I looked at that first screenshot I thought you posted a TI-BASIC program on accident or something :P I know it's still faster than TI-BASIC but it still looked like it :P
-
Yeah Dispgraph is pretty darn slow, unfortunately :( But like it is right now is very fine :)
-
Holy crap, when I looked at that first screenshot I thought you posted a TI-BASIC program on accident or something :P I know it's still faster than TI-BASIC but it still looked like it :P
Yeah the first time I ever tried this was in 15 Mhz mode. When I made this prog mins ago I thougth I accidentally ran BASIC code x.x
Hate mail can be sent to TI-Cares.
-
Wow, DispGraph is slow...
When I first saw that post, I saw the screenshots before I read anything, and I thought you were comparing TI-BASIC to Axe to ASM or something :P
Noticed that too. And how can there be a 1 in a corner with blank squares surrounding it?
The game looks great, though :)
Where are you talking about? I only saw the single "1" in the top left corner.
Yeah, exactly. How can there be a one surrounded on all sides by 0s?
-
It wasn't surrounded by zeros, I didn't even click those squares. I think this is what it looked like:
1+1 ..... other stuff
+F1 .....
111 .....
Where +'s are unclicked squares and an F is a flag.
That one in the upper left corner was touching a mine on its lower right diagonal
-
Oh, whoops, miswatched x.x
The game looks great, by the way.
/me loses
-
Ya, only blank squares expand. Numbers just open the square you clicked :) So like Michael_Lee said there were numbers on both sides of it that weren't clicked while a bomb was diagonal to it.
-
Yeah, I didn't pay enough attention. I thought it expanded and left a 1 in the corner :D
-
Oh :P Nah, just normal :)
-
Okay, update!
I added some new features, they are:
> Options menu - customize the minefield size and the amount of mines (trivia: you can't pick more mines then there's room)
> Increased speed - it now checks only half the time as before, which I found was a good compromise between speed and graphics
> Undo button - accidentally hit a mine? Undo to restore the state!
Future features:
> Toggle the question mark on/off
> Add the timer
> Add high scores and other appvar goodiness
> Pause in-game (to return to the menu, pause time, etc.)
> Save your game and return to it later!
> Maybe make a larger minefield, which scrolls (Most likely, the minefield won't be able to go over 19x19 - is it worth implementing this feature?)
I'll add some better screenshots in a moment.
-
Great! Glad to see some progress :) Keep up the good work. Did you do any work with the filling routine? Or is it the same?
-
Wow looks pretty nice and the flood filling seems much faster now. Nice job! :)
-
Awesome work! If you allow the minefield to be larger with scrolling, this will for sure make this game the best ti-83+ minesweeper on the market.
-
Nice Job!! :D
Looks really cool!
One question, doesn't an undo button take the point out of minesweeper?
-
The filling routine is essentially the same, I might have tweaked a few numbers here and there, but the bulk of it is the same.
Pruning down the amount of DispGraphs made a HUGE difference.
About the undo button: I've decided that if it's used, you can't record your time for that particular minefield.
So there's a penalty for using the Undo button - you can't really 'win' the game if you use it.
I just added it for those users who are less concerned about earning a high score more concerned about being able to actually finish the game.
(If I ever distribute this to my classmates, there's a high that they don't know how to play minesweeper. This might soften the learning curve for them. Maybe.)
Maybe I should add an option to disable showing the location of all the mines when you lose?
-
The filling routine is essentially the same, I might have tweaked a few numbers here and there, but the bulk of it is the same.
Pruning down the amount of DispGraphs made a HUGE difference.
About the undo button: I've decided that if it's used, you can't record your time for that particular minefield.
So there's a penalty for using the Undo button - you can't really 'win' the game if you use it.
I just added it for those users who are less concerned about earning a high score more concerned about being able to actually finish the game.
(If I ever distribute this to my classmates, there's a high that they don't know how to play minesweeper. This might soften the learning curve for them. Maybe.)
Maybe I should add an option to disable showing the location of all the mines when you lose?
glad to hear of the improvements.
* you made me lose the game....
-
Aah I see, so it was definitively the DispGraph making such a difference. Now you know how slow the TI-82/83/84/+/SE LCD drivers are D: .
As for the Undo, maybe add difficulty modes or bonuses for when someone wants to disable it. Another option to disable showing the location of mines when you lose and a bonus for it seems like another cool idea. :)
-
Well, how about having a sort of Undo/give up selection, then showing all the mines?
-
Aah I see, so it was definitively the DispGraph making such a difference. Now you know how slow the TI-82/83/84/+/SE LCD drivers are D: .
As for the Undo, maybe add difficulty modes or bonuses for when someone wants to disable it. Another option to disable showing the location of mines when you lose and a bonus for it seems like another cool idea. :)
I don't really like the idea of using bonuses to reward the player if they chose to disable the Undo button. If the player avoids clicking the undo button, there's really no difference between the player who leaves it enabled and the one who disables it.
I think that instead of rewarding the player, I should penalize the player for clicking the undo button - in exchange for having unlimited shots at solving a particular minefield, they can't save their time to the high scores list.
Besides, I can't really think of any kind of bonus I could give.
But I think I will add an option to toggle to show the location of the mines when you lose.
-
Yeah i like the idea of penalizing a player that uses the undo button in their game by removing highscores. Because what about those times when you just cant seem to find a place to advance? You just gotta guess and you really dont want to lose :)
-
Ah, right. I guess penalizing might be better.
-
Yeah, not letting the player get into the high scores is a good idea. You can't really reward someone for avoiding a button, and penalizing by adding more time would get complicated :)
-
Sorry for not posting an update for so long, but I decided to rewrite my code, which took awhile.
Well, the rewriting was easy, but the program was plagued by many inexplicable bugs. Now, several coding sprees and many blasphemies later, I now have a program that is bug-free (as far as I can tell), and actually includes several new features (pause and a better options menu).
I've rewrote the code so that it'll be easy to integrate scrolling and high scores, plus the entire code feels much more streamlined and less patchy.
I'll do that later; I'm pretty tired right now.
Meh, I didn't expect to be debugging this long, it's not like the rewrite was drastic, or anything...
I think I'll get scrolling, high scores, and the timer up by Saturday at the very latest.
-
Now, several coding sprees and many blasphemies later,
This is when we want to use a hammer. ;D
I understand debugging can be a pain tho x.x. I love the options added. Do you think scrolling will slow the grayscale down? Looks nice as always :)
-
That looks really cool! Good luck with the rest of it :)
-
nice screenshot
-
Do you think scrolling will slow the grayscale down?
Nah, probably not. Or, at least, it won't be too noticeable. It might be slower when a blank bubble is expanding (but only because there are so many more squares to check).
The way I'm envisioning it, integrating scrolling should only add about 5-10 lines max, as long as they're carefully crafted and written.
Right now, my greatest concern is getting the timer and the getKeys to work together nicely.
I seem to have an irrational phobia of interrupts - it's probably because my calculator keeps getting RAM clears almost every time I try experimenting with them...
~~~~
Questions:
Is an 18x18 maximum field fine? I think that if I use appvars instead of L1 to store my map data, I could increase the size dramatically at the cost of taking up RAM. (A 40x40 field would take up about 3200 bytes, for example.)
When compiled, the program is 7873 bytes. Is this a reasonable size?
-
Aw sorry to hear about interrupts. I think one issue is that getkey doesn't work with them, though. I wonder what would be the solution around that. As for timer, you may need to use one without interrupts, but then it may be hard to keep in sync. That said, it is fine if it is not perfect, though. After all, no timer in NES games were.
18x18 seeems fine to me, personally. At 40x40 we might start getting lost cuz of the small screen x.x
-
I don't know if you have room for this idea, since I don't know how much room your tiles take, but when you add scrolling in if you could have like an arrow pointing in the ways you can move, like a small one, that could be helpful. It could tell you when you hit the end and such. Just a thought :)
-
I'm not sure if I'll have room to add arrows...
I was thinking of adding a sort of grayscale rectangle in the right menu to show how large the minefield is, and a rectangle with black borders to show which portion of the minefield you are currently viewing.
-
maybe have a wrap around minefield?
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO (x = click)
OOOOXOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
O3 1OOOOO
O3 22OOOOOO
OOOOOOOOOO
OO33 4OOOOO
OO OOOOOO
see it wrapped around the top?
(would do horizontally too)
-
that would be crazy O.O if i remember correctly there is an easter egg in windows where you can get to that, and it was a lot harder.
-
Wow maybe that would be cool actually
-
Wrap-around... hmm...
I don't think it'll bloat my code too much, but it'll require much cleverness to pull off...
(Suddenly, Michael remembers setting up scrolling, and sees visions of endless debugging sessions)
On second though, scrolling first. If I have time left over, I'll try adding an option for it.
(I'm going to have to add a second options menu, the way things are going.)
-
You should just have one option menu but when moving the cursor down it would switch to another page of option like the TI-84+ 2.53MP MODE menu, or have it to scroll when selecting options below. Idk how easy it would be, though.
-
I'm not sure if I'll have room to add arrows...
I was thinking of adding a sort of grayscale rectangle in the right menu to show how large the minefield is, and a rectangle with black borders to show which portion of the minefield you are currently viewing.
Ya, that's what I was afraid of. Maybe you could put arrows in the menu/info bar or something. I don't know. What ever works will be great :)
-
I'm starting to get a little worried.
Currently, when compiled, my game takes up 8755 bytes on my calculator (the source takes up 4992)
My fear is that when I finish adding scrolling, timer, and high scores, the program will take over 10,000 bytes - this seems a little unreasonable for a game of minesweeper.
Is 9000+ bytes a reasonable size?
-
I'm not sure. However I would worry about just getting a working version done for the contest and then start working on size optimizations :)
-
how much data do you explicitly define..? i would think you would need under 100 bytes for all the sprites, do you know what's taking up all the memory?
-
i agree with meishe91. get the foundations down first and a full working program then work for program optimisations
-
Same as Meishe91. Also, to me, it's fine if it's 12-15 KB considering the features your game has so far. However, is it gonna be an APP? Because as a regular program, you cannot have programs larger than 8 KB of executable code after compiling (this excludes the data)
-
Woo, people agree with me :P
Ya, that might be an idea to think about (to compile to an app).
By the way, what happens if you do have more than 8KB of executable code? I never tried it :P
-
Woo, people agree with me :P
Ya, that might be an idea to think about (to compile to an app).
By the way, what happens if you do have more than 8KB of executable code? I never tried it :P
If you try running code from anything above 8KB, the calc will simply reset and give you a nice ram cleared message.
-
Ah, well then it's a good thing I never tried to find out then. Thanks.
-
Same as Meishe91. Also, to me, it's fine if it's 12-15 KB considering the features your game has so far. However, is it gonna be an APP? Because as a regular program, you cannot have programs larger than 8 KB of executable code after compiling (this excludes the data)
Wait - whaaaaaaaaaaaat? RAM clear?
My executable can't be larger then 8000?
Quick question: lately, I couldn't get my program to run when I used the Asm( command (although it works for everything else), so I've been using DoorsCS 7 and its homerun feature to run it directly.
Is this sort of the same thing?
Also, I think Quigibo said that compiling into an app is sort of buggy and could lead to worse then a RAM clear? Is this true?
-
No, your source can be above 8000 bytes but the executable code can't be more than 8000. If I understand correctly. So say you have 2000 bytes of data and 8000 bytes of executable then the program would be 10 000 bytes but would run fine. But I'm not 100% sure so wait for someone else to answer too.
-
What Meishe91 said. It's a limitation present in z80 assembly too. In FLash APP format, the limit is 16 KB. If your game executable code excluding the data is over 8 KB, I would compile in flash application form. Backup first, though. App compiling should work fine, but on certain calcs, it might not, like my old 83+. The only way to know is to do a backup on your computer then give it a try on calc. Else, try on WabbitEmu.
-
The App compiling used to be buggy in a very small number of calculators with the older version, but with the current versions (0.4.x), it's been working perfectly so far, I haven't heard of anyone having problems with them. It just takes a little longer to compile. I would backup your stuff anyway though.
-
Oh, good. Apps are fun!
I don't think backing up is a problem - I'm so paranoid that I back up almost every day, and sometimes even print my code (mainly for debugging purposes, but still, the code's preserved).
-
Yep, there's that 8 KB limit for programs (actually, it's 8811 bytes) just because TI decided it that way. In Axe I'm pretty sure data gets moved to the end, so yeah, only the executable amount counts. Wouldn't app compiling be a waste, though, unless the executable portion really is more than the limit?
Also, Quigibo: Does the app get signed by Axe? I don't really know how that stuff works...
-
Well if you gotta move to an app you gotta move to it whether you think it's necessary or not. Better that than risk a RAM clear, I think anyways.
As for the limit, I thought there was actually a reason why it was 8811 bytes or whatever. Like they just didn't pull it out of their butts but it made sense to some extent. I don't remember though.
-
Programs start executing at $9D95. Any code executed on RAM page 0 ($C000-$FFFF, normally) will cause a reset.
$C000-$9D95=$226B=8811.
-
Ah ok. Knew there was some reason.
-
The App compiling used to be buggy in a very small number of calculators with the older version, but with the current versions (0.4.x), it's been working perfectly so far, I haven't heard of anyone having problems with them. It just takes a little longer to compile. I would backup your stuff anyway though.
I still had issues with 4.1 I believe, but I think my calc has hardware issues anyway
-
New updates:
Added timer: note that when you undo, it turns into 999, the maximum allowed time.
Added high scores: currently is very basic, only shows the best time.
Updates currently in construction
Attempting to add scrolling: works, to a limited extent, but breaks the graphics and often glitches (so I didn't show it)
Future updates (if time)
Add difficulty levels (easy, medium, hard, custom)
Add 4 slots for high scores (easy, medium, hard, custom) along with names
Add wraparound
OPTIMIZE
Current issues:
Scrolling doesn't work,
Menu subprogram is too fast due to a different getKey scheme
~~~~
Sorry I couldn't get scrolling done - I'll try to finish by tomorrow.
Well, I hope I can. I'm going to be very unavoidably busy.
Also, Wabbitemu seems a lot faster then my calculator. Anybody know why?
-
Awesome! As for wabbitemu, I have no clue sorry :(. I noticed in 15 MHz mode, Supersonic Ball runs insanely fast in it, though. Normally, Wabbitemu should run at the same speed, though. Maybe report bug to Buckeye?
-
Yeah, I noticed Wabbit seemed to be a bit faster as well, even at 6 MHz. :-\
-
did you change your floodfill algorithm? it might just be the emu running quickly, but it looks a lot better than it did the last time i saw it.
-
I think it's basically the same but the number of DispGraphs he was using was changed, I think. I'm not sure though.
-
I think it's basically the same but the number of DispGraphs he was using was changed, I think. I'm not sure though.
Yup, that's pretty much what I did.
Also:
I think Wabbitemu was slightly faster yesterday (not sure why). It's probably either because the program is now an app or because I tinkered with the settings slightly.
Do apps go faster then Asm programs?
-
I dont think so, but i also noticed some speedup even in my Serenity game, so im not sure if its an asm thing or if its wabbit in general o.O
-
!!!
;D I just remembered: YOU CAN USE MODULUS IN AXE!! ;D
I'm imagining so many things I can optimize now!
.....
*ahem*
Sorry about that - just wanted to share.
-
I think Buckeye might have accidentally WabbitEmu in recent versions. I'll let him know. Which copy of WabbitEmu do you use, though? I think there are two.
And yeah modulus is awesome. It got pretty useful in Supersonic Ball, especially for smooth scrolling :)
-
I think Buckeye might have accidentally WabbitEmu in recent versions.
Eh, I think you're missing a verb there...
It claims its version 1.5
-
I'm still not really sure how to use modulus ??? But oh well, I can figure it out some other time :P
-
I think Buckeye might have accidentally WabbitEmu in recent versions.
Eh, I think you're missing a verb there...
It claims its version 1.5
http://knowyourmeme.com/memes/i-accidentally
Oh I meant the copy of wabbitemu on wabbit.codeplex.com. There are two or three, if I remember, all with the same version number.
-
That... is a clever meme.
I'm not sure which version I have. To be honest, I'm a little hazy on how exactly I managed to obtain Wabbitemu.
-
Wabbit gets updated pretty often, so you might want to update yours occasionally.
I'm still not really sure how to use modulus ??? But oh well, I can figure it out some other time :P
What do you mean? Modulus is just the remainder after division. For example, if you had an array of 3 rows of 3 entries per row, and X is the entry you're in (counting across each row first, then going down), X/3 is the row number, and X^3 is the column in that row.
-
Well modulus is not widely known by BASIC programmers because it doesn't have a direct modulus function (although it's possible I think to use combined functions to have modulus) and most people won't learn it in math. THose who only got BASIC as programming knowledge may have an harder time remembering
-
I learned modulus with Omnicalc. No joke. :P
This looks like a nice program. Good luck! :)
-
I think you can use fPart like this: AfPart(A/B) to find the remainder of A/B
-
I think you can use fPart like this: AfPart(A/B) to find the remainder of A/B
Yup. Just be careful of rounding errors. :)
-
Ah yes, forgot about that D: Revised into
int(AfPart(A/B
-
Well, technically, 2.53 has modulus, but nobody seems to use it...
Added scrolling:
It glitches if you go off screen, but that can be fixed.
Also, sorry about the end where I kept clicking the same mine repeatedly. I was using shortcut keys, and misplaced my fingers so I kept pressing the wrong buttons.
Plus, I didn't feel like finishing the entire 18x18 mine, so I quit.
-
Ah yes, forgot about that D: Revised into
int(AfPart(A/B
Erm, 2.99999999999999999 != 3 != 2...
How about round(AfPart(A/B),0 :)
Edit:Ninja'd
Well, technically, 2.53 has modulus, but nobody seems to use it...
I'm sorry, but if TI thinks introducing a useful feature on a glitchy OS is a good idea... :P
That screenie looks wonderful! Nice job! ;D
-
OOps *facepalm* int doesnt round ;D
-
And about 84+MP modulus, you probably shouldn't use it since it wouldn't work on every other calc/OS.
-
Oops *facepalm* int doesnt round ;D
lol :P
* ZTrumpet facepalms Builderboy. ;D
-
Well, technically, 2.53 has modulus, but nobody seems to use it...
I'm sorry, but if TI thinks introducing a useful feature on a glitchy OS is a good idea... :P
Funny thing, actually. Everybody says that its a glitchy OS, but I haven't found any bugs.
Unless you count slowness or some incompatibility as bugs.
And about 84+MP modulus, you probably shouldn't use it since it wouldn't work on every other calc/OS.
Good point. Didn't think of that.
-
OOps *facepalm* int doesnt round ;D
That's such an annoying glitch. Adds several bytes and at least half an hour of debugging because I keep forgetting about it.
EDIT: Michael_Lee, I think if you do enough nested expressions of a certain type (I don't remember what) it RAM clears (that's right, on the homescreen).
EDIT2: Actually, one of the more visible bugs is this: http://www.brandonw.net (http://www.brandonw.net) (go down to "fixing TI's bugs for them"). Basically, a miscode on TI's part makes xLIB useless.
-
Wabbit gets updated pretty often, so you might want to update yours occasionally.
I'm still not really sure how to use modulus ??? But oh well, I can figure it out some other time :P
What do you mean? Modulus is just the remainder after division. For example, if you had an array of 3 rows of 3 entries per row, and X is the entry you're in (counting across each row first, then going down), X/3 is the row number, and X^3 is the column in that row.
I know what modulus is. But I don't know how to really use it or what I'd use it for. I never learned it in math, besides in like 4th grade when we just called it a remainder. I'd never heard the term "modulus" until Axe.
Also, about the screenshot. It looks great :)
-
Well, technically, 2.53 has modulus, but nobody seems to use it...
Well, if it was added in 2.53, using it would make your game incompatible with 2.43 and the 83+ :(
Also awesome screenshot!
-
modulus is a very useful in programming and is found in many other languages as well. It can be used for many applications like finding if a number is prime or for finding a row or many other uses. If you continue on programming, even in other languages it would be good to learn and the syntax is incredibly simple, after all it's just like all the other operators.
-
Thanks for adding additional mines via scrolling! That looks awesome! By now the best Ti-83+ minesweeper game on the market. :D
Btw, what's the intended max for columns and rows?
-
modulus is a very useful in programming and is found in many other languages as well. It can be used for many applications like finding if a number is prime or for finding a row or many other uses. If you continue on programming, even in other languages it would be good to learn and the syntax is incredibly simple, after all it's just like all the other operators.
Ya, I saw that it was used in C++ from a book I need to read.
-
By now the best Ti-83+ minesweeper game on the market. :D
Thanks! That makes me really happy.
Btw, what's the intended max for columns and rows?
Currently 18 by 18. 18 feels arbitary, but it's because of the size limitation on the free RAM space. 18x18 is the maximum I could stuff into L1.
But if I use appvars instead of L1 to store my (temporary) map data, I could extend it infinitely (Although it would be best to add a limit, for the sake of speed and sanity).
-
TI should have added it to BASIC long ago. It's certainly more useful than the IS/DS functions :P
And back on topic, the updates look great!
-
TI should have added it to BASIC long ago. It's certainly more useful than the IS/DS functions :P
What do those even do, anyways? I've always wondered
Edit: Over 50 posts! I can play games now!
-
Well, IS increments a variable by one, checks if it's greater than a value, and if it is, it skips the next statement :P Almost completely useless. The only time I've ever seen it used was when my math teacher used a combination of Goto/Lbls and IS to make a very crude type of For loop.
-
they were used on the TI-81 to do the equivalent of For() loops, but for some reasons, they were left in even after the addition of For() loops on later calcs.
-
Wow, that must have been a nightmare to use for a TI-81x.x
-
Yeah, a For() loop on the TI-81 is like this:
0->A
Lbl 1
<do stuff>
IS>(A,5
Goto 1
Instead of like For(A,0,5):<do stuff>:End
-
hmm... the scrolling looks a bit slow and messy. it should only have to increment/decrement one variable, right? what's slowing it down?
Thanks for adding additional mines via scrolling! That looks awesome! By now the best Ti-83+ minesweeper game on the market. :D
dittoes
awesome job!
-
hmm... the scrolling looks a bit slow and messy. it should only have to increment/decrement one variable, right? what's slowing it down?
Currently, each time I want to move down, it deletes the space in the square, then redraws the squares according to my map data.
The redrawing routine is a bit bulky, although I do agree, it does feel slower then it should be. I'll take a look at it.
-
Currently 18 by 18. 18 feels arbitary, but it's because of the size limitation on the free RAM space. 18x18 is the maximum I could stuff into L1.
But if I use appvars instead of L1 to store my (temporary) map data, I could extend it infinitely (Although it would be best to add a limit, for the sake of speed and sanity).
Why don't you check each time for size? For instance, 10*20 would fit, but you can't enter it in. I think that would be a nice addition. :)
-
Hmmmm why is 18x18 the max? 18x18 is only 324, and L1 is much larger than that. heck you could get away with 27x27 and still be good. Are you using 2 bytes for each tile?
-
Why don't you check each time for size? For instance, 10*20 would fit, but you can't enter it in. I think that would be a nice addition. :)
I like that idea ;)
But only if I have time.
Hmmmm why is 18x18 the max? 18x18 is only 324, and L1 is much larger than that. heck you could get away with 27x27 and still be good. Are you using 2 bytes for each tile?
Bytes 0-324 to hold the actual numbers
Bytes 325-648ish to identify if it's a flagged, questioned, or cleared square.
Total of almost 650 bytes.
If I take ztrumpet's idea, I think I could make larger fields.
-
You could double your memory if you had the first half of the byte be number and the second half be the flagged data
-
How do I do that? (access half a byte)
-
First byte would be Byte/16, second byte would be Byte^16
-
Divide and mod?
-
Exactly
-
???
I am very confused.
What would those do?
Edit: removed next post
-
Sorry, im going insane right now. I meant the first half is Byte/16 and the second half is Byte^16. You divide the byte by 16 to get the first half of the byte, and mom id by 16 to get the second half
EDIT: Whatt??? I didnt post that first message O.O I really am going insane. Im really sorry
-
Yes, but how does that even work?
How did you figure that out?
So L1+3/16 would get me the first half and L1+3^16 would get me the second?
(3 is a random number)
-
Exactly, sorry if this is confusing, im sleep deprived and going insane so this might not make sense. Actualy... bleh i cant figure out how to store to half byte... ah ignore me, nevermind, this would make it complicated and weird, im going to go to bed before i implode
-
i remember when i was trying to learn builderboy's concept it was helpful to think of it in base 10:
think of the number 48. two digits, just like a hex pair. now divide 48 by 10 and truncate the remainder. you get 4, the first digit. now mod 48 by 10, and you get 8, the second digit. it's the same for hex. if you have a pair 5F you can get the 5 separated by dividing 5F by 16, and you can get the F separated by moding 5F by 16. in axe 1.0 i think there's going to be a nib{} command which will basically do this for you.
-
Ah, cool, that makes sense. Thanks!
-
Okay - submitted my entry to the contest!
I didn't have time to include wraparound, or make any kind of elaborate high scores list, but now you can contort your minefield size so long as the total is equal or under to about 355.
I also ironed out a few bugs, which I've been careful to never let you guys see... :P
-
Looks great good luck mate!
-
That is sick!
-
This. Is. Awesome. ;D
Good luck in the contest, you deserve to place :)
-
wow! perhaps you'll even beat me :P :D
-
Looks awesome! I suck at Minesweeper games, but I'll most likely be putting this on my calc regardless.
Good luck in the contest, as well.
-
sweet!!!
i can't wait to play it! :)
-
That looks great! Good luck. :)
-
Good luck mate. :) Definitely some winning qualities there. :)
-
This is awesome! Too bad I never received the updated version. Thankfully you submitted at least one version (that seemed to work kinda well) so it's kinda good. I'm glad you got to participate and nice project!
-
I'm planning to upload the new version after school today, so that disappointed people can at least play a better version.
-
yeah... the contest version crashed my calc instantly as i tried to run it...
is this the bug? or is it because i am trying to run it with DCS7?I'm planning to upload the new version after school today, so that disappointed people can at least play a better version.
-
Like i said in the other topic, its an app because its so large :)
-
Like i said in the other topic, its an app because its so large :)
yeah...
my bad...
i didn;t change the settings before...
now it works fine :)
-
Weird I did not get crashes in the old version... maybe I was just lucky. I did notice some weird bugs sometimes, though. I ran it as APP
-
This game causes many crashes for me and my Axe is up-to-date. Is there something that I'm missing?
-
You compiled it as APP, right? I only tried it on OS 2.41 btw
-
Ooooohhh.... Failsauce. I will do that when I get back to my dorm.
-
I normally included the source+executable with the entries (or in two ppl case, just the executable), but unfortunately I hit a wall when I tried to figure out how to sign apps with Rabbitsign, so people have to compile it themselves x.x
-
Kay, here. Version 0.9.5.
I should have submitted this one, but oh well...
Should be bug-free, although that's the only difference. (no new features).
-
I didn't have time to include wraparound, or make any kind of elaborate high scores list, but now you can contort your minefield size so long as the total is equal or under to about 355.
No wraparound? That's not a problem. Not many PC minesweeper games have wraparound, anyway :)
-
Cool I'Ll try it after I'm done judging everything (although that may take a while x.x and I'm not doing any today since I am tired)
-
I didn't have time to include wraparound, or make any kind of elaborate high scores list, but now you can contort your minefield size so long as the total is equal or under to about 355.
No wraparound? That's not a problem. Not many PC minesweeper games have wraparound, anyway :)
Yes, but wraparound is EPIC. (I've never seen it or been able to enable it, but I was looking forward to trying it myself...)
-
It would be cool to try playing Minesweeper with that. I wonder if it would be very hard to implement, though? Also, would the map scroll continuously, looping, as if it was going further in the map, or would the cursor move at the edge of the map, then instantly jump on the very opposite side of the map?
-
Umm...
The cursor jumping to the other side was something I was originally going to include, anyways, although I was unable to make it work in time.
Making the actual map loop continuously would be wickedly hard (and I'm unable to come up with any clever ways to do it at this moment).
With wraparound, I think you just have to make the mine placement and expanding loop to the other side once, which should be easy enough to do.
-
map looping wouldnt be that hard...
how exactly are you storing your "map" data?
-
Umm...
The cursor jumping to the other side was something I was originally going to include, anyways, although I was unable to make it work in time.
Making the actual map loop continuously would be wickedly hard (and I'm unable to come up with any clever ways to do it at this moment).
With wraparound, I think you just have to make the mine placement and expanding loop to the other side once, which should be easy enough to do.
Aah ok I see. Well, good luck!
-
Ooo, I just got this, and it's nice!
-
I didn't have time to include wraparound, or make any kind of elaborate high scores list, but now you can contort your minefield size so long as the total is equal or under to about 355.
No wraparound? That's not a problem. Not many PC minesweeper games have wraparound, anyway :)
Yes, but wraparound is EPIC. (I've never seen it or been able to enable it, but I was looking forward to trying it myself...)
so i thought of something original? thats awesome!
-
i now have a bit of time to explain myself as my brother is done using the machine. (you most likely know the vast majority of what is going to follow already, but im going to cover everything anyways just in case)
traditionally, map data for tilemappers is stored in one long continuous string of data. to access a set point in this data one would simply multiply the y position by the total width of the map and then add the height. thus, drawing a map from the data would look like these(you draw to a 10*10 square and store your data in L1, right?):
fixed map size of 10*10:
for(L,0,9
for(M,0,9
PtOn(6*L,6*M,10*M+L+L1
End:End
Dispgraph
which can also be written as
for(L,0,99
PtOn(L^10*6,L/10*6,L1+L
End
Dispgraph
scrolling for variable sizes larger than 10*10(x and y positions are listed as A and B respectively. these could technically be stored in a single variable with accessing via ^ and / as well, but that just makes things too confusing):
0->A->BRepeat D=15
Repeat D
getkey->D
End
A+((D=3)*(A<[total map width minus 10]))-((D=2)*(A>0))->A
B+((D=1)*(B<[total map height minus 10]))-((D=4)*(B>0))->B
for(L,0,99
PtOn(L^10*6,L/10*6,[total map width]*B+A+L1+L
End
Dispgraph
End
Scrolling with wraparound(this is very similar to the option above, but instead of just stopping at it's max value, the x and y's will revert back to zero. to make what im doing a bit cleaner and easier to read ive split some of it into if statements, but these can be incorporated easily into the long +- strings {saving quite a bit of space} as well if you want. also to make things easier to read, the L^ and L/ are L and M again):
0->A->BRepeat D=15
Repeat D
getkey->D
End
A+((D=3)*(A<[total map width]))-((D=2)*(A>0))->A
B+((D=1)*(B<[total map height]))-((D=4)*(B>0))->B
if A=[total map width] and (D=3)
0->AEnd
if A=0 and (D=2)
[total map width]->AEnd
if B=[total map height] and (D=1)
0->BEnd
if B=0 and (D=4)
[total map height]->BEnd
for(L,0,9
for(M,0,9
PtOn(L^10*6,L/10*6,B+M^[total map height]*[total map width]+(A+L^[total map width])+L1
End:End
Dispgraph
End
i dont know any specifics about the code you're using for the sweeping routine, but it could potentially do the same thing. im going to assume that you have to check all the spots around a given point to see which direction the sweeping should advance in. in that case, check if the point you are checking is less than 0(in which case you would add the total map dimension you are advancing in) and check if it is greater than the max map dimension in the direction you are checking in(in which case you simply subtract that total to find the tile you want)
this code was all written on the spot and was not bug tested, so there may be an off by 1 in here somewhere or i may have mixed up getkey(1) and getkey(4) again. however, the general concepts should work. good luck on making this happen!
-
for(L,0,99
PtOn(L^10*6,L/10*6,L1+L
End
Dispgraph
I like this, but am slightly confused by the rest.
I don't think this:
scrolling for variable sizes larger than 10*10(x and y positions are listed as A and B respectively. these could technically be stored in a single variable with accessing via ^ and / as well, but that just makes things too confusing):
0->A->BRepeat D=15
Repeat D
getkey->D
End
A+((D=3)*(A<[total map width minus 10]))-((D=2)*(A>0))->A
B+((D=1)*(B<[total map height minus 10]))-((D=4)*(B>0))->B
for(L,0,99
PtOn(L^10*6,L/10*6,[total map width]*B+A+L1+L
End
Dispgraph
End
would work. Assume that there's a 4x4 map for simplicity, and I want it to look like this: (* is a mine, and can be replaced by an arbitary number over 8 )
01*2
012*
0011
0000
If I stored that map data to L1, it would look like this:
01*2 012* 0011 0000
(with spaces for readability)
Using your code, if I just wanted to display the graph, without adding scrolling, I would do this.
For(L,0,8
PtOn(L^4*6,L/4*6,4*B+A+L1+L
End
(assuming for a moment that A=B=0)
Which would display only the first 9 numbers in L1 and look like this:
01*
201
2*0
Parts left out: 00110000
instead of ideally, this:
01* 2
012 *
001 10000
Right column = parts of the list left out.
At this moment, I'm not sure if your code will accommodate displaying correctly. I think you've made the same kind of error for looping too.
Or did I completely misunderstand your code or did something stupid on my part? (apologies if I did, I'm a bit tired)
-
the second one should work, as i've made it work before:
(http://img.removedfromgame.com/imgs/1280784648-pkwalk.gif)
however, it is also quite possible that i mistyped something as i am also quite tired
ima try mocking up a couple of demos for you
-
Was that a new RPG you were working on shmibs?
-
Was that a new RPG you were working on shmibs?
it looks kinda like Pokemon :P
is it going to be something like a pokemon clone or something on those lines?
harvest moon perhaps?
i donno... i am just thinking up all the games that look like that :P
though it looks like pokemon the most
-
Yeah indeed, although the map seemed different. It looks nice though. I wonder if he'll work on a RPG. I wish I had motivation to port ROL3 to Axe...
-
@ Shimbs: Huh - so I was wrong :P
Your sprite stays in the center of the screen though - is that built in, or can that be changed? My screen only moves if the pointer approaches the edges.
@ Everybody:
Right now, I'm not entirely sure what people mean by wraparound, looping, etc., so:
Wraparound - by this, I mean that if a mine is located on an edge, it increments the numbers on the opposite side. Also, if you click a blank bubble that goes off screen, then it continues on the other side.
This should be easy-ish to implement.
Map looping - by this, I mean that if the entire minefield map would continue to draw itself to the side and corners over and over, giving the illusion that the minefield has no boundary. DJ suggested this idea, but while it would be cool, it would also be incredibly disorienting for the player and difficult for me to code.
Pointer-moving-to-the-other-side - Currently without a snappy name, this feature would let your pointer move to the other side if you hit a boundary and keep going. This feature existed in some of my earlier screenshots, but was removed after the large minefield sizes along with time constraints made it more difficult.
-
I guess wraparound might be best then, since looping looks like it might be too hard.
-
i just sent you a pm :)
i hope that has the correct information though :/
not really sure what most people mean by wrap around either...
though i would thinking that something like map looping is quite unnecessary...
the first one... it seems quite interesting... though once again... not necessary lol
-
Pointer-moving-to-the-other-side - Currently without a snappy name, this feature would let your pointer move to the other side if you hit a boundary and keep going. This feature existed in some of my earlier screenshots, but was removed after the large minefield sizes along with time constraints made it more difficult.
As for a name, how about cursor snapping? :P
-
Pointer-moving-to-the-other-side - Currently without a snappy name, this feature would let your pointer move to the other side if you hit a boundary and keep going. This feature existed in some of my earlier screenshots, but was removed after the large minefield sizes along with time constraints made it more difficult.
As for a name, how about cursor snapping? :P
i say we keep that part as is...
since everything works now... so why fix it? :/
EDIT: oops... i accidentally posted in his quote
-
Well I think I'm just gonna put my two cents in.
I feel like the idea of wrap around is a little taboo in Minesweeper. I just think it will mess with people who go in expecting to play a normal Minesweeper game but then when a number on the edge says four but they can only find two touching ones, it might mess with them and think the game is flawed. Even if you put it in a Readme.txt file there is no guarantee people will read it. Also the wrap around expansion is a little odd too because that would be completely new and odd to some people. Like I know for a fact those would mess with me unless I really focused and remembered those things.
As for what you were calling map looping. I like this idea, though not in the context you were saying. I think you should be able to scroll out to the end of the map and then when you go one more over it wraps back to the first row/column.
1234 1234
123X X234
1234 1234
1234 1234
That's what I mean. It'll be odd if you do:
1234 2341
123X 234X
1234 2341
1234 2341
I could be wrong, but that's what it sounded like you were saying.
What ever you do though I think it'll be great. This has been an amazing project so far :) Keep up the good work and can't wait to see progress :)
-
Well I think I'm just gonna put my two cents in.
I feel like the idea of wrap around is a little taboo in Minesweeper. I just think it will mess with people who go in expecting to play a normal Minesweeper game but then when a number on the edge says four but they can only find two touching ones, it might mess with them and think the game is flawed. Even if you put it in a Readme.txt file there is no guarantee people will read it. Also the wrap around expansion is a little odd too because that would be completely new and odd to some people. Like I know for a fact those would mess with me unless I really focused and remembered those things.
I agree, which is why I was planning to add wraparound (the four in the corner sort of thing) as an extra that's toggled off by default. If players don't like it, they can toggle it back off.
As for what you were calling map looping. I like this idea, though not in the context you were saying. I think you should be able to scroll out to the end of the map and then when you go one more over it wraps back to the first row/column.
1234 1234
123X X234
1234 1234
1234 1234
Taking SirCmpwn's name, this would be cursor snapping. This feature existed in my earlier vids, but I canceled it because I didn't have time to make it work with scrolling. I'll definitely add this feature.
It'll be odd if you do:
1234 2341
123X 234X
1234 2341
1234 2341
I could be wrong, but that's what it sounded like you were saying.
I agree, I think it's disorienting (player reaction: Where am I? Why is this minefield endless?! Where is that last unflagged square?! Argh - ragequit!) and difficult to implement, so this probably won't happen.
-
Cursor snapping can't be to hard to implement, I imagine. I mean you'd basically have your scrolling code and then when if you go over the barrier it just subtracts that many spots, or at least that's how I would do it in TI-BASIC.
-
You're right - shouldn't be that hard, but at the time, I didn't want to muck around with cartesian coordinates. This is what I do:
Determine X and Y
For(A,0,[total_rows])
For(B,0,[total_cols])
Pt-On(6*A+X,6*B+Y,Picture stuff)
End
End
I use X and Y to determine where to start drawing the entire thing, and I just shift X and Y coordinates when I'm scrolling. (most of my map is drawn off-screen, which might account for some of the slowdown).
Because I could never remember exactly how large my viewing square was (was it 62 pixels wide, or 21), I avoided.
-
If you ever added endless looping around the map it would have to be turned OFF by default to not be confusing. Such feature is only really common in RPG world maps, really.
-
alright, here's the demo of the second map drawing method i posted above(with notes)
i made one for looping maps as well, but it looks like you arent going to use that, so i guess i'll keep it secret for that mega project im starting...
-
Thanks, shimbs! I'll be sure to take a look at it.
Also, after taking a short break after the contest, I've started adding and debugging again.
This time, I added cursor snapping and fixed some bugs.
Also, I've changed the version format, because my previous way of doing it was pretty arbitrary and was fairly meaningless. Now, it makes more sense! (but only to me)
I've also tried including the actual application - I found a way to export them from my calculator by opening a .tig group file, but I don't know if they'll actually work. Could somebody give it a try?
Also: is it possible to change appvars while they're still archived?
Edit: I swear, wabbitemu gets faster each time I use it...
Edit 2: The app is now signed.
-
It is impossible to change the appvars without unarchiving them, unless you unlock flash and only ever reset bits.
-
Looks very nice. I might try it soon. However, if the APP is unsigned, I doubt it will send to any calc. It will most likely just send to emulators.
-
Just noticed - Axe came with an application signer. If I drag my app over the .bat, will it magically sign itself? It said it did, but how can I test?
-
It should. Try to send it back to your calc ;D
-
1) Find an app.
2) Drag over .bat
3) Check for success
:P
-
Oh it does? I didn't notice. I think the way it is set now you just need to drag the APP over the bat and it signs the app. To test, you need to try sending the APP to your calc afterward.
-
I ninja'd both of you :P [/off-topic]
-
Lol I noticed x.x
and I lost the game
-
MUHAHAHA!!
SUCCESS!!
*ahem*
That was fun.
-
That looks nice! I'll hopefully be able to try it later today. :)
-
sweet... downloading now :)
thanks for the update
-
This looks awesome! I'm going to try it out right now.
-
Another minor update: doubled the potential minefield size and altered the appvar to accommodate future high score stuff.
...
I just spent several days debugging the doubling minefield stuff, only to find out that Axe 0.4.5 supports working directly with nibbles...
Oh well - at least I learned something new.
Also: Important - if you've played a previous version, you have to delete the appvar it created (which is MINES4DE) before playing this new one.
Well, you don't have to, but you'll have some oddities if you tried.
-
Nice to see updates! And yeah Axe is gonna add that soon, but I guess it's better to not wait because releases are very sparse now that he's at University.
-
Great work, Michael_Lee!
-
...You can just call me Michael, you know. Isn't it kind of awkward having to press that underscore?
-
Not_really,_I_guess_.__It's_right_next_to_backspace,_which_gets_pressed_often_enough.
-
One key away from the backspace, plus the shift button.
Well, it's awkward for me, at least (which makes logging in a minor hassle)
-
...You can just call me Michael, you know. Isn't it kind of awkward having to press that underscore?
Please don't be so picky. Some people are just used to calling forum users by their exact nicknames. I personally often omit the underscore, though. It might be because on IRC I was used to auto-completing nicknames with TAB, though.
-
Yeah, I use tab complete when available, but I try to write entire usernames by hand if need be.
-
Besides, I can type around 70-80 words per minute :)
-
Besides, I can type around 70-80 words per minute :)
And many of us can do that on the calc too ;)
-
Great to see some progress :) Hope things continue to go well.
-
...You can just call me Michael, you know. Isn't it kind of awkward having to press that underscore?
DJ just sent me a PM, so...
I apologize if that comment appeared rude - that really wasn't my intention.
I just felt because I have difficulty typing the underscore, other people might too, and I wanted to free them from the obligation of having to type in every last character.
It wasn't my intention to be picky - really, I don't personally care what I'm called, so long as it's vaguely recognizable, but I've always felt kind of bad about making people type more then they should.
Once again, my sincere apologies.
-
Ah ok, it just seemed like you were picking on Hot Dog just for something trivial and there were people who did such stuff a lot before. I'm glad it was not the case.
-
...You can just call me Michael, you know. Isn't it kind of awkward having to press that underscore?
DJ just sent me a PM, so...
I apologize if that comment appeared rude - that really wasn't my intention.
I just felt because I have difficulty typing the underscore, other people might too, and I wanted to free them from the obligation of having to type in every last character.
It wasn't my intention to be picky - really, I don't personally care what I'm called, so long as it's vaguely recognizable, but I've always felt kind of bad about making people type more then they should.
Once again, my sincere apologies.
I appreciate that, but I knew exactly what your attitude was, and it didn't sound rude to me. In other words, I was not offended and appreciated your offer/generosity.
-
I sent a PM so maybe he clarify his post before you arrive, in case, because it can be interpreted the same way by other people like it can be interpreted differently. I was also unsure if he would read the immediate replies to it right away. I know myself I accidentally offended people and have been more careful nowadays by re-reading most of my posts, but we're not perfect so sometimes I feel it needs to be clarified. I guess it depends of people views, though.
-
I sent a PM so maybe he clarify his post before you arrive, in case, because it can be interpreted the same way by other people like it can be interpreted differently. I was also unsure if he would read the immediate replies to it right away. I know myself I accidentally offended people and have been more careful nowadays by re-reading most of my posts, but we're not perfect so sometimes I feel it needs to be clarified. I guess it depends of people views, though.
Oh, I thought it was an accusation rather than asking for clarification. Don't mind me then...when I saw he had -1 respect, that's what got me upset
-
Ok. Yeah it just seemed kinda picking up on something trivial and I wanted to be certain he clarifies that. One issue is that sometimes, people will post something in a hurry before having to go, and their post seems very hit-n-run
-
Removed by writer.
-
Amazing looking game! Very professional looking!
-
*happybobjr sits in silence, knowing that he can't write much without saying sumething slightly rude. --> STUPID NOOBS <-- that was only a joke right there :P
?
Sorry, not understanding this post.
Especially the bolded 'u'
-
Same here x.x
-
I think he's trying to be funny, but it didn't quite come off as so. D=
-
I misspelled something on my pc and I felt like bolding the u :P
I am not sure what i meant either though... I have had little sleep over the past week. going to bed late and waking up at 5:00
sry.
-
That happens.
On a side note, juding shall start soon (hopefully). Some games will be quick to judge, though, because I pretty much went through them already so I do not need to replay during several minutes.
-
Looking great :D Awesome to see the double tilemap implemented ^^ awesome to hear the nibble working got working :D
-
Added multiple high scores (3 per level)
It's currently slightly buggy, plus the menu feels a little cramped, but it works.
Later, I'm going to try to add either the average success rate or the average time - I haven't decided yet.
-
Nice! I think the menus are fine and I love how you have multiple highscores per level. Great job so far :)
I am starting to wonder if this could get featured eventually on ticalc.org. My only concern is that there are already two other TI-84+ grayscale minesweeper clones ( http://www.ticalc.org/archives/files/fileinfo/398/39854.html and http://www.omnimaga.org/index.php?action=downloads;sa=view;down=195 ) so maybe they might not find it as new, although I personally think your game is probably the best available Minesweeper clone on the 84+ series and has much more features than the two other grayscale ones.
-
That looks great! Keep up the good work :D
-
Looking nice! I hope it gets featured as well. ;D
-
Yay!
2nd game ever, and people think that it's good!
(Well, 3rd game ever, if you count rock paper scissors.)
Note: I think that I'll soon stop working on this game, as soon as I do four things:
1) Add an automatic game save (so that if you quit, you can can resume your game)
2) Add wraparound
3) Make it so that you have an option to never die on the first click
4) Completely rewrite the code so that it's organized.
-
i'm loving the progress!
On a side note, juding shall start soon (hopefully). Some games will be quick to judge, though, because I pretty much went through them already so I do not need to replay during several minutes.
HUZZAH TO THAT
-
Yeah I think yours is gonna be done next, after I'm done with Squidgetx's. Then I might do Player's.
-
Complete rewrite? O.O that seems pretty ambitions
-
Ya, I would say unless you are expecting a speed increase or something like that a rewrite is not really needed. It's your choice in the end though. Good luck :)
-
I tend to not like the rewriting part too much. Personally, I would say make sure it's bug-free then release, and maybe have a next version that is rewritten afterward. Some people fall into the trap of rewriting over and over and it becomes an endless loop causing them to never release their work, disappointing many people around.
-
Well, perhaps 're-write' is too strong of a term.
I'm planning on doing a combination of editing, optimizing, and general shuffling around of codes.
The reason I want to do this is because I see lots of redundant code that could be stuffed into subprograms to shorten the length.
Also, when Axe 0.4.5 comes out, I might be able to use some of the new features.
So, I guess it's really not a re-write, because the bulk of the code would probably be unchanged.
Besides, I'm still kind of hoping that maybe it might just be possible to make an asm program, although at this point, that's probably not possible...
-
wow... just what we wanted!
thanks for the multiple highscore!
downloading and copying again...
you definetly won my vote here :)
-
Please note that votes should be considered based on what has been submitted on the due date of the contest, not what has been submitted afterwards. Otherwise that give people who release more versions after the contest an advantage.
-
Well, perhaps 're-write' is too strong of a term.
I'm planning on doing a combination of editing, optimizing, and general shuffling around of codes.
The reason I want to do this is because I see lots of redundant code that could be stuffed into subprograms to shorten the length.
Also, when Axe 0.4.5 comes out, I might be able to use some of the new features.
So, I guess it's really not a re-write, because the bulk of the code would probably be unchanged.
Besides, I'm still kind of hoping that maybe it might just be possible to make an asm program, although at this point, that's probably not possible...
Ah ok I see. Sounds better IMHO. Good luck on that.
Please note that votes should be considered based on what has been submitted on the due date of the contest, not what has been submitted afterwards. Otherwise that give people who release more versions after the contest an advantage.
Yeah I agree. Personally I judged the entries based on the versions I received for the contest. I have yet to try the new versions because I did not want to be influenced by feature additions or anything.
-
wow... just what we wanted!
thanks for the multiple highscore!
downloading and copying again...
you definetly won my vote here :)
where's the download link?
-
wow... just what we wanted!
thanks for the multiple highscore!
downloading and copying again...
you definetly won my vote here :)
where's the download link?
. (http://www.omnimaga.org/index.php?action=dlattach;topic=4264.0;attach=3469)
-
:P
-
Please note that votes should be considered based on what has been submitted on the due date of the contest, not what has been submitted afterwards. Otherwise that give people who release more versions after the contest an advantage.
yeah... i know...
but eitherway... it was the best minesweeper so far... (at that time)
and now its even better
thats what i meant to say...
-
Please note that votes should be considered based on what has been submitted on the due date of the contest, not what has been submitted afterwards. Otherwise that give people who release more versions after the contest an advantage.
I have to agree with this, although it would be nice if it were otherwise...
I actually feel kind of bad about releasing a bunch of versions after the contest - do you guys think I should have waited longer before starting to post updates?
-
Nah it's OK imho. After all, voting also depends of the user's opinion and judging was done based on the versions uploaded for the contest.
It is kinda unfortunate that your update email missed the attachment and that I worked that night, otherwise I would have warned you via e-mail immediately after receiving the update that missed a download link.
But don't worry too much about it. Normally, the contest rules were planned with uninished games being allowed, but after the deadline, you were free to release updates anywhere you want. See Squidgetx entry, for example.
-
(Almost a necropost (but not quite)):
I present a new feature: saving and replaying!
Inspired by overly inquisitive teachers, I created a feature which automatically saves your game when you quit (either by pausing and pressing 'Quit' or by pressing [CLEAR])
Even if you muck around with the extras or the difficulty levels, it should automatically set them back to your previous game.
Note that the game is not saved if you simply return to menu.
Also note that saving creates about a 760 byte appvar - I didn't want to mess around with compression (although I probably should have).
Also, while working on this appvar, I uncovered a whole nest of appvar ickiness that had been hiding in my program from nearly day one. Now, playing the game for the first time should no longer return RAM clearing parabolic variable things.
-
Looking great ;D Keep up the great work.
-
Saving seems great!
And as for compression, you could probably get it down to at least half the size (and a quarter if you don't save the numbers and choose to recalculate them when it is reloaded). Just an idea.
-
nice... it just keeps getting better an better
-
Nice, I like the new features! :)
-
Looks great and plays great! Nice job! ;D
Also, I kinda got a high score >_<
-
...
Did you just rickroll me?
O.o
And yeah, the custom high scores are pretty meaningless, but it's always good for a laugh...
Edit: Also, this new version of the game has been added to both the Omnimaga archives and ticalc.org, where they are both pending checking, or whatever it is the administrators do.
-
Gah, txtroll'd x.x
Interesting highscore you got there, Ztrumpet :P
Also file approved :D
-
I know this is off-topic but did you check your forum PMs Michael_Lee?
-
Erm... Yes.
I'm actually browsing on Amazon at this very moment.
-
Ah ok, because you did not bother to reply so I thought you missed them X.x
-
Really Good minesweeper, just tried it niice joob
-
After learning lots about Axe and programming in general, I glanced over the source code for Minesweeper, and I was appalled by how inefficient and unnecessarily complicated it was in many places. As a result, I've decided to attempt completely rewriting the program, and while I can't promise that I'll have time to finish this, I've decided to start. So far, I've rewritten my menu system (although most of the graphics should be the same), finally created an algorithm that implements wrap-around (after promising this feature for practically forever :P), created a much more optimized stack-based algorithm for the expanding bubble thing, and shifted code around in general.
However, I have several questions:
I was considering adding an option that lets the user use nearly all of their RAM so that they can make massive levels if they want. Should I do this, or just stick with using the amount of data in L1 instead? If I do allow this to be a feature, should I leave it as a permanent feature, or should I let the user turn this option on or off?
Besides toggling question marks on and off, toggling wraparound, and toggling showing the positions of the mines when you die, should I add any more options?
What else should I add to make Minesweeper even better?
-
That reminds me when I glanced at Illusiat 12 code. I was shocked O.O Although I guess we all have to start somewhere :D
I hope you can finish this project, though. I was sad to see it never finished :(
You could add more options such as larger maps, but try to make sure it cannot cause Mem clears. Otherwise it might be best to stick to L1. Good luck!
-
After learning lots about Axe and programming in general, I glanced over the source code for Minesweeper, and I was appalled by how inefficient and unnecessarily complicated it was in many places. As a result, I've decided to attempt completely rewriting the program, and while I can't promise that I'll have time to finish this, I've decided to start. So far, I've rewritten my menu system (although most of the graphics should be the same), finally created an algorithm that implements wrap-around (after promising this feature for practically forever :P), created a much more optimized stack-based algorithm for the expanding bubble thing, and shifted code around in general.
Same here with Simul and all that stuff :D Axe's just so fast that you don't notice if it's really, really unoptimized.
-
This is also why so many new TI programmers still manage to release games that are as great as some others. That said we need to make sure that these newcomers still learn to optimize, though, so the community won't take bad habits of not optimizing at all (when the 84+ came out this started happening with TI-BASIC: The standard was 3 frames per second for a BASIC game on a regular 83+, but then this became the standard on SE calcs too, so 83+ users were stuck not being able to play those games due to lack of optimizations.
-
For your giant maps, I suggest creating an appvar buffer only if the map won't fit in L1. You can check for this at runtime. Store your map offset to a var and use that var everywhere you would normally use L1. That's what I did for cUbEs.
-
For your giant maps, I suggest creating an appvar buffer only if the map won't fit in L1. You can check for this at runtime. Store your map offset to a var and use that var everywhere you would normally use L1. That's what I did for cUbEs.
I'm planning on combining L1 and an appvar buffer for map data. At the start, if the map size is larger then L1 can handle, then a temporary appvar is created to handle the overflow. I'm planning on either RLE or something I think is called macro compression (?) to compress my maps when using the teacher key. I don't want to keep a huge appvar in memory :P
-
THey would be compressed upon quitting, right? Otherwise that might be a bit slow if they're decompressed everytime they're drawn. X.x
By the way should I create a sub-forum for this?
-
Yup, I'm planning on adding as much compression as possible when saving map data.
As for the subforum, I think probably not. I've been really busy lately, and it's been difficult of late to work on calc projects.
Besides, after this final update (plus bug fixes if needed), I'll probably just finally lay this to rest.
-
Hmm I see. I hope you aren't planning to quit calc stuff anytime soon. it would suck to see you go so early. :(