Jump to content
IGNORED

My 1st Homebrew - Mr. Yo-Yo, WIP


DaveM

Recommended Posts

Hi David,

 

On 2/21/2020 at 5:40 PM, DaveM said:

For some reason, I seem to be having some scanline issues again.  Every now and then, it'll jump to 263 scanlines, and I have no idea why.  I've kinda hit a bit of a wall with this for now, and on top of that, I've caught one helluva nasty bug.  Lately, I'm either coughing my head off, or the meds have kicked in and my head's in a complete fog.  So I'm in no mood to start debugging that stuff right now.  If anyone wants to have a look at the code and figure it out, or point me in the right direction, I'd appreciate it.  If not, I'm sure I'll get to it eventually.

 

I haven't been following and keeping up as I planned. This still looks promising. Sorry to read you were under the weather. Hoping you were able to shake the sickness and continue with this.

Link to comment
Share on other sites

6 minutes ago, DEBRO said:

Hi David,

 

 

I haven't been following and keeping up as I planned. This still looks promising. Sorry to read you were under the weather. Hoping you were able to shake the sickness and continue with this.

Yes, I'm feeling much better, thanks for asking!

 

I took some time off from working on the game in order to recover and take care of some other things, but I added a few things a couple weeks ago (just didn't release an update, since the changes were so minor), and started working again on it last night.  I'm currently working on re-writing my audio player routine so that I'm not using so much space to store my audio data (I freed up some 250 bytes last night, and I'm not done yet), then I'll be adding in the rest of the audio (the music for the intermission, mostly).  I'm also making a few other minor adjustments to the game.  I should have my next update ready by end of next week, if all goes well.

 

Once that's set, then I'll turn my attention to the kernel.  I'm planning on taking time to go through the code of those other games and see what I figure out.  I'll start by taking a crack at it myself, and when that doesn't work, I'm sure I'll be reaching out for some help.

 

I have a busy month and a half or so coming up with some other things I'm involved with, so I won't quite have as much time as I've had to work on this, but I am continuing with it and would like to finish it off.  

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

It's been a while, but I finally have a new update!  Here's what's new:

  • A new audio alert plays when the bonus gem shows up in the bonus cave.  Previously, the two-tone notely alert played, but I felt the game needed something more distinctive when the gem showed up.  Every now and then, the alert won't play, but I can't figure out why.  I've added this to my "known issues" list.
  • Audio has been added to the intermission.  This completes the audio for the game.
  • The lives remaining icon will now show a sad face when the Mr. Yo-Yo animation is showing a sad face (during the death sequence and while the player is stunned).  Previously, it showed a sad face when the player had no lives in reserve.  Not sure anyone noticed that, and I found it to be a bit misleading.  That seemed to indicate the game was over, when it wasn't.  So now the icon mimics the player animation.
  • While playing the game, I noticed the Snipper is a real pain.  He's the game's signature enemy, so I didn't want to remove him, but he seems to have too much of an advantage.  Over the past few weeks, I tried numerous things to offset this advantage, and when I couldn't get those to work, I settled on what I call the "Snipper Sniper Bonus."  It works like this - shoot 3 Snippers in any single cave, and the Snippers will no longer spawn in that cave.  Once triggered, if the game tries to spawn a Snipper, it will spawn a coin or power-up instead.  There is no visual or audio cue to signal when you accomplished this.  You'll just notice there's no more Snippers, and you're seeing more coins.  The bonus lasts for the duration of that single cave only, and resets upon entering a new cave.  It also resets if you lose a life.  If you die, you must shoot another 3 Snippers to get the bonus.  This new bonus comes in very handy in the orange caves when you need to shoot 3 enemies to trigger a notely to appear, and then you have to make 8 rescues to clear the cave.  Having no Snippers around is a big plus!
  • As I've been working on the game, I came to the realization that the way I stored the audio data is about as inefficient as I could possibly do it.  I had pretty much filled up my 2nd bank with audio data.  So for this release, I changed much of that and freed up a good 300 bytes or so.  I've combined the two control arrays into one, and did the same with the volume arrays, storing data for the two audio channels into one byte, rather than two.  The trade off is that I had to add code to split these values into the values for the two channels, but that doesn't seem to cause any problems.
  • I reorganized the data arrays in the 2nd bank and added a few aligns here and there, which seems to help with the scanline issues I was having.  It's not completely cleared up, but it's so much better than what it was.  I was just crossing too many pages reading those huge arrays, so cleaning that up helped a lot.  I think once the kernel is rewritten, that will allow me to rewrite the collision detection, which in turn, will reduce cycles, and that should take care of the scanline issue.  So at the moment, I'm not concerned about the occasional jumps to 263 scanlines.

Next up is that kernel.  I'm going to start looking through the code of the various games that Dennis suggested, and see what I can do.  I'll reach out when I need help.  I tried adding a few other things to the game, but they didn't work out so well, so I kept them out.  I think I'm getting to the point where I'm overthinking some things a bit, and I need to stop tweaking the game and just go with what I got.  Otherwise, I could be tweaking this thing for years and never get it done.  It's time to start wrapping things up.

 

For better or for worse, everything else I'm involved with outside of work has been cancelled, so I can turn my full attention back to Mr. Yo-Yo.  It's a bit of a bummer, as I had a few weekend trips coming up I was really looking forward to, but it is what it is.  I'm healthy, I still have my job, I'm now working from home, and I'm thankful for that.  Time to plow ahead with this game, get it wrapped up, then hopefully start work on my next game.  I've got it all planned out, and I'm excited to get started on it, but I want to finish this one first.

 

Anyway, hope you enjoy the update!  As always, any and all feedback is appreciated!  Thanks!

mr_yo_yo 0.20.a mr_yo_yo.0.20.bin

  • Like 2
Link to comment
Share on other sites

We'll be featuring Mr. Yo-Yo LIVE on tomorrow's (Wednesday) ZeroPage Homebrew stream 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
  • Like 1
Link to comment
Share on other sites

On 3/24/2020 at 8:16 PM, ZeroPage Homebrew said:

We'll be featuring Mr. Yo-Yo LIVE on tomorrow's (Wednesday) ZeroPage Homebrew stream on Twitch at 6PM PT | 9PM ET | 2AM GMT! Hope everyone can watch!

 

Thanks for having my game on your show again!  Glad I was able to participate in the chat, that was fun.  I think if it gets on the show again, I'll put together a strategy guide for you so you can get further in the game. ?   In the meantime, I'm guessing you're not the only one who's having problems getting deep into the game, so I've hacked my own game and attached a new rom.

 

This hack starts you at Level 3, with 9 lives in reserve.  This gives you all the enemies right out of the gate, including the red snippers which didn't make it on the show.  

 

Anyway, great feedback from everyone once again, not only those on screen, but from the chat as well.  Once I get the kernel rewritten, I'm going to have to try Andrew Davie's suggestion about getting the enemies to slide off the screen.

 

Oh yeah, shoot the targets in the bonus round, don't collect them!  ?

mr_yo_yo_Lvl3.bin

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

OK, I'm waving the white flag here.

 

I know it's possible for this game to have a flicker-less kernel.  At least that's what I keep being told.  So over the past couple weeks, I've gone through at least a dozen disassemblies, trying to figure out how I can write such a kernel for Mr. Yo-Yo, and for the life of me, I can't figure it out.  I'm just not at that level yet as an Atari programmer.  I can't yet look at another game's kernel and figure out how it works.

 

So, I'm asking for help.  Could anyone please explain to me how a flicker-less kernel for my game would work?  Maybe walk me through some code and work with me a bit as I try to implement a new kernel into this game?  

 

I'm thrilled (and honestly, quite surprised) I've gotten this far with the game so far, but I'm at a point where I know I can't go any further without some assistance.

 

Thanks!

Link to comment
Share on other sites

  • 3 weeks later...

It's been a while since the last update, so to maintain the interest in the game, here's a non-update.

 

I'm still working on the game.  The main focus is on re-writing the kernel.  I've enlisted some help there, so I'm hopeful we'll have something at some point that eliminates the flicker.  But, just in case that doesn't happen, I'm also working on some of the other issues, most notably the jumps in scanline counts the game occasionally has.  I've had some success on that front, but I don't want to post anything yet.  I won't post any more updates with the current kernel unless it's determined that a new kernel just won't work and we're stuck with what I've got.

 

But, with the game as it is, here's a new high score to shoot for... 435,000.  I'm really curious as to how others have done with the game, so feel free to share your high scores.

 

Hope to have an update soon, and thanks to everyone who's downloaded the game and shown an interest in it!

20200423_200817.jpg

  • Like 2
Link to comment
Share on other sites

  • 2 months later...
  • 1 month later...

We're still trying to work out the last few kinks of the new kernel.  Since I'm still very much new at this, Dennis Debro has stepped up to write the new kernel, and has done an absolutely fantastic job.  So while he's perfecting the kernel, I took the weekend to design a menu for the game, and have attached the results. 

 

Please note that this is only the menu.  The game itself is not a part of this ROM.  So when you move down to Start and hit the button, NOTHING will happen.  :)

 

The game options are quite simple.  1 player, 2 player, or 2 player Co-Op, where one player will control the movement and the other will fire the lasers.  Then you'll also be able to select your starting level.

 

Pretty simple.  The toughest part was coming up with a color that I liked for Player 2, as I've only had Mr. Yo-Yo in his yellowish-orange color up until now, so every other color just looked weird.  I think I found something I could live with though.

 

As always, any feedback is appreciated!

MYY_Menu.a MYY_Menu.bin

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

Hi there,

 

On 9/7/2020 at 5:22 PM, DaveM said:

Since I'm still very much new at this, Dennis Debro has stepped up to write the new kernel

Guess I need to get working :lol:

 

I haven't forgotten about you David. I should be back on it (off and on) next week. Sorry for the delay.

  • Like 2
Link to comment
Share on other sites

7 hours ago, DEBRO said:

Hi there,

 

Guess I need to get working :lol:

 

I haven't forgotten about you David. I should be back on it (off and on) next week. Sorry for the delay.

No problem!  Thx for letting me know.  I've been playing with it over the past week, seeing if I can figure out more of it, testing out moving some stuff around or adding things here or there to see if I can fix the last few kinks by dumb luck.  No success so far, but I'll keep at it.

Link to comment
Share on other sites

  • 1 month later...

HELP!!!!

 

Where to start...  OK....  I'm stuck on this new kernel, and I'm hoping someone here can look at the code and help.  Dennis was helping with the game by writing the new kernel, and we've almost got it complete.  He's done a fabulous job so far, however, at this time, he's too busy now to continue with this, and with me not fully understanding what's going on quite yet, I'm stuck.  No work has been done on this since August, and without continuing to work on the game, I'm finding that I'm forgetting much of what I've learned up to this point, which makes it more and more difficult as time goes on to continue with the game.  There's a few problems that need to be resolved, but I don't know how to do it.  To mix a few metaphors, I've got a 4th and goal at the 1, and all I have to to is tap the ball into the cup, but I'm dead in the water.

 

I've attached the latest code we had.  There's just too much code to post here, so I've just attached the file.  I think Dennis did a great job in commenting the new kernel, but I'm still lost with it.  I apologize in advance if the indenting doesn't line up, that's a by-product of the editor that I'm using.  The new kernel separates the playfield into sections.  There's the section at the top, which uses the two player sprites and ball, but doesn't need missiles.  Then the next part of the playfield is broken up into four bands.  Each of these bands starts with four lines which are used to set up the enemy positions and whatnot within the band.  These four lines are only capable of drawing Player1 and the ball.  Then comes the larger "playable" part of the band where both player sprites, the ball, and missile1 are drawn.  The kernel loops through that four times, then draws the bottom section of the playfield, before drawing the scoreboard at the bottom.

 

So there's three main problems with what we have that I can't figure out how to correct:

 

  • In the top section, everything is shifted to the right by a couple pixels.
  • The missiles...  The player should be able to have two missiles in play at once.  With my original kernel, I accomplished this by flickering - alternating frames between the two missiles.  We're attempting to do that here, but the results are pretty bad.  For some reason, the flickering missile idea doesn't look as good.  There's large horizontal gaps between the times when each missile is drawn.  So the solution would be to either add the Missile0 object, which takes up more cycles than I think we have available, or figure out why the flickering missiles look so bad.  One guess I had is that Dennis changed the horizontal resolution a bit:
Quote

…I modified the horizontal positioning routine to give what I see as better resolution. The one you were using strobes RESPx to end at cycle 20. This gives a pixel range of 68 - 218 without spilling over to the next scan line. You could technically have a left most pixel of 54 with an horizontal position of 0 but I believe the sprites become visible at cycle 68. I modified the routine in the kernel to end the strobe at cycle 23. This gives a pixel range of 68 - 227.

My thought is that if the "normal" resolution was used instead, perhaps the flicker issue would fix itself, but I'm lost as to how to test that out.  I believe this was done so that we could add a vertical black bar to the left of the screen which would mask the objects as they went off the screen, so it would look as if they "slid" off the screen, rather than just disappear when they reached the edge.  I understand that this is the "proper" way to do things, and would like to include it, but if removing it makes the missiles work properly, then so be it. 

  • And finally, once those are fixed, some sort of collision detection needs to be added.  I've removed all the old collision detection, which I did by cycling through all the objects and checking their coordinates, since I was flickering everything and the various collision detection registers wouldn't have worked.  So, we want to switch to using those registers, as cycling through all the objects was taking up too much time and was one of the reasons the game would occasionally go over the scanline limit.

So that's where I'm at.  Anyone able to dive in and help out?

 

I do want to say that Dennis has done a fantastic job so far and has been more than patient with me and all my questions and lack of knowledge, and insistence on certain things being a certain way within the game.  I know he does want to continue on with the game's development, so I'm hoping he jumps back into it soon, but in the meantime, I would like to get on with things and try to finish this project.  But I'm stuck right now and don't know where to go from here.  I've actually got a local retro video game store interested in selling the game, so that's kinda driving me to try to finish this thing as quickly as I can.

 

Thanks!

mr_yo_yo 0.24.7.2.a

Link to comment
Share on other sites

At first glance, the game has some more problems:

  • when enabling developer options at startup, the display is freaking out. This indicates a bug in the startup code.
  • the game usually displays only 257 scanlines
  • when a round is done, the game looses sync
21 minutes ago, DaveM said:

In the top section, everything is shifted to the right by a couple pixels.

What do you mean exactly? I can only see that the smiley sprite is displayed one single pixel too far right, which results from its NUSIZ setting.

Link to comment
Share on other sites

8 minutes ago, Thomas Jentzsch said:

At first glance, the game has some more problems:

  • when enabling developer options at startup, the display is freaking out. This indicates a bug in the startup code.
  • the game usually displays only 257 scanlines
  • when a round is done, the game looses sync

What do you mean exactly? I can only see that the smiley sprite is displayed one single pixel too far right, which results from its NUSIZ setting.

Here's a couple screenshots showing the pixel shift I was referring to.  It happens quickly, so it's tough to catch if you're not looking for it, but as you can see, the yo-yo shifts one pixel as he moves into the lower zone.  Is the NUSIZ causing that?

 

I've got the game clocking at 262 lines constantly.  Not sure why you're only getting 257.  

 

What do you mean that it loses sync after the round is done?  That's not happening on my end.

Pixel shift example.jpg

Pixel shift example 2.jpg

Link to comment
Share on other sites

Yes, that's the single pixel shift at the top area. The position is 72, reflection is on. When moving down, the position switches between 71 and 73, depending on reflection. That explains the problem.

 

image.thumb.png.b07a802557cf321cd795ec6a74206c4f.png

 

My assembly is definitely running at 257 scanlines. Also note the uneven spacing of the score. 

 

Please post the ROM you have created from the source code above here. Then we can compare if there is a difference.

 

BTW: What emulator are you using there?

Edited by Thomas Jentzsch
Link to comment
Share on other sites

2 minutes ago, Thomas Jentzsch said:

 

My assembly is definitely running at 257 scanlines. Also note the uneven spacing of the score. 

 

Please post the ROM you have created from the source code above here. Then we can compare if there is a difference.

Here's the ROM I have.

 

The uneven scoreboard problem has existed for a long time.  It's another problem I can't figure out how to fix, but I'll get to it before the game is complete.  It's a very low priority on the "things to do" list.

mr_yo_yo.24.7.2.test.bin

Link to comment
Share on other sites

26 minutes ago, Thomas Jentzsch said:

Also your ROM is not coming from the source code you posted.

Just in case, I'm going to post these again.  I went back to the editor and downloaded the source and the ROM back-to-back, rather than use my archived files.  These were created within seconds of each other, so definitely the same code.

Mr_Yo-Yo_20201031.a Mr_Yo-Yo_20201031.bin

Link to comment
Share on other sites

1 hour ago, Thomas Jentzsch said:

This still cannot be the correct code. Are you sure the xmacro.h you posted is correct?

Dang it... Looks like it's wrong.  Sorry about that.  Try the attached.

 

9 hours ago, Thomas Jentzsch said:

BTW: What emulator are you using there?

Just noticed this question, and this may explain a few things.

 

I'm using the 8bitworkshop online editor here:

https://8bitworkshop.com/v3.6.0/?platform=vcs&file=examples%2Fhello.a

 

That editor has the xmacro built in, so I had to track it down myself.  It's a companion to Steven Hugg's book, which I've been using to learn this stuff.  Well, he's got the xmacro listed in the back of the book, with this link underneath: https://github.com/sehugg/dasm/blob/master/machines/atari2600/xmacro.h

 

So I went to that link, copied and pasted the text into a text file, and that was that.  As I look at the book now, the macro listed in the back of the book is different than what he has online.  So I transcribed the macro in the back of the book into the attached file.  Hopefully, it's correct now.

xmacro.h

Link to comment
Share on other sites

That did it. The scanline count is now 262 and stable.

17 hours ago, DaveM said:

And finally, once those are fixed, some sort of collision detection needs to be added.  I've removed all the old collision detection, which I did by cycling through all the objects and checking their coordinates, since I was flickering everything and the various collision detection registers wouldn't have worked.  So, we want to switch to using those registers, as cycling through all the objects was taking up too much time and was one of the reasons the game would occasionally go over the scanline limit.

Not sure if I get you here. You already realized that flickering objects can be missed by the hardware collision registers. Why would you want to revert back to it? Or are you sure that the hardware collisions will always trigger? And why don't you use your old code again then?

 

BTW: How do you play the game. Are there some brief instructions somewhere?

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...