Skip navigation
NintendoAge
Welcome, Guest! Please Login or Join
Loading...

Homebrew Super Tilt Bro. for NES Smashbros-like on the NES

May 15, 2018 at 6:32:57 PM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile

Super Tilt Bro. for NES

Edit 10/13/2019 - Ooops, forgot to edit the first post in a long time: physical copies are sold out; Super Tilt Bro. 2 is in development
Edit 10/01/2018 - If you want a physical copy, let me know

Every modern game system from Nintendo has an iteration of the Super Smash Bros series, but old systems seem forgotten. Super Tilt Bro. for NES is a homebrew porting this style to our beloved NES.


Super Tilt Bro was initially presented as a nesdev compo 2016 entry. I love working on it and never stopped, with time it transformed from a little experiment to a game I am actually proud of. There is no reason for me to stop improving it, so this thread is there to keep you informed about updates (and brag about my baby-project). As the game is in continuous development, do not hesitate to post your feedback, it will be put in good use.

Features:
  • Intense 2 players versus fighting
  • Iconic mechanics: damages in percents and losing by ring-out
  • Artificial intelligence for 1-player plays
  • 4 stages to select from
  • Free NES ROM download (Pay what you want actually. It is like free, but you can buy me a beer)

You can download the ROM (or play in a html5 NES emulator) here: https://sgadrat.itch.io/super-tilt-bro


Edited: 10/13/2019 at 04:37 AM by RogerBidon

May 15, 2018 at 6:45:17 PM
MODERATOR
MrWunderful (289)
avatar
(Corey ) < Wiz's Mom >
Posts: 12967 - Joined: 12/21/2013
California
Profile
Wow that looks impressive. Great job!

May 16, 2018 at 3:39:56 PM
theirontoupee (53)
avatar
< Bowser >
Posts: 6289 - Joined: 05/06/2013
Texas
Profile
Nice!

-------------------------
WTB Thread (Always looking for Exertainment related items)

FO/FT Thread - Xbox, PS1, Gamecube, and more!

NintendoAge Official Exertainment Thread!!!

May 16, 2018 at 3:42:00 PM
arch_8ngel (68)
avatar
(Nathan ?) < Mario >
Posts: 35263 - Joined: 06/12/2007
Virginia
Profile
That is really impressive!

-------------------------
 

May 16, 2018 at 4:01:12 PM
NewUser123456789 (226)

(New User) < Bonk >
Posts: 17574 - Joined: 07/02/2007
Other
Profile
Thanks for sharing, looks great!

May 16, 2018 at 5:33:49 PM
Ferris Bueller (231)
avatar
(Christian D) < King Solomon >
Posts: 4124 - Joined: 06/15/2011
Texas
Profile
Awesome. Great work. Fun reading the blog about the progress.

-------------------------

My best friend's sister's boyfriend's brother's girlfriend heard from this guy who knows this kid who's going with the girl who saw Ferris pass out at the Let's Play Gaming Expo last night. I guess it's pretty serious.

Oh, my WTB thread is very popular. The sportos, the motorheads, geeks, sluts, bloods, wastoids, dweebies, Richard craniums - they all adore it. They think it's a righteous thread.
I'd also like to add that I've got my father's gun and a *scorching* price guide for aftermarket Nintendo games.
Between Dragon Warriors and nothing... I'll take Dragon Warriors - for any of my FT/FS/FO items.
 

May 17, 2018 at 5:47:43 PM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile
I am glad you guys enjoy it. It is heartwarming, keep up the good words  

Ferris Bueller, really cool that you took the time to read the blog. I thought to post it here too on next releases for convenience. Maybe I can go further in technical challenges here. What's best here a technical devlog, some release notes or a mix of both?

May 18, 2018 at 9:25:35 PM
Samophlange (0)
avatar
< Cherub >
Posts: 5 - Joined: 04/18/2018
Profile
Wow, that looks aces! I'm looking forward to reading the technical articles when I get time.

May 20, 2018 at 11:22:53 AM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile

Technical highlight: Animations


If you like it, I will periodically post some technical highlights about the inner workings of Super Tilt Bro. It aims to clarify the magic happening when you press a button, to explain some future changes in the engine and to be a nice reading.

In this first highlight, we will see how characters are animated. What is good about it and what are the limitations that will need to be worked on.


Some vocabulary


Player and character are two very important words, but are often interchangeable. When talking about Super Tilt Bro's development, it is useful to have a clear definition for them. So, in this highlight we will use:

A character is a fantasy being. Context: The character is Sinbad, a pirate, orc and mascot of the project Ogre3D.
A player is the human being pressing buttons on the controller. Context: The winner player mocks his opponent.
An avatar is the game entity that can be manipulated. Context: The avatar is described by some variables and shown on screen.



Any of them could be called “character”, “player” or both



Animation, how does it work?


Each frame, the engine processes two important steps: it computes avatars' states, then places sprites to show the new state.


Each frame, the engine computes a new state, then place sprites on screen

After the first step, we know the position and animation of each avatar as well as how long this particular animation is played. The only thing left to do is to find the appropriate animation frame, it tells which and where sprites are to be placed on screen. In the code, an animation looks like this:
 
; Frame 1
ANIM_FRAME_BEGIN(3)
ANIM_HURTBOX($f8, $07, $0a, $0f) ; left, right, top, bottom
ANIM_SPRITE($08, TILE_CHRASHING_SINBAD_1_SIDE, $01, $f0) ; Y, tile, attr, X
ANIM_SPRITE($08, TILE_CHRASHING_SINBAD_1_HEAD, $00, $f8)
ANIM_SPRITE($08, TILE_CHRASHING_SINBAD_1_BODY, $00, $00)
ANIM_SPRITE($08, TILE_CHRASHING_SINBAD_1_SIDE, $41, $08)
ANIM_FRAME_END

; Frame 2
ANIM_FRAME_BEGIN(3)
ANIM_HURTBOX($f8, $07, $06, $0d)
ANIM_SPRITE_FOREGROUND($08, TILE_CHRASHING_SINBAD_2_SIDE, $01, $f3) ; Y, tile, attr, X
ANIM_SPRITE_FOREGROUND($08, TILE_CHRASHING_SINBAD_2_MIDDLE, $01, $fc)
ANIM_SPRITE_FOREGROUND($08, TILE_CHRASHING_SINBAD_2_SIDE, $41, $05)
ANIM_SPRITE($06, TILE_CRASHED_SINBAD_HEAD, $00, $f8)
ANIM_SPRITE($06, TILE_CRASHED_SINBAD_BODY, $00, $00)
ANIM_FRAME_END

; Frame 3
ANIM_FRAME_BEGIN(13)
ANIM_HURTBOX($f8, $07, $08, $0f)
ANIM_SPRITE($08, TILE_CRASHED_SINBAD_HEAD, $00, $f8) ; Y, tile, attr, X
ANIM_SPRITE($08, TILE_CRASHED_SINBAD_BODY, $00, $00)
ANIM_FRAME_END

; End of animation
ANIM_ANIMATION_END

As we can see, hitboxes and hurtboxes are described with the animation. We also discriminate between standard sprites and foreground sprites, allowing FXs to always be shown on top of the avatar. Indeed, in Super Tilt Bro., when an avatar is flipped sprites' priority is inverted, actually using animation data as a 3D model. This technique allows notably the character to keep being left-handed, regardless of its watching direction. Impact effects shall nonetheless unconditionally be in foreground.


Layers of sprites, that's basic 3D


 




No depth for SPRITE_FOREGROUND, the impact is always on top of the avatar



What works well


The format used to store animations allows free sprites placing. There is no artificial limitation over what the NES can do. Moreover, we can describe some depth.

Hitboxes in animation data are easy to work with. We cannot forget to modify hitboxes when we modify data and generally are safe from bugs where hitboxes are out of sync with displayed animation.


What can be improved


The animation engine directly uses avatars' states. It is unusable in another game project or, worst, in the menus. It would be better if animated sprites had their own state, the game engine would just have to maintain such states for each avatar and let the animation engine work from there.

Animation is now the number one CPU consumer in this game. Each game frame, the animation engine must find the good animation frame and search it implies to parse all previous animation frames. If we had a state for animated sprites, it could be fixed by storing a pointer to the current frame.

Handling of 3D implies to fix the number of sprites used by the animation to the biggest frame it could show. The simplest way to do this is to reserve lots of sprites for each animation, forbidding to have many avatars on screen.


The end


It was the first technical highlight, certainly far from perfect, so please tell me what you'd love to see and help shape nexts. Do you prefer something shorter, or more in depth? More pictures maybe? Something completely different? Tell me what you want and I will adapt the format.


Edited: 05/20/2018 at 11:24 AM by RogerBidon

Jun 25, 2018 at 6:40:25 AM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile
I have been a little quiet recently, and it will continue. I was planning on producing some cartridges for family and friends when Glutock, the programmer of Twin Dragons, announced he was working on a cartridge with integrated WiFi. I had to see if Super Tilt Bro. could possibly be ported to internet-multiplayer.

It is a lot of work, especially when composing with a day-job, but I finally got a prototype proving it could work. Basically, the NES sends inputs to the server that computes a reference game-state and send it back. The NES is able to predict future frames, so when the server response is late, it is replayed fast-forward to compensate latency.

Today I saw it working flawlessly with ~50 ms ping between each client and the server. It proves that it can work, but there is still a lot to do. Before trying anything real, I work with a patched emulator, going to hardware will prove challenging. Also, as the server has to compute the game-state, I basically have to re-implement the game in C++ (originally in assembly with some dirty tricks).

Here is the local network test, now the same can be done over the internet!




Edited: 06/25/2018 at 06:42 AM by RogerBidon

Jun 25, 2018 at 8:04:00 AM
Ferris Bueller (231)
avatar
(Christian D) < King Solomon >
Posts: 4124 - Joined: 06/15/2011
Texas
Profile
Crazy! Let me know when you need some help testing over the internet.  

-------------------------

My best friend's sister's boyfriend's brother's girlfriend heard from this guy who knows this kid who's going with the girl who saw Ferris pass out at the Let's Play Gaming Expo last night. I guess it's pretty serious.

Oh, my WTB thread is very popular. The sportos, the motorheads, geeks, sluts, bloods, wastoids, dweebies, Richard craniums - they all adore it. They think it's a righteous thread.
I'd also like to add that I've got my father's gun and a *scorching* price guide for aftermarket Nintendo games.
Between Dragon Warriors and nothing... I'll take Dragon Warriors - for any of my FT/FS/FO items.
 

Jun 25, 2018 at 9:21:00 AM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile
For sure, it may not be soon, but as soon as it is user friendly I'll get in touch with you  

Jun 25, 2018 at 6:13:37 PM
DarkKobold (11)
avatar
< Meka Chicken >
Posts: 985 - Joined: 07/22/2012
Utah
Profile
My friends and I played this for a bit, and had a blast. We were hoping for a 4 player version at some point!

Jun 25, 2018 at 6:50:34 PM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile
I'm glad to hear that you enjoyed the game. It means a lot to me! Four player is definitely on the plan. It will need a revamp of the engine, so expect it for the 2.0 release

Jun 25, 2018 at 8:56:07 PM
dragonwarrior83 (36)
avatar
(Nick R) < Meka Chicken >
Posts: 840 - Joined: 04/07/2017
Georgia
Profile
Not only is it awesome and completely entertaining but educational with the tech write up parts. I found it interesting even though I don't know shit about programming for the NES. I was wondering after you get the 4 player up and running would you care if someone put it on a cart if it's even feasible?

-------------------------
Got all 4 Dragon Warriors CIB, Thanks Everyone. Now looking for Dragon Quest ( Famicom ) 1, 2, and 3. Also a box and guide for Earthbound.

Jun 26, 2018 at 2:45:57 AM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile
Thank you for the nice words. It is completely feasible to put Super Tilt Bro. on cart. I plan a mini-release of v1.0 (without 4-player), then maybe something bigger for v2.0 (with 4-player).

Jun 26, 2018 at 8:06:15 AM
RegularGuyGamer (110)
avatar
(Kyle aka Zombieguygeezus ) < Master Higgins >
Posts: 7764 - Joined: 01/06/2013
Pennsylvania
Profile
Im interested in a v1.0 release!

-------------------------

Jun 26, 2018 at 10:06:38 AM
neodolphino (179)
avatar
(Justin ) < Ridley Wrangler >
Posts: 2565 - Joined: 09/25/2013
Pennsylvania
Profile
Originally posted by: RegularGuyGamer

Im interested in a v1.0 release!

seconded  

Jun 26, 2018 at 11:52:18 AM
AirVillain (15)
avatar
< King Solomon >
Posts: 4967 - Joined: 10/23/2012
British Columbia
Profile
Neat!! Well done.

-------------------------

AirVillain    
"Way cool, dude!"

Jun 26, 2018 at 11:39:14 PM
dragonwarrior83 (36)
avatar
(Nick R) < Meka Chicken >
Posts: 840 - Joined: 04/07/2017
Georgia
Profile
Originally posted by: neodolphino

Originally posted by: RegularGuyGamer

Im interested in a v1.0 release!

seconded  





You can count me in on that!!! Both versions lol.

-------------------------
Got all 4 Dragon Warriors CIB, Thanks Everyone. Now looking for Dragon Quest ( Famicom ) 1, 2, and 3. Also a box and guide for Earthbound.

Jun 27, 2018 at 3:22:35 AM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile
Hey! I have never been on this side of the Fry's meme. That's not a spot where I am comfortable. I'll do my best not to ruin your hopes.

I see three problems in shipping a v1.0 to you guys:

* I plan on a low price, so international shipping will easily double it

* The game is currently best played on PAL systems, on NTSC it will skip one frame out of six which is not perfect

* I have no NTSC system at hand to test, so NTSC compatibility is still hypothetical

Now, I expect to be able to produce my mini-batch in October. Maybe I can work on a do-it-yourself release. It would basically be a repro-tutorial with printable files for stickers and manual. Of course free of charge. Would you be happy with that?

Out of curiosity how much would you pay for a cart of Super Tilt Bro. v1.0 (knowing that it will mostly be like the current beta-6), with a manual and a big dust sleeve but no cardboard box?

For your curiosity, the stuff for producing a 10 pieces batch cost me around 10€ per cart, and I have to make 570 solders by hand  

Jun 27, 2018 at 7:26:15 AM
Ausden (13)
avatar
(Jonathan ) < Meka Chicken >
Posts: 704 - Joined: 02/12/2010
North Carolina
Profile
I would definitely be in for a cart and to contribute to the cause. Suggested price?...$25-30??? Not sure to be honest.

Jun 27, 2018 at 7:37:23 PM
DarkKobold (11)
avatar
< Meka Chicken >
Posts: 985 - Joined: 07/22/2012
Utah
Profile
Originally posted by: RogerBidon

Hey! I have never been on this side of the Fry's meme. That's not a spot where I am comfortable. I'll do my best not to ruin your hopes.

I see three problems in shipping a v1.0 to you guys:

* I plan on a low price, so international shipping will easily double it

* The game is currently best played on PAL systems, on NTSC it will skip one frame out of six which is not perfect

* I have no NTSC system at hand to test, so NTSC compatibility is still hypothetical

Now, I expect to be able to produce my mini-batch in October. Maybe I can work on a do-it-yourself release. It would basically be a repro-tutorial with printable files for stickers and manual. Of course free of charge. Would you be happy with that?

Out of curiosity how much would you pay for a cart of Super Tilt Bro. v1.0 (knowing that it will mostly be like the current beta-6), with a manual and a big dust sleeve but no cardboard box?

For your curiosity, the stuff for producing a 10 pieces batch cost me around 10€ per cart, and I have to make 570 solders by hand  

So, it played fine on the Action 53 Vol 3 cart on NTSC systems. Which mapper are you using? You could also talk to Infinite NES Lives about producing the cart for you, which saves you a ton of time, and also dealing with shipping etc. They'd have to get a cut, but it might be worth it for you. Retrousb also produces carts for people. Piko Interactive might also, but he has a really bad reputation, which could hurt your market.

 

Jun 28, 2018 at 7:35:24 AM
RogerBidon (4)
avatar
< Tourian Tourist >
Posts: 41 - Joined: 05/14/2018
France
Profile
For now, Super Tilt Bro. uses a super simple NROM-256 mapper. It will hold true for the v1.0

Infinite NES Lives' carts are awesome, but I never thought the v1.0 could get enough traction to deserve such professional attention.

Jun 28, 2018 at 5:18:00 PM
DarkKobold (11)
avatar
< Meka Chicken >
Posts: 985 - Joined: 07/22/2012
Utah
Profile
Originally posted by: RogerBidon

For now, Super Tilt Bro. uses a super simple NROM-256 mapper. It will hold true for the v1.0

Infinite NES Lives' carts are awesome, but I never thought the v1.0 could get enough traction to deserve such professional attention.
He might be less inclined, given that you are more in a beta phase than the final product. Offering up v2.0 might be enough for him to be interested.