Jump to content

Blades of the Lotus - Platformer #NESDevCompo


Recommended Posts


Welcome to the devlog of our game "Blades of the Lotus", a side-scrolling ninja platformer!


I'm working with Abdel Oliveira (https://twitter.com/abdeloliveira80) to help bring his abandoned PC project to where it really belongs... on the NES!

Check out the original PC demo:

Obviously the game will need to evolve for both the system, the controller, and just my own design sensibilities, but you can see there is a really great core in that PC demo to work from!

Development Details:

  • Targets Mapper 28 (Action 53) directly, rather than one of the supported discrete mappers.
  • 64KB PRG-ROM + CHR-RAM (CHR bank swapping for background animation).
  • Written in C (CC65) using NESLib and NESDoug libraries, with support from Norill for Action53 C APIs.
  • Famitone5 sound engine (also by nesdoug)

Dev Log Updates:

I'll be doing more regular updates on this itch thread, and on twitter. I'll update this thread periodically to summarize the current state of the game (every week or so).

Thanks for checking out the game!

Edited by matthughson
  • Like 3
  • Wow! 1
  • Love 2
Link to comment
Share on other sites

Status Update: May 5th, 2022

It's been a little under a week since I started the project, and things are progressing great!

I started by porting over my animation system from Witch n' Wiz as well as some basic title drawing routines.


One part that I was a little nervous about with this project is scrolling across multiple nametables. I've never done it in any of my shipped projects, and only briefly experimented with it on a prototype last year, and not very successfully. So I wanted to tackle that early and make sure it was working before I started layering on more parts. Luckily it went very smooth, and I had it up and running quite quickly.



Part of what tripped me up with scrolling when I was experimenting with it last year, was collision detection. I think I was way over complicating it last time. This time, I took a very simple approach of doing all calculations in "world space", and only the rendering code worries about nametables and camera offsets. This went great, and I had collisions working in no time!


A big piece of any action game is the ability to die! So I added death when falling in pits, as well as "kill" tiles like these spikes. With this, I also implemented a title screen, game over screen, and the ability to transition between them all.


You may have noticed in the previous gifs that my character sprites were looping around when the player presses against the edge of the screen. For my final task this week I cleaned up that behavior, as well as ensuring that the player never collides with "random data" outside the play area.

To avoid wrapping sprites on the top and bottom, I simply detect if the meta-sprite is 16 pixels or more above the top of the screen. Since the resolution is 240 high, that gives me 16 pixels of buffer to go into before the sprite wraps around. That is enough in my case.

For the left and right side of the screen I used the PPU feature to disable the left most column of 8 pixels, and then make sure the player can go into that area, which prevents them from reaching a point where the sprites will wrap.


As I write this I am realizing I don't need to disable the background layer (only the sprite layer) which should look even better!

  • Like 3
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...