Jump to content
IGNORED

Robot Zed BETA RELEASE!


Sprybug

Recommended Posts

Finally after many, many hours of programming, debugging, problem solving, experimenting, designing, etc, I have finally released the latest playable Beta of Robot Zed!

The full game is also close to being completed as well.  I decided to release a beta version that allows you to play 2 levels that I have tested many times and feel comfortable releasing.  You can play the introduction level, and 1 of the 8 regular levels.  The regular level you can play is Ice Land.

 

I've fixed many of the bugs that were in the last release and worked on a lot of different aspects since then.  You no longer exit through the top or bottom of the level, instead you progress by going right and the new section of the level will scroll in once you reach the end of a section.  Once you progress far enough, you will reach the boss that you will have to defeat.  The game still has rogue like elements to it.  With the limited amount of ROM space there is, you will notice some repeating patterns, but it will be different in parts every time you play it.

 

The first level, Base Area, is the introduction level to get you familiar with the game play.  Your robot base has been taken over and you have to regain control of it.  This is why if you lose all your energy in this level, you will start over since you don't have access to your energy rejuvenation machine.  Once you beat the boss here, you will have regained control of your base and will have access to all of its functions.  The next mission is to rescue all 8 of your robot friends in 8 different lands, but in the beta release you will just be able to play Ice Land.  Once you defeat that and rescue your robot friend there, the game will restart.

 

Game Controls:

Regular Joystick

- Left & Right Moves

- Up Shoots

- Action Button Jumps

- Down Ducks and puts you in power change mode

- Down and Action Button will change to your next available power.

Genesis Controller

Controls are the same except C Button Shoots and B Button Jumps or you use in conjunction with down to change power. (I sometimes get these mixed up, if it's reversed I blame my faulty memory XD )

 

Console Switches:

Reset Switch Resets the game

Difficulty Switches - Left turns soundtrack on/off, Right turns sound effects on/off (UNTESTED, may not work properly).

If you're missing sound effects and or soundtrack, check your difficulty switch settings.

 

Each Enemy has their own life bar indicated on the bottom right of the screen.  Each hit with a regular shot will subtract it by 1, but hitting them with a special weapon can decrease it by two.

 

When defeated, an enemy may give you a power item.  Some enemies will give you an energy powerup, while other special enemies will give you an ability power up which will allow you to obtain their power for you to use.  The first time you receive an enemy bot's power, your power meter will increase by 10.  All other times if will increase by 5.

Every time you use a special ability, you will drain power.  Once you get down to zero, you will automatically return to normal Zed.

 

 Special Power Bots (Beta Version):

 Hopper - Bouncy Drop Shot (Yellow)  

 Shield -  Major protection from projectiles, shoots regular shot. (Red)

 Stomp - Cascading Falling Shot that goes through walls. (Purple)

 Boomerang - Boomerang Shot that will follow where you go and can go through walls. Limited range however. (Green)

 

Note on Shield Power.  Every hit you take from a projectile will drain 4 power units and 1 energy unit.  Shield power will NOT protect you from running into an enemy or an exploding enemy.

 

Once you defeat the boss in the Base Area, you will regain control of the base and have access to the Main Menu console.  From here, you can transfer energy to power or vice versa, View how many Robots you have rescued, and select which level to go to next.  In this release, only Ice Land will be available.

 

If you end up losing all your energy in Ice Land but do have Power, you will be taken back to the base and have some of the power transferred back into your energy to revitalize you.  From there you have access to the main menu again.  If you have no power when you lose all your energy, your game will be over.  So if you're running low on energy, be sure to stock up on some power and use your power wisely!

 

 

UPDATE 03/30/2021

Fixed the No music selected freezing when defeating boss bug (I think XD)

Cleaned up code to reduce going over scanline count.  Hits 263 occasionally when in mid-air on screen scrolling, but is much better than the last version.  Will work on getting that to 262 for the next update.

The Genesis controller for now has been DISABLED.  Genesis C button will not work.  I'm trying to figure out why this isn't working properly as it is programmed the same way as it was with Princess Rescue, so for now it's disabled.  I hope to get it fixed with the next version.

 

RobotZed_26.bas.bin

Edited by Sprybug
New Version with bug fixes.
  • Like 9
Link to comment
Share on other sites

6 hours ago, Pat Brady said:

My game (on Stella) froze right after beating the first boss.

 

Otherwise, very nice!

 

ETA: I'm keeping it open in Stella for a while. PM if you'd like me to help debug it.

 

Screen Shot 2021-03-29 at 1.38.28 AM.jpg

I had run across this before in the past occasionally and my issue was with how it was dealing with how it was attempting to load up the victory music.  Sometimes it would pull up the wrong song and start cycling through a few other songs instead and would stay there.  The program looks for the end of the victory song to continue, and if that doesn't play it will stay here.  Is that what happened?  If so, it looks like what I had done didn't fix it after all and it's back to trying to figure out what is actually happening here.  Thanks for the response!

  • Like 1
Link to comment
Share on other sites

Looks great so far! Will the U.S. version be called "Robot Zee"? :P

 

I was confused when playing on Stella on how to shoot, but that was because Stella autodetected it as using a Genesis controller, so "up to shoot" didn't work. I'll play on real hardware sometime soon to see if the controllers are as expected there.

  • Haha 1
Link to comment
Share on other sites

5 minutes ago, Karl G said:

Looks great so far! Will the U.S. version be called "Robot Zee"? :P

 

I was confused when playing on Stella on how to shoot, but that was because Stella autodetected it as using a Genesis controller, so "up to shoot" didn't work. I'll play on real hardware sometime soon to see if the controllers are as expected there.

Nice. I didn't know Stella had that ability.  I manually configured it on my end for it.  You can define what key/controller button is that 2nd Genesis controller button and use that button for fire. :)

  • Like 1
Link to comment
Share on other sites

4 hours ago, Sprybug said:

I had run across this before in the past occasionally and my issue was with how it was dealing with how it was attempting to load up the victory music.  Sometimes it would pull up the wrong song and start cycling through a few other songs instead and would stay there.  The program looks for the end of the victory song to continue, and if that doesn't play it will stay here.  Is that what happened?  If so, it looks like what I had done didn't fix it after all and it's back to trying to figure out what is actually happening here.  Thanks for the response!

 

Unfortunately I had the music off. (I had other music on before I started playing and lacked the patience to wait for it to finish.) But that sounds like what happened. It showed the boss-death animation, then froze on what I assume is the last frame of that.

Link to comment
Share on other sites

ZeroPage Homebrew is playing Robot Zed on tomorrow's (Tue Mar 30, 2021) stream LIVE on Twitch at 6PM PT | 9PM ET | 2AM GMT! Hope everyone can watch!

 

 

Games:

 

 

 (SET VIDEO TO 1080P60 FOR FULL QUALITY)

 

Edited by ZeroPage Homebrew
Link to comment
Share on other sites

3 hours ago, Pat Brady said:

 

Unfortunately I had the music off. (I had other music on before I started playing and lacked the patience to wait for it to finish.) But that sounds like what happened. It showed the boss-death animation, then froze on what I assume is the last frame of that.

Ah, yes!  That would explain it then.  I'll just need to add code then to just do my screen transition after the explosions instead of waiting for the music to end since there is none.

  • Like 2
Link to comment
Share on other sites

1 hour ago, ZeroPage Homebrew said:

ZeroPage Homebrew is playing Robot Zed on tomorrow's (Tue Mar 30, 2021) stream LIVE on Twitch at 6PM PT | 9PM ET | 2AM GMT! Hope everyone can watch!

 

 

Games:

 

1125889107_20210330-LetsPlay.thumb.jpg.be87587b72a6ba6ae0ffd7164240ae79.jpg

 

Great!  I'll be sure to make this one.  I've been able to catch a few of your streams here and there.  I'll be sure to attend!

I'll also do that quick fix tonight and upload it here and replace the old binary, in case you decide to turn the music off. ;)

Edited by Sprybug
Added the fix comment
  • Like 2
Link to comment
Share on other sites

this is very impressive, great job on continuing to make this game :)

 

I noticed that you mentioned there is limited ROM space (which I assume is 64K). would it be possible to make it 128K instead so that it would be easier for you to make and/or put more content into the game? I'm not sure if 64K is the limit for bank switching or the limit Batari Basic uses, but it would be nice if that were possible. plus not having to use repeating patterns.

 

I don't know much about 2600 programming but I just had the idea.

 

 

Link to comment
Share on other sites

26 minutes ago, Sprybug said:

Great!  I'll be sure to make this one.  I've been able to catch a few of your streams here and there.  I'll be sure to attend!

I'll also do that quick fix tonight and upload it here and replace the old binary, in case you decide to turn the music off. ;)

Thanks so much @Sprybug! I thought I'd mention that I noticed the scan line count bounce in the range of 262-265, but only while the screen is scrolling while jumping. I don't know if this would be something you have time to look into as it can cause dropped signals on digital displays and possible screen jumps on CRTs.

 

- James

 

image.thumb.png.055a670136c69777249d13a0a9474e20.png

 

 

Link to comment
Share on other sites

1 hour ago, ZeroPage Homebrew said:

Thanks so much @Sprybug! I thought I'd mention that I noticed the scan line count bounce in the range of 262-265, but only while the screen is scrolling while jumping. I don't know if this would be something you have time to look into as it can cause dropped signals on digital displays and possible screen jumps on CRTs.

 

- James

 

image.thumb.png.055a670136c69777249d13a0a9474e20.png

 

 

This is interesting.  I know that I configured Stella to break out if it ever exceeded the 262 line count.  Then I double checked my configuration file and noticed it was missing.  I then checked my laptop and found it on there.  I must have forgotten to configure Stella for my home PC, which I had been using to work on Zed for the past year.  So I put the new autoexec configuration file where it was supposed to go and it loaded in stella but it still didn't break out.  I noticed that I was using an older version of Stella, so then I updated it to the latest version and then noticed that the autoexec configuration file name had changed so I made sure to match it and it still doesn't break out when I exceed the line count. I went into the debugger to check things out and it loaded the autoexec.script file which only has

 

breakif {_scan>#262)

 

in it, but it still never broke out.  Then I went into the debugger on jumping while scrolling and I saw that it was breaking the 262 line count there, but it still isn't breaking out of stella when that happens.  Not sure if this script command has changed in the newer version or not.  I'll have to see in which half of my game cycle that line count exceeding is happening, since I have 2 drawscreens per game cycle.  I noticed it was only happening half the time when I jumped on scroll, so it's happening in one half of it somewhere.  I made some additions in the recent months for special interactions with background elements for the new levels, and maybe all the additions I made exceeded my count.  I'll see if I can get to the bottom of this.  Also, I noticed that Stella now autoconfigured for the Genesis controller now and it is acting like I am not depressing the shooting button.  Not sure if it does that on the real machine or not.  I have no way to test on a real machine as I have an original Harmony cartridge and not the latest one that can do 64K Roms.

  • Like 1
Link to comment
Share on other sites

1 hour ago, Sprybug said:

Also, I noticed that Stella now autoconfigured for the Genesis controller now and it is acting like I am not depressing the shooting button.  Not sure if it does that on the real machine or not.  I have no way to test on a real machine as I have an original Harmony cartridge and not the latest one that can do 64K Roms.

Just did some tests on my RGB light-sixer with an UnoCart* and there's noticeable screen jitter whenever the screen scrolls but it doesn't affect gameplay.

 

In terms of using Genesis controller, the first time the game starts acts as if the second button (shooting button) is being held down 100% of the time. Your character shoots once as soon as he comes on the screen and then holds his gun out for the rest of the game until you die, pressing up doesn't shoot. The SECOND time you play, and every time after, the second button does nothing and pressing up DOES shoot!

Hope this helps!

 

- James

 

* Note: The game "works" with my Harmony Encore but there's issues with some modded 2600s and games that need the Encore. batari is working on it and has a console that has the issue to do troubleshooting with. So for now I'm disregarding any issues with games I have to run on the Harmony Encore and run them on the UnoCart instead.

Edited by ZeroPage Homebrew
Link to comment
Share on other sites

3 hours ago, alfredtdk said:

One suggestion, would it be possible to change the configuration of the Atari control using the left difficulty switch? The firing of the laser would come out through the fire button and the jump pressing upwards.

A configuration option could go like that with the b&w / color switch.  I used the difficulty switches already for the sound/music options.  I'm still considering options and trying to figure a few things out.  Right now, the Genesis controller option isn't working properly and I can't figure out why.  I programmed it just like I did with Princess Rescue, but it's acting as if the C button is stuck and I've stared at the code for so long and can't see what is causing it.  I hope to figure out what's causing it, because it's kind of important. XD

  • Like 2
Link to comment
Share on other sites

Hey James, thanks for all your feedback and testing for me to let me know what was going on with my scan line count.

I've done some work tonight.  I fixed the scan line count on the autoscroll and the no music freezing on the boss should be fixed too.

Couldn't fix the Genesis Controller problem for now.  It's a tiny part of the code, and I've stared at it so long, I can't see why it's not working.  It's programmed in almost the same way that Princess Rescue was programmed for it.  It doesn't make any sense to me.  I'm going to take a look at it this weekend and see if I can figure out.  Maybe I can get some help with it.  It just makes absolutely no sense why it's acting stuck.  It did work when I demo'd it for PRGE, so I don't know why it's not now.  So for now, I've disabled it, and you play it just like you would a regular atari controller where up is fire.

As for the jump and scroll, I found that it also happens when falling or just in the air in general during screen scrolling.  There's a lot more conditional checks going on for the area around you to know if you're going to land, hit the ceiling, a wall, etc, and that's adding to the cycle time.  I cleaned it up a touch and even took out a line of redundant code that wasn't needed anymore.  It's better now, but it still goes to 263 here and there.  I haven't seen it go above 263 since these changes. I'm really close to getting it within parameters.  A few more goes at those routines should do the trick.  I'll give that another look through this weekend, but for now it's better than it was, so here you go!  Hopefully, even with the occasional 263 line count, it'll play nice with your capture.

 

 

 

RobotZed_26.bas.bin

  • Like 1
Link to comment
Share on other sites

yes, yes. This is cool. I like the concept. Keep it coming. The enemies are varied and the strategy to defeat them is fun. That guy who drops the big pink blocks I rush attack him. Whereas the grendade dropper and the arrow shooter i take my time on. I have never pressed fire so quickly on the part where you drop and there's a blue buy pacing back and forth.


I made it to the first boss and got my ass handed to me.  

 

Good stuff. Keep it going.

Edited by MarcoJ
Link to comment
Share on other sites

3 hours ago, Karl G said:

If you need another pair of eyes to help figure out the Genesis controller issue, I'd be happy to take a look.

Any help would be appreciated.  I looked throughout the rest of the code and there's nothing that else checks for the up/fire button other than the main menu when you press up, so I don't know what's going on.

 

Early in the code it checks and sets the bit

 

 if INPT1{7} then Genesis_Controller=1 else Genesis_Controller=0

 

Later on in the controller check section I do this

 

 if Genesis_Controller then GenButton
 if !joy0up then Zed_Shoot=0 : Shoot_Debounce=0
 if joy0up && bally=Reset_Object && !Shoot_Debounce then gosub ZedFire bank6
 goto EndControlCheck
GenButton
 if INPT1{7} then Zed_Shoot=0 : Shoot_Debounce=0
 if !INPT1{7} && bally=Reset_Object && !Shoot_Debounce then gosub ZedFire bank6
EndControlCheck
 

joyup works just fine, however the exact same checks for button C just makes it act like your fire button is stuck.

Also, INPT1{7} works in reverse.  When it is high, it is not pressed, and when it is low, it is pressed.

 

  • Like 1
Link to comment
Share on other sites

50 minutes ago, Sprybug said:

if Genesis_Controller then GenButton

This probably sounds more like spperstition than good technical advice, but I have had issues omitting the goto at times. Just for fun, try adding a goto before "GenButton".

Link to comment
Share on other sites

32 minutes ago, Karl G said:

This probably sounds more like spperstition than good technical advice, but I have had issues omitting the goto at times. Just for fun, try adding a goto before "GenButton".

Yeah it's worth a shot, because I'm not sure what else to try. :)  I'll try a few things after work and if it works out, I'll quickly send it over to James in time for the show.

I omit the goto on short jumps because it saves on cycle time and/or ROM space, and on a project like this, every tiny bit helps!

Edited by Sprybug
  • Like 1
Link to comment
Share on other sites

13 hours ago, Sprybug said:

Hey James, thanks for all your feedback and testing for me to let me know what was going on with my scan line count.

You're so welcome, any time! Love the game!!

 

13 hours ago, Sprybug said:

It's better now, but it still goes to 263 here and there.  I haven't seen it go above 263 since these changes. I'm really close to getting it within parameters.  A few more goes at those routines should do the trick.  I'll give that another look through this weekend, but for now it's better than it was, so here you go!  Hopefully, even with the occasional 263 line count, it'll play nice with your capture.

It's WAAAY better now and hardly noticeable! There's just a tiny jump here and there when it goes to 263 but it will look good for tonight.

 

There's a small issue with the sound when you have the music turned off or turn it off. If you turn off the music while it's playing it will hold those notes on both channels until another sound is played on that channel, like the jumping sound.  Also, with the sound off and you switch weapons it will have the same effect where the sound will stay held until another sound is triggered on that channel, like the jumping sound.

 

- James

Link to comment
Share on other sites

Thanks for letting me know about the music/sound effect toggling issues.  This is something I'm going to have to revisit on how I'm tackling it.  I don't have any flags/bits set for it and rely only on the switches themselves to toggle it, since I really didn't have any more bits to spare.  Well if there's no way to compare what it was before if you switch a toggle switch in the middle of the game, then I can't tell it make certain adjustments since it doesn't know if it was on/off before.  I may make it that you have to have them set at the beginning and then not switch it after if I am going to do this, or else it's going to do what you are experiencing.  So far now, just not mess with that and decide if you're going to have music and sound effects on or off.  I may end up having to remove this option in the future, if I can't find a few extra bits to reserve for this option.

  • Like 2
Link to comment
Share on other sites

Regarding James' comments about turning off music/sound on a channel, I discovered that I had to set both AUDV* and AUDC* registers to 0, rather than just the volume.

 

Now, your comment about not having any spare bits - I am wondering about your "Genesis_Controller" variable in the code snippets above - it looks like you are using the whole variable when you only need a single bit to indicate whether or not the controller was detected.

 

Also - is there any chance that you are using this variable elsewhere as well, and overwriting your Genesis detection in the process?

Link to comment
Share on other sites

17 minutes ago, Karl G said:

Regarding James' comments about turning off music/sound on a channel, I discovered that I had to set both AUDV* and AUDC* registers to 0, rather than just the volume.

 

Now, your comment about not having any spare bits - I am wondering about your "Genesis_Controller" variable in the code snippets above - it looks like you are using the whole variable when you only need a single bit to indicate whether or not the controller was detected.

 

Also - is there any chance that you are using this variable elsewhere as well, and overwriting your Genesis detection in the process?

The Genesis_Controller is a a defined bit g{7}.  I do have one bit currently that isn't being used that I called CP_Debounce for when you change your power, but I decided if you hold down on down and the jump button, to have it cycle through your powers instead of one at a time.  I might change this if people find that it changes too quickly and then decide to actually implement that bit to stop it from doing this.  For now, I just tap the button if I want to change it once and since the power change takes nearly a second to do, then it shouldn't be an issue if you just want to change it once.  It would free that bit up but I would need two.  One for the soundtrack toggle and one for the sound effect toggle.  I have a lot of defined bits, defined nibbles, and defined variables.  I pretty much used every avenue available to me to squeeze the most memory I could for this.  In fact for the boss battle, I ended up reusing variables that were used to keep track of the level information since I didn't need them anymore for the boss battle.  It allowed me to have the boss do more than the average enemy.  You'll notice this too in the other boss battles.  You'll see it in Ice Land where the ice will fall from the ceiling after the Boss lands a jump for example.  If those TIA sound registers were read/write capable, I could use them as a storage check.  Like for example, if I put a 5 in AUDC0, a value I never use for that, then I could use that as a way to make it act as a state, since otherwise it would never be that value, but unfortunately TIA registers are rather read or write.

I also tried your suggestion and it didn't change anything, I had another thing that I tried that was a shot in the dark that didn't work either.  That bit doesn't get changed either after it is set to 1 or 0 and the beginning.  I did a search through my entire code for both Genesis_Controller, g, and g{7} and nothing interacts with that bit other than the Genesis Controller routine.  I did at one point clear the g variable when you started a level, but I changed that thinking maybe that had something to do with it, but all it did was put you back in regular control mode, which James experienced.

  • Like 1
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...