Jump to content
JeremiahK

Nyan Cat Game - Work in Progress

Recommended Posts

I figured it out! The way I have the controls implemented made it a bit tricky, but it works perfectly now.

Every frame, it checks for a centered joystick. If that case is true, it sets the control bit, if not, it leaves it. Only when the cat changes rows is the control bit cleared.

I also fixed the cat tart, which was having the top scanline clipped off on all rows but the bottom. I won't post the bin, but I do have it on GitHub if you want to try it out.

Share this post


Link to post
Share on other sites

Big update today!

 

I am in the process of re-organizing the project into banks, and since I was tired of working on the game itself, I decided to take a try at coding the menu. I want the menu to have a nice big animated Nyan Cat rendered as accurately as possible. Above the cat will be displayed the players' scores, alternating between player 1 and player 2, and below the cat will be a scrollable menu. Each player will be able to select a cat color, and the cat will be colored according to which player's score is being displayed. (NTSC only for now, but for anyone wondering, I am intending on making this game truly PAL/50 compatible with the flip of a switch, including gameplay timing.)

 

Today, after weeks of many many re-writes, I finally finished the kernel for drawing the cat. Well, pretty much. I just have to work on the rainbow a bit so it doesn't bounce with the cat, and there are a couple minor touch-ups to do, but the hardest part is done. I am quite literally pushing the Atari to the edge of the abyss with this kernel, and all the usable objects are needed (Press Alt + comma in Stella to see how I am using the objects). It's technically not pixel-perfect, I rounded out the paws because it saves a lot of ROM and there are two very minor but practically undetectable flaws.

 

The code is not uploaded to github yet, but I will upload it as soon as I add my old code to the new code in a better structured way. Then I think I'll work on the gameplay again, since this long break has given me ideas of how to implement the random object generation.

 

The .bin is attached! I cut it to 4K since I am only using 1 bank for this.

 

Edit: You can use the COLOR/BW switch to pause the animation

nyancat.bin

Edited by JeremiahK
  • Like 10

Share this post


Link to post
Share on other sites

Woah, that's much better than my old attempt from 2011 :) Try hitting HMOVE every line if you can, so the black comb become less of an issue. With TIAtracker now existing the music could probably be improved too

Share this post


Link to post
Share on other sites

Thank you!

 

Unfortunately, there is no way of getting rid of the black comb. I am using the time between HMOVE's to set 4 objects' move registers before the next HMOVE, all while drawing the kernel, and there isn't enough time to do anything else. (Unless I can think of a way to preload everything into RAM. Edit: scratch that, I took a look, and that is what I am already doing.) I do have plans for the music, though!

Edited by JeremiahK

Share this post


Link to post
Share on other sites

So, a little update.

 

I discovered graphical glitches on two of my systems. In my big nyancat display, I am drawing an asymmetrical playfield, but instead of writing the 2nd PF2 data at cycle 48, I have to do it at 50. This happens right at the start of a new playfield block. Apparently, not all systems handle this correctly, as one of my 4-switch consoles, after warming up for a few seconds, failed to update PF2 until the next block.

I have provided a test .bin for this, which draws a purple playfield grid, and should fill in only 9 blocks of the playfield with yellow. If 10 blocks are filled in, switching the color switch back and forth should go between 10 and 9 blocks filled in with yellow. (It updates PF2 at cycle 50 in color mode and 49 in b/w mode.) I will post a video below showing this.

 

I was able to fix this, but now I have run into another problem with my light-sixer. It randomly flashes areas of the cat that should be colored with the playfield instead colored with the background. It's hard to see in the video, but basically there are just blocks of grey in the rainbow, cat tart body, and background that flash on and off for no apparent reason.

 

I might try to break this kernel down like I did before to figure out what is wrong, but I don't know for sure if there might just be something wrong with my system. I would appreciate it if some of you could test this on all your systems to see what is displayed versus Stella. Especially if you have a light-sixer. If this turns out to be a widespread issue, I will see what I can do.

 

The left difficulty switch pauses the cat animation, and the right one pauses the cat + rainbow animation. You can use the color switch to select NTSC or PAL mode, so if you have a PAL system, you can test it too!

 

(In case there is any confusion, please test "nyancat.bin".

"cycle_50_PF2_write_glitch_test.bin" is just included so you can test it out if you want to.)

 

nyancat.bin

cycle_50_PF2_write_glitch_test.bin

Edited by JeremiahK

Share this post


Link to post
Share on other sites

After looking at the code and doing some testing, I have discovered that the problem is not in the kernel. The frame's PF graphics are stored in RAM, and somehow the code that pushes the graphics into RAM is not working as expected in the light-sixer. I will look deeper into this later.

Edited by JeremiahK

Share this post


Link to post
Share on other sites

All right, so since the playfield was acting up, I decided to test Adventure, since it uses playfield graphics extensively. And the game doesn't work at all. So it seems I have another light-sixer on my hands that needs to be repaired. Not exactly what I wanted, but thankfully I can leave my code alone now.

Edited by JeremiahK

Share this post


Link to post
Share on other sites

It's been a long time...

 

This week is my vacation from work, my first since getting my job almost 18 months ago.  I have been slowly working on this project when I have the chance, but I am going to be spending a lot of time on it this week.  I didn't feel the need to post an update until now.

 

I have finished the music engine for the game, as well as the intro music.  I took a lot of time to make sure the tempo was correct, and it works in both 50Hz and 60Hz.  Holding Game Reset on startup will force 50Hz mode, and the COLOR/BW switch selects the color palette.  This will allow for both PAL50 and PAL60.  (I cut the size to 4K for this demo, so if you press Game Select, it restarts.  Stella doesn't seem to be auto-detecting PAL properly, but the timing works on a real system.)  I only need minor tweaks from here, such as syncing the animation to the music.  And allowing to mute the sound with the difficulty switches.

 

The plan is to have the animated stars scrolling past until you press fire, which is when the game detects if you are using a joystick or paddle.  Initially, the game title will be displayed above the cat, and after a game is played, score information will be displayed instead.  Below the cat will be a scrolling menu, with 3 lines visible at a time.  I have already finished the code for displaying the text, I just need to make it do what I want... 😎

nyancat.bin

  • Like 9

Share this post


Link to post
Share on other sites
On 7/15/2019 at 2:24 AM, JeremiahK said:

Holding Game Reset on startup will force 50Hz mode, and the COLOR/BW switch selects the color palette.  This will allow for both PAL50 and PAL60.  (I cut the size to 4K for this demo, so if you press Game Select, it restarts.  Stella doesn't seem to be auto-detecting PAL properly, but the timing works on a real system.)

Confirmed.  Holding 'reset' on startup is giving PAL scanline patterns, but Stella is still interpreting this as NTSC.

 

I have created a Stella Github issue: https://github.com/stella-emu/stella/issues/501

 

In the future, please report all bugs in Stella to us, so we can attempt to fix them.  I just happened upon this post; otherwise we would never know about this.

  • Like 2
  • Thanks 1

Share this post


Link to post
Share on other sites

Excellent!  Thank you stephana.  I had thought it was some sort of bug in my code, because I think it had worked in an earlier version awhile back.

Share this post


Link to post
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.

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