Blade Story - my Zelda clone using MMC5

A place where you can keep others updated about your NES-related projects through screenshots, videos or information in general.

Moderator: Moderators

User avatar
Banshaku
Posts: 2417
Joined: Tue Jun 24, 2008 8:38 pm
Location: Japan
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Banshaku »

I don't want to be rude but I tried you demo and while the music was promising and felt very "nessish" I don't see in it's current state why you would require the MMC5 mapper. Are you over-engineering your project by any chance? I didn't follow any nes thread recently but I felt I had to comment on this one since I often over-engineered my project in the past so I tought I should comment on it ^-^;;;

Maybe you should try with a more common mapper then switch to MMC5 only if you requires it. Not many games really requires such level of mapper and I'm sure other people on nesdev will tell you the same thing.

Good luck on your project.
User avatar
Dreamwriter
Posts: 35
Joined: Tue Jun 02, 2015 9:17 pm
Location: Florida
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Dreamwriter »

You're right that in its current state MMC5 is mostly being wasted (except for the random 8x8 tile palette entry here and there). But realize that everything you see and hear is eventually going to be replaced with professional quality art and music, what's there is my placeholder programmer art.

Also, I like the MMC5, it was fun to figure out its quirks and stuff. By now the engine and pipeline are already set up for multiple char banks and whatnot, and I've used the simple scanline counter (though not in the current demo)
User avatar
Dreamwriter
Posts: 35
Joined: Tue Jun 02, 2015 9:17 pm
Location: Florida
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Dreamwriter »

Little update: I now have the player walking back and forth between two screens, each with their own tileset if needed (well, I mean tiles in a different bank, though the only real difference is in my extended atrribute table, so I could mix and match if I wanted). And I wrote a full BG collision system going on rather than just basing collisions on which visual tile is in a spot (it involves creating a map by overwriting the visual map with number-tiles representing the different collision types). I need to organize my screen loading code, though, I didn't do a good enough job making it generic for any screen when I first setup screen drawing.

Image

Next up after the organization: a HUD at the top of the screen with its own palette set.
User avatar
Dreamwriter
Posts: 35
Joined: Tue Jun 02, 2015 9:17 pm
Location: Florida
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Dreamwriter »

Got my HUD area at the top, with its own set of 4 BG palette entries being reloaded, for a total of 5 BG palettes total on the screen! It's got a little bit of corruption underneath due to trying to fix the scroll after disabling the PPU, but the palette reloading is all done in the Hblank area off the screen.

Image

You can try it out here if you like:
http://www.dreamzle.com/blade/bladestory_7_23.nes

You can walk to the second screen if you go south, to return to the top screen you must walk north through the HUD around the same region, because I didn't draw the placeholder test maps taking a HUD into account.

I think next I'll do a simple animation of the character walking, and then give her a sword she can swing.
User avatar
rainwarrior
Posts: 8734
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by rainwarrior »

How come one of the first things you've implemented is a 5th palette for the HUD, but you don't even have background art that needs it yet? (Plenty of games are quite content to have a single "reserved" palette and work with only 3. I'm just curious why this feature became such a priority for you?)

Some suggestions:

1. Generally at least the top and bottom 8 lines of the picture aren't visible on NTSC (sometimes a few more). You might want to lower the top of your HUD by 8 or maybe 16 pixels to make sure it's visible?
2. You should also hide sprites until the HUD is finished rendering so that the player and other sprites go under it, instead of on top. If you need sprites on for a sprite-0 test, alternatively you could prevent sprites on the bottom 8 pixels of the HUD by placing 8 sprites there with high priority. (Any sprites above the bottom 8 pixels, you can just eliminate by checking their Y coordinate.)
3. During screen transitions your music gets paused noticeably. You should leave NMI running and play your music there, so that it interrupts the screen rebuild to keep the music in time.
4. Don't re-enable rendering immediately when you're done rebuilding the screen. Wait until the next NMI to write to $2001, so that you can set up the scroll correctly, or your first frame will be misaligned every time.
5. Collision should halt the player on each axis separately. If I'm touching a tree vertically, holding diagonally should still let me move horizontally. The lack of diagonal motion against a blocker has a rather frustrating feel.
6. Walking north from the southern screen, you can get stuck inside the rock.
7. Reset does not clear sprites, and the title screen does not render correctly afterward. (Are you properly blanking memory on reset, or relying on emulators that set it to zero?)
8. Consider a button press to advance the "once upon a time" screen. This is very tedious to wait through, especially when trying to test.
Last edited by rainwarrior on Thu Jul 23, 2015 12:23 am, edited 4 times in total.
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by thefox »

Some more that I noticed when trying out the ROM in NDX:

1) Don't use $0D for black, it can cause problems with some TVs.
2) Make sure to initialize your sprites before doing OAM DMA:
unitialized-sprites.png
unitialized-sprites.png (34.64 KiB) Viewed 4230 times
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
User avatar
Dreamwriter
Posts: 35
Joined: Tue Jun 02, 2015 9:17 pm
Location: Florida
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Dreamwriter »

Thanks for the great suggestions!
rainwarrior wrote:How come one of the first things you've implemented is a 5th palette for the HUD, but you don't even have background art that needs it yet? (Plenty of games are quite content to have a single "reserved" palette and work with only 3. I'm just curious why this feature became such a priority for you?)
Well, I don't have any background art at all yet, really - I'm currently not planning on being the artist on this project, the art currently in the game is all programmer-art I created primarily for testing the engine. When I do get an artist, I want them to have as few limitations as possible, because these days great pixel-artists skilled at working with limited palettes are a rarity, so the more I can help them out from the start, the better. It's also one of the big reasons for using MMC5, being able to use as many tiles per map as the artist desires, and not having to worry about keeping palettes on 16x16 boundaries.

And if I do end up doing all the art myself, I *definitely* need all the help I can get - heck, I dedicated an entire palette to a rock!

Also, as an oldschool Gameboy programmer I love pushing systems to do more than they were really designed to do, it's a fun challenge. I had a lot of fun in this case figuring out the timing of getting the palette reloading with minimal corruption (now I just need to get rid of the scroll corruption on the bottom edge).
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Blade Story - my Zelda clone using MMC5

Post by tokumaru »

Dreamwriter wrote:I had a lot of fun in this case figuring out the timing of getting the palette reloading with minimal corruption (now I just need to get rid of the scroll corruption on the bottom edge).
It's worth noting that this is the kind of thing you should test on real hardware. These fine timing details often vary a lot from one emulator to another, so it's better to calibrate them according to the real hardware.

That said, the mid-screen scroll change should be easier to get right than the palette change. Since you have rendering disabled for the palette update already, using the $2006/5/5/6 combo and enabling rendering near the start of the next HBlank should do the trick.
Nitroman
Posts: 20
Joined: Wed Feb 25, 2015 1:17 pm

Re: Blade Story - my Zelda clone using MMC5

Post by Nitroman »

Walking on the status bar. Hi.
Image
User avatar
dougeff
Posts: 3079
Joined: Fri May 08, 2015 7:17 pm

Re: Blade Story - my Zelda clone using MMC5

Post by dougeff »

It looks to me like you room data is still full screen even though the HUD is covering it. Start designing the rooms shorter. And you might want to compress your data. This is just from loading room 1. Look at all those 01's. It will save alot of ROM space to compress this and load it somewhere in the RAM as collision info.
Attachments
Blade.gif
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Blade Story - my Zelda clone using MMC5

Post by tokumaru »

dougeff wrote:And you might want to compress your data.
At least start using metatiles (which are a form of compression), because raw screens will use up all your ROM pretty quickly.
User avatar
Dreamwriter
Posts: 35
Joined: Tue Jun 02, 2015 9:17 pm
Location: Florida
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Dreamwriter »

It's worse than you may think - each screen is composed of the basic nametable map, the extended attributes map, and a collision map, all three the size of the full screen (though soon minus the size of the HUD). Plus the 4 palettes. Don't worry, I plan on eventually implementing compression, probably PUcrunch to be specific. I just want to finalize the BG creation pipeline first (I thought I had, but it's kind-of a pain).
User avatar
Dreamwriter
Posts: 35
Joined: Tue Jun 02, 2015 9:17 pm
Location: Florida
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Dreamwriter »

After each new feature I go in and solidify and clean up the code, this time I also implemented many of your suggestions too so I posted the new build if anyone's interested:

http://www.dreamzle.com/blade/bladestory_7_24.nes
User avatar
Dreamwriter
Posts: 35
Joined: Tue Jun 02, 2015 9:17 pm
Location: Florida
Contact:

Re: Blade Story - my Zelda clone using MMC5

Post by Dreamwriter »

New art style - looks less RPG and more Zelda. Maybe a bit too much Zelda...
bladestory.png
bladestory.png (3.73 KiB) Viewed 4048 times
Erockbrox
Posts: 397
Joined: Sun Nov 23, 2014 12:16 pm

Re: Blade Story - my Zelda clone using MMC5

Post by Erockbrox »

love the "programmer art" :)
Post Reply