Ninja Platformers: Small test games

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Ninja Platformers: Small test games
by on (#135647)
Just thought I would rather post them here instead of letting them die in my hard drive without them ever seeing the light of day. :o

These are small test games I made a while back, when learning to program for the NES. They kind of show my progress in learning better ways to program a game engine on 6502.

Ninja1
Download link
Image
My first attempt at making a platformer. The idea is that this little cute ninja found a secret path through the sewers, that would eventually lead him to the inside of a corrupt shogun's palace, where he would fight to save his people.

- Object engine is based on a dynamic table that accomodates newly created instances, which is something that I found to be nice, and stuck with me to the later games.
- Stage engine based on fixed-screen rooms, since I hadn't given much thought about a scrolling engine.
- Player starts at the top of the screen for whatever reason. You can attack with the B Button. Lots of enemies on the first screen, as a kind of stress test. There is a room of an even older version to the left. Other rooms are empty.

Ninja2
Download link
Image
My second attempt. I finally understood how to program a scrolling level: dealing with column tile loading and updating nametables (figuring out how to update the tile attribute table dynamically was quite a chore).
- Metatile engine actually uses meta-meta-tiles (they describe entire elements, such as those pink walls with the little roofs).
- Object engine is still the same, but dynamically loading enemies that enter the camera view, and destroying those that leave.
- Sprite engine is not perfect, as clipping sprites at the borders doesn't work very well, but it already implements a kind of sprite multiplexing.
- Next to the start of the game, lots of enemies come raining down, as a stress test. At the end of the level, a more challenging enemy is found (but unfortunately cannot be defeated). You can perform a cool attack with the B Button, as well as climb walls! There is some leftover level tests to the right. If you go through the rightmost border (after 16 screens), crazy things happen.
- Also, crazy things happen when you manage to trigger object overflow (the later challenging enemies use double the data space of the regular enemies, and thus trigger overflow more easily -- of course, due to my faulty engine :) ), like duplicating the player character and confusing the camera controller.

Ninja3
Download link
ImageImageImage
My latest attempt. Features updated graphics, a scrolling camera engine, fade-in/out effects, and index-based stage loading capabilities. Unfortunately, there is no sound and no enemies nor attacks you can perform. You can still climb walls, though. If you exit your house, there is a climb test area after the forest. Also, jumping height is proportional to the time you hold the A Button.
- If you keep pressing the B Button, the next stage index is immediately loaded, but most are from garbage data, which I find really cool. (Some stages might have a totally black or gray palette, but the game should not hang)
- Sprite engine is pixel-perfect at clipping sprites at the borders, which you can check with the dummy ninja at the forest.
- Collision engine has some quirks and bugs at specific spots, which is kind of a nice secret to find out.


So, this is it. I really had fun programming these little games, and I felt that people should see them. What good are (*small* *test*) games that people can't play?
Re: Ninja Platformers: Small test games
by on (#135652)
These are impressive, I actually like the graphics here! You should polish these up (perhaps combine aspects) and either enter them in the NESDev competition or include it in the Action 53 project!
Re: Ninja Platformers: Small test games
by on (#135661)
Hey these are really neat.
Re: Ninja Platformers: Small test games
by on (#135666)
rainwarrior wrote:
Hey these are really neat.


I agree, these are some cool demos.
Re: Ninja Platformers: Small test games
by on (#135667)
Know what I think these need? Level format docs.
Re: Ninja Platformers: Small test games
by on (#135672)
tepples wrote:
Level format docs.

Do you plan on hacking the games?
Re: Ninja Platformers: Small test games
by on (#135673)
I personally don't, but it might give hackers something to play with other than SMB1 until I resume work on my own scrolling project, which I plan to do after the release of Double Action 53.
Re: Ninja Platformers: Small test games
by on (#135674)
Cool tests.
Re: Ninja Platformers: Small test games
by on (#135687)
Not much to add, but these are indeed pretty neat.
Re: Ninja Platformers: Small test games
by on (#135710)
I didn't share any opinions before because I was at work and couldn't run the ROMs, but now that I have: Pretty cool!

Graphics are simplistic, but appealing. Some of the music is really catchy! I would really like to see a more complete game made out of these.
Re: Ninja Platformers: Small test games
by on (#135722)
Thanks everyone for the feedback! :o

I would also like this to become a full game! However, I can only work on it on my spare time now, so it may take long. Should I make more progress on this, I would love to see it on a cartridge and play it on a real console! I've chosen MMC1 as the mapper, because it has CHR and PRG bank switching, which is nice if I wanted to expand the game. I guess it is cheap and easy to produce an MMC1 cart?

My music is nice, I guess. I've only been formally introduced to music recently, and while I think these old pieces make some musical sense, I feel there's something missing to me, in that I can't really make better/more complex ones. Oooooh, what's the secret to you, developers who write awesome music??
Re: Ninja Platformers: Small test games
by on (#135723)
HLorenzi wrote:
I've chosen MMC1 as the mapper, because it has CHR and PRG bank switching, which is nice if I wanted to expand the game. I guess it is cheap and easy to produce an MMC1 cart?

If you know your way around CPLD programming, yes, otherwise you'll have to rely on other people supplying pre-programmed CPLDs, or parts from original Nintendo cartridges.

If you don't need the mirroring control or the PRG-RAM, it would be safer to go with a simple discrete mapper, which can be easily built from off-the-shelf parts. UxROM or BxROM are pretty popular among homebrewers, and the CHR-RAM even allows for more versatile graphics expansion as long as you don't need to quickly (i.e. from one frame to the next or within the same frame) change a large number of tiles at once. With CHR-RAM you can realistically update 8 tiles or so per frame and still have time left for updating sprites, name tables, palettes and so on. If you disable rendering, you can update the whole 8KB of CHR in a couple of frames.
Re: Ninja Platformers: Small test games
by on (#135725)
HLorenzi wrote:
I guess it is cheap and easy to produce an MMC1 cart?
It is easy, but unless you're planning on using the ability to bank CHR in two chunks, you might be better served using ANROM, GNROM, or UNROM.
Re: Ninja Platformers: Small test games
by on (#135900)
Reminds me a bit visually of Ninja-[Jajamaru]-kun; and the ones in GCCX:Arino's Challenge.