Jump to content
IGNORED

ORB


winkdot

Recommended Posts

ORB
The planet Orb can be a dangerous place full of mystery. The Alliance has lost many ships while trying to explore the planet. Too many to count.
It will be your mission to rescue downed pilots and return them to the Mothership.
Get to know your ship:
At the start of the game your ship will appear in a safe area of the planet.
Your ship is only large enough to hold three pilots. You only have one ship complete your mission. Your ship has a strong shield that can sustain 8 hits before it will be destroyed. The shield is indicated by the bar on the bottom right of the screen. Most enemies will take one shield unit away as you are hit.
The exception is the Orb with will take two shield points away.
Your ship is equiped with "lazor cannons" They can shoot left and right.
Terrain hits WILL (in latest release) damage your ships shield units.
The Mothership:
After you have saved three pilots the mothership will decend on the safe landing area. Because of expensive fuel used by the mothership it will not decend unless you have three pilots aboard your ship ready for rescue.
Your ship must dock with the mothership to transfer the rescued pilots.
At that time all of your ships shield power will be restored full. You will
also get 100 points for any remaining shield units.
You will get 1000 points for each pilot returned to the mothership.
Enemies:
The Orb - The orb will be aggresive and try to ram your ship. If hit you will
lose two shield points and one rescued pilot will be removed from your ship.
Destory the Orb as soon as possible.
Meteors - Meteors can not be shot and must be ovoided. If they hit your ship
you will lose 1 shield unit.
Falling Craft - The purpose of these has not been discovered. They can not be destroyed by your cannons and must be avoided.
Planet Patrol - Look to defend the planet. These enemies can be shot. One of these, if hit will drop a shield unit. Collect it to gain one shield unit.
Other items of interest:
There are places where you can descend deeper into the planet. As the game progresses you must go down in order to rescue pilots as they will no longer appear on the top levels.
Pilots appear on the surface based upon the level of the game, which is based upon how many pilots you have rescued.. They appear as follows:
0-9 pilots rescued - appear on surface 1
12-18 pilots rescued - appear on surface 2 (none will appear on surface 1 at this point)
Up to 27 pilots rescued - appear on surface 3 (none will appear on surface 1 or 2 at this point)
Control:
At the title screen press the fire button to start. The fire button also starts a new game at the game over screen.
Joystick controls the ship in eight directions.
Joystick left or right plus the fire button fires your lazor cannons.
Only rescued pilots and shield units remaining will provide points.
One special ship will, at times drop a shield unit when destroyed.
Better scores can be achieved when the game is controlled using a joystick (for me anyway).
Created using batari and the DCP+ kernel.
Hope you enjoy and as always comments are welcome.
Orb 0.7 contains the code that fixes the nasty corrupt sound/graphics error. Thanks to ZackAttack for providing
the ASM code to reset the stack in order to prevents the stack overflow that was causing this error.
Thanks also to Random Terrain for also being on top of this issue.

Orb 1.0 - Quite a few speedups. i had not looked at this code in a while. Wish I had put more comments in it :) - Pending bugs this is likely the final release.
Screens
post-7911-0-36854200-1432245712_thumb.png

orb-1.0.bin

Edited by winkdot
  • Like 8
Link to comment
Share on other sites

Wow! I love the game play, concept and level progression. You have outdone yourself. You might want to tighten up your code though. You're over on your scanline count. It looks fine on Stella, but it will probably roll or flicker on real hardware. Otherwise, great job!

 

Thanks much, glad you like it Mountain King!

 

On the scanline count, how can I identify where this is happening at? Am I over a lot?

Link to comment
Share on other sites

If you're running Stella the easiest way to check is pressing ALT+L. Your scanline count and FPS will be in the top left corner. NTSC should not exceed 262. There are other ways to check.

 

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCoQFjAA&url=http%3A%2F%2Fatariage.com%2Fforums%2Ftopic%2F181081-keeping-track-of-the-scanline-count-with-stella%2F&ei=9XVPVa6uA8OwggTAqoGAAQ&usg=AFQjCNFqZAGXoXxyuGaa1cvDoqBiUdCgaQ&sig2=QGhV6t4XCNSBplQB5EoglA

 

 

 

post-17-0-71267200-1431271159_thumb.png

Link to comment
Share on other sites

On the scanline count, how can I identify where this is happening at? Am I over a lot?

Related links:

 

atariage.com/forums/topic/181081-keeping-track-of-the-scanline-count-with-stella/

 

randomterrain.com/atari-2600-memories-batari-basic-commands.html#debug

Link to comment
Share on other sites

Just posted 0.5 of ORB (see first post).

 

Quite a few bug fixes in this release.

 

I found a very strange bug that had to do with playfield hits. If the players ship died hitting the playfield over and over, all sounds became extremely slow. All player graphics were also incorrect. I hunted and hunted for a way to fix this but was unable to. The graphics and sound was so messed up,
believe I've ran into some sort of DCP+ kernel issue. I ended up removing playfield hits and everything seems fine now. If anyone knows anything about this, let me know. I was hitting player0 with the playfield.




Link to comment
Share on other sites

Just posted 0.5 of ORB (see first post).

 

Quite a few bug fixes in this release.

 

I found a very strange bug that had to do with playfield hits. If the players ship died hitting the playfield over and over, all sounds became extremely slow. All player graphics were also incorrect. I hunted and hunted for a way to fix this but was unable to. The graphics and sound was so messed up,

believe I've ran into some sort of DCP+ kernel issue. I ended up removing playfield hits and everything seems fine now. If anyone knows anything about this, let me know. I was hitting player0 with the playfield.

Can you recreate the problem using the program below?

 

randomterrain.com/atari-2600-memories-batari-basic-commands.html#ex_dpc_collision

Link to comment
Share on other sites

Can you recreate the problem using the program below?

 

randomterrain.com/atari-2600-memories-batari-basic-commands.html#ex_dpc_collision

Thanks RT. Nice program you have there.

I was not able to recreate the issue using your program. If you wish to see it, try out the 0.4 version of orb and bump you ship into the playfield until it dies. After that the sound loops are unusually long, and the player graphics are no longer correct. After reviewing my code I don't see how that would even be possible (been wrong before tho).

  • Like 1
Link to comment
Share on other sites

Posted Orb - 0.6

 

Changes:

When returning pilots to the mothership, 100 points are gained for each unit of shield you have and full shields are restored.

Some play balance changes.

Some bug fixes.

Graphic updates.

 

Special Thanks to Killad517 for tons of play testing on this. He's always excited when I give him a new build. You rock Sir!

  • Like 2
Link to comment
Share on other sites

Oh the very weird sound and graphic issue (almost like sound and graphic pointers are messed up), can still occur. I can't reproduce it by playing a specific way or doing a specific action. It does seem to appear if you play multiple games and do poorly. I have made sure all variables are cleared completely at the start of a new game but the issue will still crop up. Currently I still think this is some unholy undiscovered problem with the DCP+ kernel as I have never seen this before. Could be wrong, but it's extremely odd.

Link to comment
Share on other sites

A person was recently having a problem because the game restarted without popping a gosub:

 

atariage.com/forums/topic/236282-sword-of-iffrit/?p=3232694

 

Have you also double checked your bank jumps? Are the correct banks being used? Are you using return otherbank when you should be using return thisbank or the reverse of that?

  • Like 1
Link to comment
Share on other sites

Just posted 0.5 of ORB (see first post).

 

Quite a few bug fixes in this release.

 

While playing v 0.6 I've notice that the game freezes for a moment when the ship runs into the terrain/green mountains at the below of the screen. It happens if you miss picking up the man with the ship. Is this normal or a bug?

Link to comment
Share on other sites

While playing v 0.6 I've notice that the game freezes for a moment when the ship runs into the terrain/green mountains at the below of the screen. It happens if you miss picking up the man with the ship. Is this normal or a bug?

 

Hey Arenafoot. If you hit the green terrain, there will be a hit sound and your ship is knocked back a tiny bit, but no damage is done to your shields. Is this what you mean, or is it something else? I also think there is a place on the first level when you can go down to the next level, while coming back up, if your not to the right enough it will hit the terrain coming into the next screen.

Link to comment
Share on other sites

Oh the very weird sound and graphic issue (almost like sound and graphic pointers are messed up), can still occur. I can't reproduce it by playing a specific way or doing a specific action. It does seem to appear if you play multiple games and do poorly. I have made sure all variables are cleared completely at the start of a new game but the issue will still crop up. Currently I still think this is some unholy undiscovered problem with the DCP+ kernel as I have never seen this before. Could be wrong, but it's extremely odd.

 

A person was recently having a problem because the game restarted without popping a gosub:

 

atariage.com/forums/topic/236282-sword-of-iffrit/?p=3232694

 

Have you also double checked your bank jumps? Are the correct banks being used? Are you using return otherbank when you should be using return thisbank or the reverse of that?

I think RT is correct about the gosub. If you look at the stack pointer register (SP) inside the debugger you will see that it decrements by 2 each game. Eventually the stack overflows into memory that is being used by the game/kernel and causes lots of bad stuff to happen. The symptoms are so varied because of the random way the memory is corrupted. You can test whether or not this issues has been resolved by simply watching the value of SP after the second game is started. If SP is decreasing by 2 each game the issue has not been resolved. If you provided the source code I would be happy to debug this issue and post the steps that I took so that it can serve as a learning experience for all of us. If you do not wish to share the source with everyone, you may send it to me via PM and I will limit my results to only showing the few lines of code that are relevant.

 

Hit ~ to toggle between running mode and debug mode. Once in debug mode the value of SP is displayed on the top right. Here is a screenshot from stella showing how SP has been reduced to $F3 after several games were played. At this point I started to see some really interesting behavior.

 

post-40226-0-52635200-1432520038_thumb.png

Link to comment
Share on other sites

 

Hey Arenafoot. If you hit the green terrain, there will be a hit sound and your ship is knocked back a tiny bit, but no damage is done to your shields. Is this what you mean, or is it something else? I also think there is a place on the first level when you can go down to the next level, while coming back up, if your not to the right enough it will hit the terrain coming into the next screen.

Yeah that is what I was talking about

Link to comment
Share on other sites

 

 

 

I think RT is correct about the gosub. If you look at the stack pointer register (SP) inside the debugger you will see that it decrements by 2 each game. Eventually the stack overflows into memory that is being used by the game/kernel and causes lots of bad stuff to happen. The symptoms are so varied because of the random way the memory is corrupted. You can test whether or not this issues has been resolved by simply watching the value of SP after the second game is started. If SP is decreasing by 2 each game the issue has not been resolved. If you provided the source code I would be happy to debug this issue and post the steps that I took so that it can serve as a learning experience for all of us. If you do not wish to share the source with everyone, you may send it to me via PM and I will limit my results to only showing the few lines of code that are relevant.

 

Hit ~ to toggle between running mode and debug mode. Once in debug mode the value of SP is displayed on the top right. Here is a screenshot from stella showing how SP has been reduced to $F3 after several games were played. At this point I started to see some really interesting behavior.

 

attachicon.gifStack Overflow.png

 

I think you and RT are on the issue with it. Stepping into the wrong areas of memory could cause all sorts of stuff. I will PM you the code to take a look and apologize in advance for the coding :) There are lots and lots of gosub in this fella. Thanks for the offer to look at it.

Link to comment
Share on other sites

Dividing the problem into many small sub-routines is a good thing. The problem here is that you have inadvertently created a recursive function. main->...->gameover->gameset->main->..keeps repeating. The best way to avoid this is at the architectural level. You can have a single main loop via a goto. Inside that main loop you can check a state variable and act accordingly. The the gameover routine would update the state variable instead of jumping straight to the new game itself.

 

Since you've already written so much code and it would difficult to modify the overall architecture at this point, I have developed a simple work around that will allow you to reset the stack when gameset is called. This prevents the stack overflow and should resolve the weird issues you've been seeing.

 

Simply add this assembly code to the beginning of the gameset routine:

asm

STX $FF

LDX #$FF

TXS

LDX $FF

end

Edited by ZackAttack
Link to comment
Share on other sites

Dividing the problem into many small sub-routines is a good thing. The problem here is that you have inadvertently created a recursive function. main->...->gameover->gameset->main->..keeps repeating. The best way to avoid this is at the architectural level. You can have a single main loop via a goto. Inside that main loop you can check a state variable and act accordingly. The the gameover routine would update the state variable instead of jumping straight to the new game itself.

 

Since you've already written so much code and it would difficult to modify the overall architecture at this point, I have developed a simple work around that will allow you to reset the stack when gameset is called. This prevents the stack overflow and should resolve the weird issues you've been seeing.

 

Simply add this assembly code to the beginning of the gameset routine:

asm

STX $FF

LDX #$FF

TXS

LDX $FF

end

Thanks much ZackAttack!!! Really appreciate this.

 

Put it in and testing. So far I have not seen the issue reoccur but will continue to test a bit more before I post it.

 

 

Link to comment
Share on other sites

Posted Orb 0.7.

 

Orb 0.7 contains the code that fixes the nasty corrupt sound/graphics error. Thanks to ZackAttack for providing
the ASM code to reset the stack in order to prevents the stack overflow that was causing this error.
​Thanks also to Random Terrain for also being on top of this issue. Mighty fine folks!

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...