Hell x Machina

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

Moderator: Moderators

User avatar
wonder
Posts: 59
Joined: Sat Aug 31, 2019 2:12 pm
Contact:

Hell x Machina

Post by wonder »

Hell x Machina is my attempt at creating an NES game from scratch using the C programming language (with a little bit of ASM).

Latest demo: https://drive.google.com/file/d/16YEUSv ... JOAB0X20is
Programming, sprites and backgrounds: me
Music: Journey to Silius - Menu Theme (placeholder)

I'm still working on the engine itself and haven't quite decided of much of the existing assets I'm going to keep.
If anyone would like to collaborate on the artistic side or level-design, just let me know! :D

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
This is the original post from 2019:

Hi!

So here's something I've been working on for a year now. I don't have time to dive into the project's tech specs right now, but I'd like to share a small demo I've put together:

Image Image
platformer.nes
(256.02 KiB) Downloaded 327 times

There are 4 enemies on the map and no winning conditions (just don't die).
Enemy A.I. is not fully implemented yet.
Graphics are kind of placeholder(ish).
Music and SFX are just placeholders.

A - Jump / Drop player (debug mode)
B - Attack (release) / Drop balls (debug mode)
Start - Pause / Restart level
Select - Toggle debug mode
Dpad - Move the player / Cursor (debug mode)

What do you think?
Last edited by wonder on Mon Apr 12, 2021 1:10 pm, edited 13 times in total.
Image
User avatar
aa-dav
Posts: 220
Joined: Tue Apr 14, 2020 9:45 pm
Location: Russia

Re: My Untitled Platformer

Post by aa-dav »

As I wrote in previous topic: looks very cool!
But this image hangs up at startup (grey screen) in FCEUX. It works well in Mesen. However not wotking in FCEUX is bad sign. I bet there is some bug in startup code.
User avatar
wonder
Posts: 59
Joined: Sat Aug 31, 2019 2:12 pm
Contact:

Re: My Untitled Platformer

Post by wonder »

Thank you for testing!!! :) How’s the gameplay? Somewhat fun, I hope. :mrgreen:

If you get stuck, use debug mode to change the player position.

I always test on Nestopia and MESEN so that bug slipped through. I’ll try to figure it out. :)
Image
User avatar
aa-dav
Posts: 220
Joined: Tue Apr 14, 2020 9:45 pm
Location: Russia

Re: My Untitled Platformer

Post by aa-dav »

wonder wrote: Thu Jul 16, 2020 5:25 am Thank you for testing!!! :) How’s the gameplay? Somewhat fun, I hope. :mrgreen:

If you get stuck, use debug mode to change the player position.
Gameplay is very limited now, but existing things feel good.
I always test on Nestopia and MESEN so that bug slipped through. I’ll try to figure it out. :)
Another possible reason: inadequate header for image (sizes and aligns)
Pokun
Posts: 2681
Joined: Tue May 28, 2013 5:49 am
Location: Hokkaido, Japan

Re: My Untitled Platformer

Post by Pokun »

Both physics and graphics are pretty cool, despite being placeholder graphics. They are a little small though, but I guess you will make it bigger?

I think Mesen is more accurate than FCEUX, but if it doesn't work in FCEUX you are probably doing something weird, although not necessarily wrong.
User avatar
dougeff
Posts: 3079
Joined: Fri May 08, 2015 7:17 pm

Re: My Untitled Platformer

Post by dougeff »

Something is wrong with sizes.

The header says PRG ROM is 0x0A, which is invalid. It should be a power of 2. This is probably why it crashes in FCEUX, who's log say it thinks there are 16, not 10 PRG banks.

The total file size is 416k which is very weird.

If it has 16 banks of CHR (0x2000)
and 16 banks of PRG (0x4000)
and 0x10 bytes header.

That should be 0x60010 bytes (393232 bytes).

Change that to 8 banks of PRG (0x4000), that would be 0x40010 bytes (262160 bytes).
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
wonder
Posts: 59
Joined: Sat Aug 31, 2019 2:12 pm
Contact:

Re: My Untitled Platformer

Post by wonder »

Pokun wrote: Thu Jul 16, 2020 8:38 am Both physics and graphics are pretty cool, despite being placeholder graphics. They are a little small though, but I guess you will make it bigger?

I think Mesen is more accurate than FCEUX, but if it doesn't work in FCEUX you are probably doing something weird, although not necessarily wrong.
Thanks!!! I was inspired by Micro Mages to do an 8x8 platformer. I hope I can make it fun and interesting to play. :)
dougeff wrote: Thu Jul 16, 2020 9:29 am Something is wrong with sizes.

The header says PRG ROM is 0x0A, which is invalid. It should be a power of 2. This is probably why it crashes in FCEUX, who's log say it thinks there are 16, not 10 PRG banks.

The total file size is 416k which is very weird.

If it has 16 banks of CHR (0x2000)
and 16 banks of PRG (0x4000)
and 0x10 bytes header.

That should be 0x60010 bytes (393232 bytes).

Change that to 8 banks of PRG (0x4000), that would be 0x40010 bytes (262160 bytes).
Thanks for the tip!! I refer to your blog a lot and I was looking at your MMC3 example trying to understand what can be wrong in my project’s code.

I’ll try to figure it out. :)
Image
User avatar
wonder
Posts: 59
Joined: Sat Aug 31, 2019 2:12 pm
Contact:

Re: My Untitled Platformer

Post by wonder »

...and fixed!! It was the memory layout, silly me! The ROM is now exactly 256k, but if I understand correctly the MMC3 can go up to 512K, right?

Image

I'm re-uploading the NES file on the opening post. :beer: :D
Image
User avatar
dougeff
Posts: 3079
Joined: Fri May 08, 2015 7:17 pm

Re: My Untitled Platformer

Post by dougeff »

They can be this big.

Kirby's Adventure
512k PRG / 256k CHR H
MMC3 (4)
nesdoug.com -- blog/tutorial on programming for the NES
User avatar
wonder
Posts: 59
Joined: Sat Aug 31, 2019 2:12 pm
Contact:

Re: My Untitled Platformer

Post by wonder »

Thanks!! :)

I updated the first post with the fixed ROM.

I've also updated the demo. You can now drop some balls in debug mode! :lol:

Image
Press SELECT, move the cursor and press B.
Image
rox_midge
Posts: 91
Joined: Mon Sep 19, 2005 11:51 am

Re: My Untitled Platformer

Post by rox_midge »

I like it! The "one-hit kill" mechanic would lend itself well to an onslaught of enemies, and the sprite size makes the world seem spacious.

Controls seem very well done - a little tricky to make one of the required jumps, and there are some parts you can't reach, but that's more in the level design department.

I also found the very long message that needed to be split into multiple parts, which worked just fine.

Minor bugs only: I wound up embedded into the ground at one point when I respawned, but I couldn't reproduce that. There's a bit of stuttering when you bounce off the ground, but it might be intentional - looks like you might lose your forward momentum.

I was worried that it might not read very clearly on a physical TV, but everything still looks good with the NTSC filter in place.

Great start!
User avatar
wonder
Posts: 59
Joined: Sat Aug 31, 2019 2:12 pm
Contact:

Re: My Untitled Platformer

Post by wonder »

rox_midge wrote: Thu Jul 16, 2020 5:57 pm I like it! The "one-hit kill" mechanic would lend itself well to an onslaught of enemies, and the sprite size makes the world seem spacious.

Controls seem very well done - a little tricky to make one of the required jumps, and there are some parts you can't reach, but that's more in the level design department.

I also found the very long message that needed to be split into multiple parts, which worked just fine.

Minor bugs only: I wound up embedded into the ground at one point when I respawned, but I couldn't reproduce that. There's a bit of stuttering when you bounce off the ground, but it might be intentional - looks like you might lose your forward momentum.

I was worried that it might not read very clearly on a physical TV, but everything still looks good with the NTSC filter in place.

Great start!
Thank you so much!! Player feedback is really important for me!! :)

I have to admit I didn't pay too much attention to the level design aspect of this tech demo. :roll:
I couldn't reproduce getting stuck on the ground.

So I've found a few bugs and logic flaws:

Code: Select all

[Bug  ] When restarting the level from one of checkpoints some tiles do not animate anymore
[Logic] A.I. sometimes get confused when the player is directly underneath 
[Logic] A.I. follows the player into the lava pits
[Logic] Player doesn't die on the lava pits
[Misc ] Very low performance (WIP)
Image
Trirosmos
Posts: 50
Joined: Mon Aug 01, 2016 4:01 am
Location: Brinstar, Zebes
Contact:

Re: My Untitled Platformer

Post by Trirosmos »

Just tried it out. Seems really promising!
I love how fluid the animation looks for such tiny sprites. The little bounces when you fall from a certain height and the death animation are nice touches.
Oh, the music is pretty cool too! Arps get my insta-approval :P

Suggestion: you might wanna hide the leftmost column to prevent glitching. Also, if I hold right during boot up, this weird teleport happens:

Edit: I seem unable to reproduce whatever was causing the leftmost column to become garbled. So, take that suggestion with a grain of salt, haha

Image
SpiderDave
Posts: 1
Joined: Sun Oct 25, 2020 9:02 pm

Re: My Untitled Platformer

Post by SpiderDave »

This is really good. I love the detail in small sprites, and the idle frame is a nice touch. It gives me a Risk of Rain vibe.

Suggestions:
* The jump feels too fast; I think you should make it a bit more floaty. You can always add a downward sword thrust or something too.
* I notice you can hold the attack button and he'll attack on release. You could turn this into a block (with sword?).
* "Jump forgiveness". A sort of modern mechanic where when you start to fall off a ledge you still have a very small window to jump. It helps compensate for playing a game on a tv with input lag and just makes things feel better. You can also apply this principle to attacks and maybe let the player parry an attack if he presses attack immediately after being hit.
* Secondary idle frame: Make it so if you idle for longer, he puts away the sword and stands comfortably, and when you move/attack again he draws the sword. Just a bit more flair, but use this for the enemies too so you can surprise enemies that haven't seen you yet and get a small window where they're unprepared for an attack. You can design game elements around it like a smoke screen item to sneak up on them.
User avatar
wonder
Posts: 59
Joined: Sat Aug 31, 2019 2:12 pm
Contact:

Re: My Untitled Platformer

Post by wonder »

Hey guys!! Sorry for the lack of updates, Covid got me pretty bad, but I managed to beat it! :D
Now that I'm back to development I'll try to post more often. :wink:

I decided to redesign and refactor the interactive elements of the stage, so I'm currently working on a level editor to support those changes.
There should be some performance gains (hopefully) and it will become easier for me create and modify the stages.
SpiderDave wrote: Sun Oct 25, 2020 9:50 pm This is really good. I love the detail in small sprites, and the idle frame is a nice touch. It gives me a Risk of Rain vibe.
Thecoolestnerdguy wrote: Sat Sep 05, 2020 3:55 pm Just tried it out. Seems really promising!
I love how fluid the animation looks for such tiny sprites. The little bounces when you fall from a certain height and the death animation are nice touches.
Oh, the music is pretty cool too! Arps get my insta-approval :P
Thank you! I was inspired by Micro Mages to do an 8x8 platformer. I'm not really a pixel artist, but I'm trying my best to give the little guys some personality. :D

Regarding the physics, well it took me a lot of time to get it right, but I'm really satisfied with the end-result and I'm delighted you guys like it as well!! :beer:

The music unfortunately is just a placeholder for now, it's one of the samples that comes with famitracker.
Thecoolestnerdguy wrote: Sat Sep 05, 2020 3:55 pm Suggestion: you might wanna hide the leftmost column to prevent glitching. Also, if I hold right during boot up, this weird teleport happens:

Edit: I seem unable to reproduce whatever was causing the leftmost column to become garbled. So, take that suggestion with a grain of salt, haha
Hopefully after the refactoring these bugs should be gone.
SpiderDave wrote: Sun Oct 25, 2020 9:50 pm Suggestions:
* The jump feels too fast; I think you should make it a bit more floaty. You can always add a downward sword thrust or something too.
* I notice you can hold the attack button and he'll attack on release. You could turn this into a block (with sword?).
* "Jump forgiveness". A sort of modern mechanic where when you start to fall off a ledge you still have a very small window to jump. It helps compensate for playing a game on a tv with input lag and just makes things feel better. You can also apply this principle to attacks and maybe let the player parry an attack if he presses attack immediately after being hit.
* Secondary idle frame: Make it so if you idle for longer, he puts away the sword and stands comfortably, and when you move/attack again he draws the sword. Just a bit more flair, but use this for the enemies too so you can surprise enemies that haven't seen you yet and get a small window where they're unprepared for an attack. You can design game elements around it like a smoke screen item to sneak up on them.
- The jump "feel" depends on the global physics math, but there might be some space for minor adjustments. :|
- Yes block is definitely on my plans! I'd like to have Prince of Persia style sword fights. :P
- Jump forgiveness is something I tried to allow as much as I could, but I cannot push it further without messing with the collision detection. :?
- Yes, I'd love to improve the idle animations! When I was a kid, I was so jealous of my friends who had SEGA consoles. For me, Sonic getting impatient on idle was such a breakthrough compared to Mario who just stands there doing nothing. For me the perfect platformer will always be a SEGA/Nintendo hybrid. 8-)
- Regarding your second suggestion, yes I'd love to make it a little bit more like a medieval Metal Gear Solid, but I really need to optimize the code first. :roll:
Image
Post Reply