Hi everyone
I have some questions for you, but thought I should introduce myself first as I am fairly new to NES programming. I've been a fan of the system since I was a kid in the 80s. It was the first system I had, and so it holds a special place for me. I took up collecting classic video games a few years ago, primarily for the NES. I currently have around 200 games for it now, most of which were found "in the wild". I have wanted to make an NES game for a long time now, but have only recently become motivated enough to give it a serious attempt. I have read most of the documents on this site, and studied the message board as well. I also have a good deal of programming experience, and plenty with 8-bit processors.
I've decided to go with a puzzle game for my first try. I figured that would be easiest for me to figure out, as for my game I wouldn't need any scrolling or physics that a platformer might need for example. Also, puzzle games are probably my favorite genre for the NES, so that helps keep me interested. I won't go into the details of the game idea at this point because it is in the very early stages, but think Lolo or Kickle Cubicle, and you will be on the right lines.
So other than some testing I have done to make sure my concept is feasible on the NES, I have been spending my time on my title screen. I thought that would be a good way to get the bugs out of my code for sprites, background, input, animation, and sound/music. I am pleased to say I have most of it working, save for sound effects and music. That is coming up later. I've made an avi for anyone that wants to take a look at what I have done so far. http://www.alpinecom.net/phackmann/nes/rottenroad.avi Please forgive the final walking sequence for the character, as I need to work on that some more.
So, if you have looked at it, I have the title fading in with a blue orb in it. The blue orb is a sprite, and I change the palette values to simulate going from black to blue. I found that the only way I could do it was to shut the PPU off, write to $3F00, and turn the PPU back on. If I didn't shut the PPU off, I found that my background flickered and jumped around, like something was being changed outside of the vblank interval. Is this the proper way to do this, or should I be able to update the palette during the vblank interval? I ask because I suspect there is something else going on that I am not aware of. Also, I have only tested my code in the emulators, not on real hardware.
My other question is that I have found that my code for my title screen animation has become rather long and ugly (I'm writing asm with CA65), and I wondered if there are any recommended tips for handling this sort of thing. For example, managing the starting, running, and stopping of a piece of the animation, making sure the timing is correct, dealing with successive frames of animating a sprite,etc. I realize this is a rather broad question, but I don't know how else to put it. Anything you can recommend on how you do it to keep the code more manageable would be greatly appreciated.
Thanks in advance for the help.
PH
I have some questions for you, but thought I should introduce myself first as I am fairly new to NES programming. I've been a fan of the system since I was a kid in the 80s. It was the first system I had, and so it holds a special place for me. I took up collecting classic video games a few years ago, primarily for the NES. I currently have around 200 games for it now, most of which were found "in the wild". I have wanted to make an NES game for a long time now, but have only recently become motivated enough to give it a serious attempt. I have read most of the documents on this site, and studied the message board as well. I also have a good deal of programming experience, and plenty with 8-bit processors.
I've decided to go with a puzzle game for my first try. I figured that would be easiest for me to figure out, as for my game I wouldn't need any scrolling or physics that a platformer might need for example. Also, puzzle games are probably my favorite genre for the NES, so that helps keep me interested. I won't go into the details of the game idea at this point because it is in the very early stages, but think Lolo or Kickle Cubicle, and you will be on the right lines.
So other than some testing I have done to make sure my concept is feasible on the NES, I have been spending my time on my title screen. I thought that would be a good way to get the bugs out of my code for sprites, background, input, animation, and sound/music. I am pleased to say I have most of it working, save for sound effects and music. That is coming up later. I've made an avi for anyone that wants to take a look at what I have done so far. http://www.alpinecom.net/phackmann/nes/rottenroad.avi Please forgive the final walking sequence for the character, as I need to work on that some more.
So, if you have looked at it, I have the title fading in with a blue orb in it. The blue orb is a sprite, and I change the palette values to simulate going from black to blue. I found that the only way I could do it was to shut the PPU off, write to $3F00, and turn the PPU back on. If I didn't shut the PPU off, I found that my background flickered and jumped around, like something was being changed outside of the vblank interval. Is this the proper way to do this, or should I be able to update the palette during the vblank interval? I ask because I suspect there is something else going on that I am not aware of. Also, I have only tested my code in the emulators, not on real hardware.
My other question is that I have found that my code for my title screen animation has become rather long and ugly (I'm writing asm with CA65), and I wondered if there are any recommended tips for handling this sort of thing. For example, managing the starting, running, and stopping of a piece of the animation, making sure the timing is correct, dealing with successive frames of animating a sprite,etc. I realize this is a rather broad question, but I don't know how else to put it. Anything you can recommend on how you do it to keep the code more manageable would be greatly appreciated.
Thanks in advance for the help.
PH