Omnimaga
Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: _player1537 on May 08, 2010, 05:19:23 pm
-
I've been working on a version of phoenix (well, at least a space shooting type game) for about 3-4 days now. So far it has the ability for you to shoot, take damage, give damage (to the opponents), and the opponents can shoot. You can also move and they move as well. ATM it only has one enemy, with and hp of 2, you have an hp of 94 and take two damage each time you get hit.
Arrows to move
2nd to shoot
Clear to quit (you also lose when you lose all your health)
hmm, am I forgetting anything... oh yeah, you shoot lobsters right now. It has the ability to easily take levels from external programs/to change the bullets, enemies, your character, etc, however I haven't done that yet. hmm, oh and no comments on the speed please, I'm working on that atm. I'm just including the compiled program for now, I need to get onto optimizing the crap out of it. I think that's it, enjoy. If anyone wants to make a screenshot, go for it.
btw, I still want some good lobster sprites, I can't sprite very well and others could make better ones.
-
Very nice. I like it. The only thing I found that might need work is that when I was just like scrolling across the bottom of the screen shooting (back and forth) sometimes it wouldn't count the hit and the enemy would remain. I like it though :)
-
yeah, once I settle on a bullet design, I'm going to fix that. I've been trying to choose a bullet design for a while and have like between 7 and 10 different styles I've tried, some of them are 2 pixels wide, others (like the lobster) are 8 pixels wide.
Edit: I forgot to mention, this game was made for the 84+/se calcs. It runs too slowly on the 83+
-
I think you should have some way of keeping the speed constant, when you kill enough enemies the speed gets way too fast, so some way to compensate would be nice.
-
ok, I'll try doing that, but first I want to maybe get the speed up in general, so that it can work on a regular 83+ quickly/not extremly slow.
-
I like how you shoot nethams :P
-
:P thanks, I added the nethams at the last minute (though I will probably include them fully in the final version). They were what the 8x8 lobster sprites were for, but 16x16 lobster sprites are still good to have handy :). I've already started working on the speed, so idk when it will be done but eventually it will. I've got 2 weeks of school left, and most of it will be random stuff that doesn't require a ton of participation so I can work on it then.
-
btw you might want to space out the projectiles a bit more lol so it's possible to not get it at all when being careful :P, and reduce your health
-
kk, right now all it does is a random number modded by the level you are on...kinda. ie
100-->L
[beggining code]
!If rand^L
[start bullet]
End
If [all enemies health]==0
L-5-->L
End
[rest of code]
that way it makes it harder as you go on, but I can set the beggining difficulty (the mod number) to something higher. Also remember there will be extra weapons, health, and cash falling from some of the enemies
-
Aaah nice, just make sure it won't get too slow tho :P
Could you have everything move by two pixel rate if speed became an issue, though? It could still allow for fast-paced gameplay
-
by two pixel rate, I assume you mean the bullets move at two pixels?
-
I think he means everything moves two pixels. Actually, it would be a good idea only to update the screen every other frame, it would speed up the framerate by a bunch. I use that with my mario physics engine, and it works great!
-
Very nice! ;D
BTW, sorry if this might look like grammar nazism, but I slightly corrected your 1st post. I just couldn't stand looking at "pheonix"... :P
-
by two pixel rate, I assume you mean the bullets move at two pixels?
Every sprite
-
ok, then I'm sorry I don't really understand. Do you mean have the character sprite move by two everytime, or the enemy sprite move by two. If it is the character sprite, I set it up so that when you press up and 2nd at the same time then you wouldn't run into errors while shooting. ie if it was like that then pressing up and 2nd would make 1 bullet. If you mean the enemy, then I actually just thought of a way to increase the speed a lot, but it will make the enemy slow down a lot (maybe). Basicly my 'tilemapper' that I use to draw the enemies uses a bunch of 'Pt-On(A^8*8+6-->W,A/8*8+4-->R,A/2*2*16+Pic3-->[theta]-8:Pt-Change(W,R,[theta])'. so what I'm thinking of doing, is store to the back buffer, then when I need it bring it to the main buffer, then use vertical +/- and horizontal+/- to move them. I assume that will be a lot faster than this, which also explains why it speeds up when you have less enemies, it doesn't have to do as much math.
-
Find a variable you aren't using and try this:
If Z=0->Z
<Sprite drawing>
DispGraph
End
It will only render the sprites every other frame yet all the movement is done every frame so it appears to be twice as fast.
I lol'ed at the lobsters by the way! This looks nice so far.
-
hmm, that is a good trick I'll use that. Right now it does a big For(Z,0,1) loop around all the enemy moving, bullet shooting code. Then the rest of it (moving) only does it every other time. Oh and thanks :)
-
Sorry I am unsure how to explain in more details. Anyone else care to explain what I mean?
-
Lets see if I can. I think DJ is saying instead of updating the screen every time something happens you update it after two movement calculations. So instead of doing:
Calculate
Update Screen
you would do:
Calculate
Calculate
Update Screen
I have no idea if this is right. If it isn't please tell me.
-
hmm, that sounds like it would be fairly easy to add in, I'll try it in a few, until then I have a new beta. it should be a little less laggy with more people, but idk I haven't comapared it to the other one. I decresed some math needed to draw the tilemap, and added a shield thing (nothing to make it drop from the enemies yet). If anyone wants to make a screenshot for this one (although it is pretty much the same for now) go for it. (also thanks to KermM for telling me phoenix is spelled with the 'O' before the 'E')
-
Yeah, for F-Zero I'm doing Calc\Calc\Update for 6MHz and Calc\Update\Calc\Update for 15MHz :D
-
oh, that sounds good, although I think that's what it is kinda right now @15 mhz mode. this game should be run on a 15 mhz calc, yet it is still pretty slow, so I will update it soon for calc\cald\update
-
Lets see if I can. I think DJ is saying instead of updating the screen every time something happens you update it after two movement calculations. So instead of doing:
Calculate
Update Screen
you would do:
Calculate
Calculate
Update Screen
I have no idea if this is right. If it isn't please tell me.
In pseudo code, it would more be:
Move your ship two pixels in the direction you pressed the arrow key for
Move all enemy ships two pixels in the direction they're supposed to be
Move all bullets down by two pixels
Update screen
Instead of
Move your ship one pixel in the direction you pressed the arrow key for
Move all enemy ships one pixel in the direction they're supposed to be
Move all bullets down by one pixel
Update screen
In other words, everything moves twice faster. Updating the LCD every two loop iteration could also work, though. This is what I do for Axe Tunnel when in high speed.
-
hmm, what I think I might do is to...well I'd have to reorganize all my code first off (probably source code for that), then use Quigibo's method of 'if Z=0-->Z' but have that in a lot of places, then have my movement code move by...probably 2, but that might mess something up...unless I set it to: you move 3 spaces every 4 bullets/enemy movements. I'll work on that soon. Thanks for the help so far :)
-
No problem, glad to help ^^
Gonna try your new version soon too
-
Lets see if I can. I think DJ is saying instead of updating the screen every time something happens you update it after two movement calculations. So instead of doing:
Calculate
Update Screen
you would do:
Calculate
Calculate
Update Screen
I have no idea if this is right. If it isn't please tell me.
In pseudo code, it would more be:
Move your ship two pixels in the direction you pressed the arrow key for
Move all enemy ships two pixels in the direction they're supposed to be
Move all bullets down by two pixels
Update screen
Instead of
Move your ship one pixel in the direction you pressed the arrow key for
Move all enemy ships one pixel in the direction they're supposed to be
Move all bullets down by one pixel
Update screen
In other words, everything moves twice faster. Updating the LCD every two loop iteration could also work, though. This is what I do for Axe Tunnel when in high speed.
Oh ok, ya that makes sense. Sorry about that.
-
No problem ^^
but yeah your method could work too.
-
Well now that I think about my method, it would all depend on what takes longer: updating the screen or doing the calculations.
-
updating the screen would. calculating takes very little time, its just mainly conditionals "if M=1:O+1-->O:End"
-
Ah, ok. Then ya, my method could possibly work too. I would test it but I'm not very good with Axe, yet.
-
updating the screen would. calculating takes very little time, its just mainly conditionals "if M=1:O+1-->O:End"
Not true, when you're checking collisions of multiple enemies with multiple bullets, it really strains the calc for speed, that's why you noticed slowdowns in the first version when there were more ships. Even the sprite drawing calculations become negligible compared to the collision detection.
-
oh yeah, forgot completly about collision, woops, then probably the logic would be the slowest
-
Actually, you can detect collisions every other frame (as long as things are moving slow enough) for the best speed increase without changing anything else. You can use that Z=0 trick for that too.
Don't feel like you have to have to follow all the advice everybody has offered so far. Some of it is redundant, like you wouldn't want to move by 2 pixels AND update every other frame, becasue that would be 4 pixels per frame, way too fast. And doing calculations twice before updating is the same thing as updating every other frame. Just go for simplicity. There's many many ways to increase speed.
-
Ya, I would agree with Quigibo on this one. You don't necessarily need to try or do everything we suggest. All we know is the basic idea of what you have in the code while you know what you do have so you know what would work better than others. Just do what feels right and will get the job done :)
-
ok, I tried to make it a little bit faster, I'm kinda happy with the way it looks now, but its a little bit jerky in the movement. What it does now (in psuedo-code) is:
Initialize
Repeat Health=0 or getkey(15)
For(Z,0,3)
Draw enemies
Draw all bullets
Pause 25-[number of enemies]*8/3
If Z
move
End
End
Display special game over message
anyways, here ya go.
Controls:
Arrows: move
2nd: shoot
Alpha: full speed
Clear: quit
-
Wow nice, speed remains constant and I like how fast the game runs now. Suggestions:
I would make the enemy ships move accross the entire screen width and add a small explosion animation when a ship gets destroyed
-
Damn you, _player.
DAMN YOU.
-
uhh, what did I do? specifically
-
*presses the CLEAR button*
*reads message*
I c wat u did thar.
-
Ok at first I got scared Raylin got another RAM clear and lost Army latest version, but then I remembered the message from when I tried the game x.x
Damn you Player indeed :P
-
:P you're welcome
-
/me wishes he knew what it said....if only wabbitemu for ipod/iphone was done....
-
Screenshit
-
Indeed _player, you suck :P I thought it was going to be a different message, not that one lol. But very nice improvements. It seems to be coming together quite nicely. Quick comment...lobsters shooting lobsters?! What has this world come to?! Ok, I'm done :) But again, very nicely done, keep up the good work ;D
Screenshit
Did you mean that or did you mean "...shot?"
-
I've wanted to test this thing anyway, but now I HAVE to. I must know if pressing the clear button Rick Rolls me. Speed looks a LOT better in the current screenshit DJ <s>Omnomnom</s> Omnimaga posted. /me goes to download it.
P.S. Oddly enough, I *may* have some old lobster sprites for a Space shooter game I was working on years ago.
-
I meant screenshot but posted screenshit intentionally :P
And AOC WHAT? You knew Netham45 was a lobster for THAT long? o.o
-
Will there be a shop?
-
This looks nice! Great job on it! :D
-
raylin, atm I think I will maybe add a shop for special upgrades, then have health, rapid fire, and maybe something else fall from the enemies when they are killed
-
YAY, new update.
I added falling upgrade support (only one thing can fall atm)
I also changed the shield to one hit. ie it can get hit one time, then it is gone (might change later)
I changed the sprites to resemble a certain game...
and added an inverted screen (to make it look like a certain game)
anyways, here it is, same controls, except alpha doesn't do anything I don't think (if it does, it was just a speed test, which resulted in it being the same)
-
Very cool. No idea what game you're trying to look like though :P
The only things that seemed off in this one is that the repeated fire is way to fast. You can almost take out a whole wave of enemies in one pass. Also I think the item is dropping to fast because you can't move fast enough to get them usually.
Great progress! :D
-
I can fix the item dropping to quickly pretty easily
as for the speed of the bullets and what it is supposed to look like, it was supposed to look like Iambians CaDan shooter game (got the dev block, and the look of the bullets) I increased the bullet speed to look like CaDan
and thank you :)
-
Oh, ok. Now I gotcha, didn't realize it was part of the look of the game. Very cool.
-
Yeah, this is looking really great so far! I would recommend making the player move a little faster though since the enemies are able to move twice as fast. It would also be cool to have speed increases as upgrades.
-
Oh, ya. That'd be good too. I just didn't find the speed an issue since the enemy fire rate was brought down since I last played. That upgrade is a good idea.
-
kk, I was going to have it like a lot faster (instead of you move twice every then not move once, it was you move 5 times, then one rest)
also thanks I was trying to think of different dropping upgrades
-
Hmm, well you could have power bonus, upgrade bonus, attack speed bonus (if speed in the final slows down haha), another gun, multiple shots (like twice as many). Just a few ideas.
-
Wow really nice, I like how fast you can shoot.
-
Wow, that's nice! Great job! ;D
-
Thank you for your comments, my friends at school also like how this is going and I (knowing the source quite well) am able to edit it for whatever they are wanting (one wanted the upgrades to fall slower, another wanted it to go into crazy flashing mode [a lot actually]). Anyways here is the new version with a screenshot.
Todo:
add a falling rapid fire power up
make the power ups work for a certain amount of time and only have one power up at a time
work on sprites and general speed (I kinda like the speed but wouldn't mind having it faster)
Done:
added a rapid fire thing (I can add it as a power up really easily now)
I accidently deleted all my previous sprites trying to clean up my program x.x don't worry they are pretty much back now
can't think of anything else, here it goes :)
OH yeah, request: can someone help me think of a good name for this, I don't really want to continue calling it phoenix because its not. I want it to be my own and have its own name. Can anyone help with this?
-
That's awesome! Great job!
*Ztrumpet wishes he could put it on his calc now... ;D
-
How about "Raven" or "Eagle". Or are those not original either ;)
-
Personally, I like those. How about Raven? ;D
-
Hey that looks really nice :) Raven sounds cool too ^^
-
I kinda like raven also, I might go with that, but for now here is another one I just worked on. It has a timer for upgrades and you can only have one upgrade at a time. the symbol that is supposed to look like '>>' is the rapid fire one, the '+' is the shield. same controls and everything else.
Oh one quick thing for people good at graphics, pretty specific but:
could someone make me some sprites that look good for rapid fire, and shield. They need to look like:
'.'=white, non-writeable
':'=white, can write on
'O'=Black, cannot write on
.OOOOOOO.
O::::::O
O::::::O
O::::::O
O::::::O
O::::::O
O::::::O
.OOOOOOO.
-
I'm gonna try latest version now
wow just did and very nice. I think bullets should be smaller, though.
-
I haven't really added a ton of stuff since the last one, but I have added a thing where when you get rapid fire then it inverts the screen, I also changed the sprite (thanks to my friend at school). I haven't done much because I'm working on a 24x24 sprite editor with more features than my last one, currently it has support for: checkerboard and full inverting, a (weak) circle drawer, and a line drawer. I'm making a quick axe program to display the sprite at the bottom right corner, I'll probably post everything when I get it working.
-
Very nice. I like that. The alternating enemy sprite is cool. The bullet sprites look a bit un-bullet like though, to me anyways. I also think that the upgrades disappear a little do fast. Oh, and is it supposed to get to the point where no upgrades are dropped? Great work though, I like the progress being done :)
-
yes, it is supposed to get to the point where no upgrades fall, but it seems like that point is reached too quickly. It's also supposed to have the enemies shoot faster the further you get. yeah, I just kinda threw the bullet sprite together real quickly, I can experiment with it some more though. btw, what do you mean by alternating enemy sprite?
-
Ah ok, I thought so. Oh, well on WabbitEmu it looked like the enemy was switching between two sprites as it went up and down. It could just be me though. Looked cool though haha.
-
wow it gets more and more interesting as it progresses. Nice powerups!
-
This is awesome! I like how Raven's turning out! ;D
-
well...I have a dilemna, if I use the newest axe, then I have to change all my commands and use a harder to find command instead (well...slightly harder). However I can keep the current axe and maybe lose some speed, but I get to be lazier. However, a better option would to have both axe's on my calc so I can play with 4 level greyscale, and work on raven. Quigibo can you post a version of the newest axe titled Axe2 or anything that will make it show up right behind the other axe?
-
What is the command that you are losing?
-
And/Xor/Or
-
Hmmm thats weird, i know he said he changed And/Or/Xor, but they all still seem to work on my version. ie: they are all still bitwise. I thought they were suposed to be boolean? And then the stat parkers were supposed to be bitwise... ?
-
Yeah, they're still bitwise, just now they're only 8 bit instead of 16 bit. Have you tried compiling? It should still work if you were only using low bits.
-
ahhh, that explains it. Some of the main errors are to get the health bar to display correctly, I'm using a couple "For(A,0,11):{L6+A}(r) xor 65535-->{L6+A}(r)" to get it to draw correctly (black on white, or white on black). Is there any way to rename the app? And I'm sure there are better ways to do the previous thing, but I don't want to change all my commands, mainly to preserve consitency, I have a bunch of And/Or/Xor pieces in my code that will eventually need more than 16 bits, and I'd rather use these since I centered my code around And/Xor/Or being 16 bit. If not, I guess I'll go ahead and change it
-
well you can use the stat plot draw types to do the full 16 bit AND/OR/XOR i belive, so you should only have to change the original commands to the new ones.
-
well you can use the stat plot draw types to do the full 16 bit AND/OR/XOR i belive, so you should only have to change the original commands to the new ones.
I think this will work. After all, the commands were just renamed and replaced. :)
-
I'm not going to make a separate version because I need to keep consistency with the new version.
The XOR thing you were talking about, the efficient way is simply this: 1-{L6+A}(r)->{L6+A}(r) since adding one to the negative is the same thing as the complement. I think I will have the not() command do this more efficiently in the future though.
-
does the whole OR/XOR thing being 1 byte now means that we can no longer do stuff like If (A>8000) or (A<3000)? Or can we still use 2 bytes numbers with them? I always had an hard time understanding that whole change thing, since I am unable to follow what's going on x.x
And i am unable to memorize what does "bitwise" means
-
Im not quite sure what 1 byte means, but i can say what bitwise operators are. You know how normal operators work? Like OR AND and XOR? they take two numbers that are either 1 or 0, and outputs a number that is either a 1 or a 0. This is how everything works in TiBasic. Well, if you want to do it bitwise, you can do some complex things:
Any number can be represented in Binary
5 = 00101
3 = 00011
and so you can AND/OR/XOR the individual bits of these numbers together. For instance, of you wanted to OR 5 and 3:
5 Or 3 = 7
0 OR 0 = 0
0 OR 0 = 0
1 OR 0 = 1
0 OR 1 = 1
1 OR 1 = 1
So using a bitwise OR, 5 OR 3 = 7. It doesn't make much sense at all by looking at it in decimal, it only makes sense once you actually go into binary.
-
I'm not going to make a separate version because I need to keep consistency with the new version.
The XOR thing you were talking about, the efficient way is simply this: 1-{L6+A}(r)->{L6+A}(r) since adding one to the negative is the same thing as the complement. I think I will have the not() command do this more efficiently in the future though.
Ok, I guess I was kinda asking for you to do a lot for one person x.x
Also that's a neat optimization, I expect there to be tons of optimizations once this is through and I release the source./me goes to edit his code
Btw, I worked some more on one of my sprite editors, so now it should be easier to do 4lvl greyscale drawing :)
-
Still unsure what it means. I am used to have stuff for example like (A=2) and (Y=5) and used in If conditions, giving true (1) or false (0)
Oh well I guess all I'll be able to do is try it out and mess around :/
I'm a visual person so I won't get it otherwise
-
@DJ, The change was a very low level change. Nothing is different unless you were using the command for something it was not meant to be used for (an operation that is not a logical operation like what _player1537 is talking about). If you were only using truths and expecting a true or false value back then there is no difference whatsoever so just ignore that the change ever happened.
-
aaaah ok ^^
I doubt I will use a lot of low-level stuff myself. The only thing I might use is reading/writing bytes from/to the RAM or stuff like that :P
-
Update!
ok, things added:
new power-"Down", it stops you in your tracks, you can't move Shaped like an X
new power-up, Speed power up, makes you move twice as fast
Also in the works, a new version of raven that will work quickly on a 6mhz calc, screenies/demo later
-
That's really, really cool! I like it. It's turning into a really epic game! ;D
-
wow nice to see new updates!
-
I like it :) Yayyyy a phoenix game in Axe! Its looking better and better, and already is totaly awesome! Are you planning to have different types of enemies or bosses perhaps? Or enemies that move in different movements?
-
one other cool thing would be scrolling backgrounds
-
How about 'PhoenAxe' :P.
-
Lol actually that sounds like a good name :P
Altough I think he wants to use a different name
-
Yeah i figured as such but i couldnt resist :).
FireBird? Or are we ditching anything related altogether?
-
Well I think he decided on Raven (just because that is what he referred to it as, but I could be wrong).
-
yeah, I've pretty much decided on raven. Currently on the 6mhz version, I'm trying to make it where the enemies can shoot at you, and you take damage. So far it is coming along very well.
-
Nice to hear! Can't wait to see more progress :)
-
well...
I dropped this project for a little while >.> But now I am beginning to work on it again. I think I may work on recreating the 6mhz engine to work with interrupts. Sadly, I didn't comment my code enough, so that's another reason for the rewrite. Expect to see progress (and nag me about it if I stop working on it, I really want to finish this)
Edit: If I completely rewrite the engine, could it be usable for the contest. Just out of curiosity (iirc the contest rules say you can't use code from before the contest starting, but concepts I think are ok)
-
Well it would have to be under a totally different name with a bunch of new stuff not incluced in Raven, else it would be like you took an already existing project for the contest. Sprites should probably be fine, altough some new stuff might be good, too.
I am glad this is still alive, though
-
I'm really glad this is still alive. Cool! ;D
-
Glad this is still alive and glad its being entered into the contest! Cant wait! :D