-
Posts
106 -
Joined
-
Last visited
-
Days Won
5 -
Feedback
0%
Content Type
Profiles
Forums
Gallery
Blogs
Events
Homebrew Games
Store
Downloads
Posts posted by RogerBidon
-
-
Super Tilt Bro. 2.0: The one!
How is production going?
We have almost all the needed elements to start the production. That's why we drop the "Release candidate" status, baring any big surprise this version should end being in the cartridges. Everything has been tested and is working on the final version of the hardware, Saturday we will test it in real conditions during the monthly tournament happening on Super Tilt Bro.'s Discord server.
Technical highlights
I love technical highlights. I was really a pleasure to write it and see your reactions. Some completely flopped, others were cited by peoples I am astonished to even blip on their radar, and I regret none of them. They disappeared when I had to stop living on glory (and savings,) you know day jobs take time so I had to cut things to keep progressing on the game. That said, I really want to bring them back. I use what little time I have to write a next entry about cryptography, a rare matter on the NES but a key concept on the internet. So, stay tuned I guess, I may come one day!
What's new in the game?
Polished Wi-Fi menus
Menus now stay reactive when your Wi-Fi connection is poor. No more waiting for a message that can never come. Also, the Wi-Fi connection screen is more intuitive than ever.
Story mode updated
The ending cutscene's screenshake is fixed (did you notice it was broken?) And the secret medal time has been reduced, you now need to beat the story in less than one minute and fifteen seconds to get it. The second secret medal time is unchanged, nobody still reached it.
Kiki
Kiki got new color swap options, matching skin concepts from the Super Tilt Bro.'s community.
Sinbad
Sinbad longest-to-describe attack, the aerial neutral special attack, has reduced damages. It went from eight damages dealt by hit to three. It was a long time artifact, before we notice the attack was technically a multi-hit, racking damages way to hard.
New music
Not yet in the game, but Tuï stroke again with this variant of the main theme!
- 3
-
On 4/24/2024 at 8:50 PM, a3quit4s said:
My dude Tilt Bro ain’t even out yet
Technically it is out since 2018: version 1.0 was released physically with nine copies for a local event. The 2.0 you are waiting today comes from a series of patches over the years, all publicly available, so there is a point to say it is the same game!
(The 1.0 had no Wi-Fi, only one character, and four stages sharing the same tileset.)
Anyway, legal or not, do not hesitate to mention it, I am the happiest man in the world each time I see a mention. Thanks @Gloves
Now that I emerged from the shadow, let's use my ten votes:
- Micro Mages
- Nim & Nom
- Slow Mole
- Super Homebrew War
- Chibi Monster Brawl
- Project Blue
- Twin Dragons
- Full Quiet
- L'Abbaye des morts
- Alfonzo's Arctic Adventure
- 1
-
Super Tilt Bro. 2.0-rc4: Buff the outsiders!
Progress on the physical release
Last months, the focus has been set on the physical release. We are a bit late on schedule, and I am sorry for that. We really wanted to get the perfect cart as the risk with new technologies is to sell a defective or brittle product. There is a lot of stuff going on a physical release aside from the WiFi-enabled NES board, I'll try to cover all fronts here.
About the board itself. We finally froze its design, including the PCB layout, the components on it, and the FPGA programming. That means we are now using prototypes strictly equivalent to the production cartridge, or at least we can list the differences, which is better to get progress that the ever-evolving cart we had until now. It also means we can, and have, ordered the needed PCBs to make production cartridges.
The game itself is in a state were we publish incremental improvements. It is ready, and working on the prototypes, and we don't want to break that. At the same time, balance and polish can always be improved, and Super Tilt Bro. is a living game: it is updated regularly and will be for the foreseeable future.
Finally, the packaging. The cover art and manual are ready, and we also got a sample to ensure print quality was good. That's a good thing done, that means we can, and have, ordered the packaging elements. Digital reward like the OST and the comic book are also ready.
To summarize, everything is ready and has been ordered. We should receive all elements by the end of April, letting us do the last checks and begin to assemble, flash, and ship the games to Kickstarter backers, honor pre-orders, and finally release the game.
As a side note: Thank you very much for Kickstarting and pre-ordering the game. It may not be obvious seeing Super Tilt Bro. coming to completion, but the project would really have been jeopardized should it not have been backed. I myself reduced my work to part-time for two years developing the game, and Broke Studio has great upfront costs ordering thousands of cartridges materials. Super Tilt Bro. may not have been a thing, and would certainly not be near that magnitude without you. Thank you.
What's new in the game?
Story mode
The final score board has been improved. The time is now displayed in white which is way more legible than black on brown, and the medal name has been added.
Oh, and, did you notice? The timer now goes above 10 minutes, you can take your time!
Finally, targets in break-the-target stages now have larger hurtboxes. This is the end of raging because you missed it by one pixel. You can now rage because you missed it by three pixels!
VGSage
VGSage has been slightly buffed. First is his down-air which now has a stronger hitbox at the end. The new hitbox throws your opponent just far enough to let you continuing your combo with an advantage.
Also, the side-special now takes less time to charge. Without being a fast move, it can now take your rival by surprise, making it a good niche option.
Pepper
As with VGSage, Pepper got her share of buff. Like VGSage's side-special, Pepper's down-air startup time has been lowered to make the move more often useful.
Finally, Pepper's side-special has more scaling knockback than before. That's especially true when she hit from max range. This is actually a big buff since when your opponent is weakened, finishing a combo with a side-special can now score you a ring-out.
Fixes
Pressing start during an online game no more cause terrible glitches. The reason was while the client refused to pause an online game, the server actually paused. Causing weird desynchronization and a game seemingly stuck.
- 1
-
Super Tilt Bro. 2.0-rc3: Sinbad's patch
Physical release news
If this patch comes close from the last, the reason has to do with the physical release. The cartridge's hardware is in stabilization phase, which means APIs for the game should not change much anymore, even while some implementation details are still being finalized. This is the perfect time to begin to test upgrade and reset to factory in real conditions. And, for it to be really real, we need at least two official versions of the game that run on the same version of the mapper, this new version allows just that.
In other news, we designed the manual and the box. Adding to the digital comic book and OST that were already ready that mean we have everything needed in this department.
Things are getting real
What's new in the game?
New cutscene
The story mode was lacking an ending cutscene. When you beat the boss, you were just given the score screen without even knowing if Sinbad got his cake.
This is fixed!
(Sorry, no screenshot, you will have to beat the game to know )Sinbad balance
Sinbad's new side-tilt came with a fair share of balance issues and bugs. Strange behaviors on wind boxes, moving platforms and player two are now fixed. As for the balance, the end lag can now only be cut by jump moves, so Sinbad has to follow with aerial attacks to combo and the last hitbox connects more consistently as the multi-hit hitboxes, even if weak, throw the opponent with a terrible downward angle.
- 3
-
The guy wants to play the old version
Actually this topic is more than four years old. It is just the date of an earth-shaking event
The game was not originally meant to be comercially viable, and it was a long stretch to go from amateur work to something I am OK to know you spend some of your hard earned cash on.
I must admit it took longer than expected sorry for that.
Also this topic should get more technical higlights and less release notes. It was my original goal. But I cannot afford to be even part time on the game-dev anymore so, writing deep articles was set aside and my little dev time is now devoted to make the game as great as possible. That means this topic is dominated by release notes, and my "interesting topics to write about" list is growing. Again sorry. I have to deliver carts one days but no obligation to write interesting content that I love and know you enjoy. If release notes bother you, do not hesitate to tell it clearly, I'll only use this topic for big announcements and technical highlights.
-
Super Tilt Bro. 2.0-rc2: The first release candidate
Release candidate?
Yes, that's what it means: this version could be the one in the carts. It all depends on you: find bugs and I'll have to release another version before production begins
More seriously, it will suffer some intense testing, so there will probably will be other release candidate versions. Anyway, this version should give you a good idea of what will be on the cart Day 1. (Don't forget to pre-order the game if you like it )
I couldn't dream of a best 100th post than announcing that!
What's new in the game?
Redesigned mode selection menu
The Arcade mode becomes the Story mode, and gets the screen space it deserves. Also, the support page is replaced by the social page: no more donation QR codes, links to social networks are more useful to find players.
Sinbad
Sinbad's side-tilt is entirely reworked. He now spins his scimitar while charging the enemy. It changes how the move can be used, it is no more a brainless ring out move, but can drag the opponent across the entire stage and is a great combo starter.
Also, up-special has now a bit more scaling knock back to ease getting a ring out with it and mitigate the loss of side-tilt for this.
Pepper
Pepper up-special now goes toward the stage's center by default. It should avoid flying to the blast line inadvertently.
- 1
-
Super Tilt Bro. 2.0-beta7: Revenge of the Sage
What's new in the game?
Footstool
Jump, aerial jump, wall jump, special jump, ... Definitely not enough.
Let me introduce the brand-new footstool jump!
Yes you can use your opponent as a footstool to jump higher. It interrupts their attack, makes them fall, and don't consume your aerial jump. Definitely a powerful move but beware, it is pretty hard to land and exposes you if failed.
VGSage
Last update introduced the short-hop aerial mechanic. Easing the input of an aerial attack near the ground. It was devastating for the VGSage who rarely wants to short-hop but have a lot of combos with its full jump aerials. Now the Sage has easier time full jumping than short hoping, fixing the issue.
Another problem with last patch: air friction is now applied during aerial moves. It is almost imperceptible for others. The Sage however is terribly not aerodynamic, this change nerfed his combo game even further. To fix it, air friction of the Sage has been greatly reduced, but it makes him more vulnerable to ring outs, so an extra resistance to knockback has been implemented for him.
Resistance to knockback is like the weight in the Smash Bros series. So the Sage is officially the first heavyweight character of Super Tilt Bro.!
Last change to the Sage this patch is that his roll move is now impacted by the gravity. It was weird to ignore that law of physics.
Kiki
Kiki can now paint a platform as soon as returning from a ring out. Formerly she had to land on the ground before.
Pepper
Pepper's AI is now better at recovering. She often trapped herself above the edge by changing direction rapidly on her broomstick.
What's new under the hood?
New cart, new emulator
Hardware development is on fire, we think we have the final version of the cart.
Porting the game to it progressed enough that we can update the emulator. 2.0-beta7 is the first version that runs on an emulator compatible with the game as it will be released.
It may be obscure but is a huge milestone, resulting from great progresses on both hardware and software fronts.
Rescue mode
With the hardware nearing completion, our first priority is safety. Upgrading software on the NES is a world first, we want to be sure not to brick your cartridges.
When things go wrong with your phone, the last resort is to reset it to factory. The Super Tilt Bro. cart is no different. No matter how safe we make the upgrade, you may need at some point to reset it to a state known to work. This is why we implemented the rescue mode.
By pressing Start+B at boot, you will enter this rescue mode. This is a special section of the ROM that is never updated and can rewrite the game from a compressed backup. Everything is in the cartridge you have nothing more to do than start the rescue, and watch it rewriting your game.
Retro Windows are welcome
By popular demand, Windows 32 bits is now supported. The Windows version of the game contains both the 32-bit and 64-bit versions, so the vast majority of users still use the full potential of their 64 bits CPU.
Note that with changes in the emulator, this dual version is still lighter than the former "64 bits only" version.
- 1
-
I loved the Code names session I came in for
(I had nothing more to say, but this thread was the opportunity to thank you for this moment )
- 1
-
Super Tilt Bro. 2.0-beta6: Gameplay adjustments
What's new in the game?
Kickstarter is over
My first time on this side of the Kickstarter, and a huge success! Thank you!
Gameplay adjustments
This update focus on refining the base mechanics of the game. It is a lot of very small things that, put together, should noticeably improve the feeling of the game controller in hand. Because there are few things more annoying than a character not doing exactly what you want.
Of course, doing it right is especially hard when we developed the game for a long time and are accustomed to the current controls. So if you have feedback on what still feels weird controlling your character, I'll gladly take it :)
Now the list of these little things:
- It is now easier to input short-hop into aerial
- It is now possible to maneuvering left/right during most aerial attacks
- Hitting opponent's shield triggers a small hitpause
- Hitting opponent's shield pushes them slightly
- Out of shield animation can be cancelled by a jump
- Being hit reloads the wall jump
- Keeping down pressed after a tech buffers a shied
- Buffering the same move you are performing works more consistently
- It is now possible, and easy, to reverse up and down variants of tilts, specials and aerials
Sinbad
Sinbad received a big graphical update. Lots of details in this tiny sprite!
Did you see? The statues have been updated too!Pepper
Pepper can now change direction while flying on her broom. Sound's like a big change, it's actually a way to ease the input to fly in a specific direction. If you input the direction a bit too late, it will turn to move like you expected. Could have been in the "Gameplay adjustments" section, but it is specific to Pepper, and who knows, maybe you'll find other uses for this new ability.
Pepper also has new victory and defeat animations. I was about to put a GIF of that but, hey, guess you'll have to win and lose a game playing Pepper to see it!
Online
Laggy players can no more play from the past.
Due to internet latency, and the nature of rollback netcode, getting your opponent's input from the past is expected. But there is a limit, when a laggy player hits you several seconds in the past, it becomes unfair on top of being weird. Now the server checks for inputs too far in the past and move them to a more reasonable time.
Of course this is experimental, if you know one of those players who lags a lot while having a correct ping, please send feedback on how the patch impacts your experience.
- 2
-
Annnnnd, that's a wrap!
@kzroszee wins that VGS tournament, second edition!
Thank you everyone who gave the tourney a go! It was so fun thanks to you
- 1
-
Grand final
@braven (Sinbad) vs @kzroszee (Kiki)
This is it! The grand final. The set which will decide who is the champion! The battle for the first place!
The first to win 3 games wins the set.
Braven is favourite as being a long time player, known to lose only to one player in the world. On the other way, Kzroszee already sent Braven to losers brackets. Was that luck, was it a shift in the world's ranking? The answers now!
-
Losers final
@urangutanLP (Pepper) vs @braven (Sinbad)
Both players lost a set but climbed all the way to the top of the loser bracket. Now one will be definitely eliminated while the other will go to the grand final and can still win the tournament.
-
Losers semi final
@urangutanLP (Pepper) vs @Adrian (Sinbad)
At that point, UrangutanLP already did better than on last tournament. Will he continue on momentum, or will Adrian to prove to be too hard of a wall?
Talking about Adrian, new to the game, he registered barely knowing the basics and learnt at an incredible speed to now be a serious challenger. Now at the gates of the podium, the performance is incredible!
-
On 5/1/2023 at 7:23 AM, RogerBidon said:
Impress me during the tourney, and I'll see what I can do
On 5/1/2023 at 8:31 AM, Avgn Gamer said:@Jeevansign me up jennay
I am oficially impressed
Thanks for playing the tourney! Hope it was fun!
-
Winner's finale!
In a double elimination bracket, one has to lose two sets to be eliminated. At one point, only two players went flawless, their encounter is qualifying for the grand finale, and always a big show of skill!
Games are played until one opponent scores three victories.
@braven (Sinbad) vs @kzroszee (Pepper)
The master vs the apprentice.
Braven is a long time veteran of Super Tilt Bro. and known to crush absolutely anybody.
Kzroszee came more recently, being especially trained by Braven to reach the eights of this world.
Will the apprentice surpass the master today?
Games analysis:
SpoilerPlaying Pepper, a character deemed weaker than master Braven's Sinbad, Kzroszee crushed it!
Kzroszee mastered defensive playstyle of Pepper. Priotizing placing the cat high at all times ensure an easier time to come back on stage. Waiting for oppenings on Braven's play to place the powerful neutral air, then punishing Braven's recovery by crushing wrench spikes.
- 1
-
@Adrian recorded his session yesterday.
If you want to watch he climb the ladder, commenting while on the heat of the battle, here you go! (In french, mostly )
https://www.twitch.tv/videos/1819942750
-
Most matchs have been played. The real fights are about to happen!
@braven and @kzroszee (Jade) are set to meet in winners' final. Ensuring them at least a third place and a plushie each!
The fight for the thirs plushie will be epic! @urangutanLP and @Adrian are in place while @Gobolz, @Fei, and @Mx.Headroom (Bug) are comming strong!
In the spoiler, a big list of replay from the already played matchs:
SpoilerGobolz vs LePoussin,
Game 1: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=5bb8de76-f6b3-47e2-bf31-1d467fac6261
Game 2: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=02795db7-1972-473f-90fc-d52b0a578731Braven vs Bug
Game 1: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=913cc70b-f3fc-4bf4-b99a-2e39f22657ec
Game 2: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=e44cb49d-4478-4057-a7a4-0fe8eefd95d9UrangutanLP vs FeiGame 2: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=509a579d-e7ed-44f1-95c3-ae75e6cd23cd
UrangutanLP vs Braven
Game 1: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=02d5263a-4198-4dde-b980-6f67bab0be1b
Game 2: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=9847a537-3b25-4c2a-a86c-8636df212b18
Jade vs Erock
Game 1: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=75cd1bd7-54ed-4bb4-a9d6-4ec81d40db9eGame 2: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=b6233e19-fe92-4db0-8e6b-4915124752ce
Jade vs Gobolz
Game 1: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=77694ccd-9310-4f11-988d-562afa6b974c
Game 2: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=2579cffc-37d4-42a6-9696-b18d2d285835 -
Annnnd the tourney BEGIIINNNNSSS!!!
@TheGreatBlackCat playing The Sage, versus @urangutanLP playing Pepper and Sinbad
TheGreatBlackCat comes from the VGS community, and will oppose @urangutanLP, one of the veteran members of the Super Tilt Bro. community. Lack of luck with random seeding, will TheGreatBlackCat be able to create the surprise? Answers in the replay, comments in spoiler tag
Game 1: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=5435bd63-43ea-47f4-b7fe-9408ebf2a2f0
Game 2: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=1de54525-9eac-44f7-b0cf-3bed0b0397cf
Game 3: https://super-tilt-bro.com/replay/emus/2.0-beta5/index.html?game=ff1d4cc4-2f4a-4aac-8314-d6fcfa2cec29SpoilerTheGreatBlackCat wins game one! The first game of the tourney is won by a VGS member, playing the Sage
Game 2 is won by urangutanLP, after showing all the possibilities of Pepper's teleport. Intense match, super close!
Game 3, urang switch character. He picks Sinbad to counterpick TheGreatBlackCat's Sage. Switching out of his main character is a dangerous call, but it payed. UrangutanLP declared winner of the set!
- 3
-
1 hour ago, TheGreatBlackCat said:
Screw it, I'll get smoked, but count me in for the tournament. I'd love one of those gold cartridges.
Is there any way to let the devs know that the ROM is not compatible with the Analogue Nt's (silver) jailbreak? I'm assuming there's a mapper that it's unfamiliar with and that the cartridge should work; any cartridge I've thrown at it works, including homebrews.
Yeah! Thanks for getting in! It will be fun
I am the dev, so now I know Which ROM did you try? The one on itchio or the Kickstarter one? (To tell, on title screen version is "KS" on the former, "2.0 beta 5" on the later.) Can you try the other?
(One is UNROM, with unconventional size of 512 KB, the other is UNROM-512.)
-
Yeah! Plushieeeeesss!!!
The gang is ready!
Take 'em home by winning this tourney! (easy enough)
Or play on the tourney, ask for more, and flatter my ego to motivate me to produce more- 2
-
On 5/2/2023 at 1:16 AM, avatar! said:
You guys going to put up another Collector Tilt Bro. pledge? I'm waiting on that tier to pledge
Nope, doubling their number already was a bold call. The standard edition is cool too. Sky blue cart is the real Super Tilt Bro.'s color
-
12 hours ago, Avgn Gamer said:
I'll do what I must
Impress me during the tourney, and I'll see what I can do
- 1
-
Damn, now @a3quit4s you better register to the tourney or I'll suspect you want a collector to display it instead of play it!
(Was that negative enough? I am trying my best here )
- 1
-
That plushies that are not even in the collector
(And take me way too long to craft to be sellable at a reasonable price )
- 1
Super Tilt Bro. for NES
in Share
Posted
Technical highlight: Modern cryptography on the NES
Super Tilt Bro. is an online game. You can even make an account to be placed on the official ranking, to do that you simply enter your login/password and... the technical trouble begins!
Nice little credentials that need to be protected with 8-bit power!
We are on 2024, hackers do not operate on Commodore 64 anymore, the game will face today's threats. In this article we will go into the depths of the cyber-war by introducing how your passwords are typically protected, and the choices made for Super Tilt Bro. Spoiler, SHA-256 is at the heart of all that, and its implementation on the 6502 CPU will be discussed.
Protecting your password
There are a lot of ways to protect passwords. The minimum expected nowadays is that the password never transits unencrypted on the network, and is not stored on the server. A typical website will only send it over HTTPS, which is an encrypted protocol, and store a salted hash on the server. The salted hash is black magic: when you send your password the server can verify it is the good one by comparing it to the hash, but with just the hash no one can compute your password back. Ultimately your password is protected against a hacker that sees you internet connection thanks to HTTPS, also, a hacker gaining access to the server doesn't get your password thanks to salted hashes.
This is how tiny websites protect your data. Big ones can use more complex schemes.
This is cool, now we have an 8-bit CPU and two kilobytes of RAM, can we do all this? Yes, and no. HTTPS in itself is pretty CPU intensive, and very convoluted as it evolved over 30 years supporting multiple generations of encryption schemes. It would be a terrible fit with our beloved entertainment system. Modern hash algorithms are designed with 32-bit CPUs in mind but are very compact, definitely doable.
Anyway, before choosing a technical solution we need to understand what we want to protect, and against whom. There is no ultimate security, one need to choose our fights. Preventing a player connecting to another's account is the first consideration but knowing that Super Tilt Bro. is a small game with a wholesome community, basic security for that should be good enough. Note that the community can change over time, and anti account stealing measures must have a way to evolve if necessary. The second and most important point is to protect player passwords against theft. People reuse passwords, it is bad but a fact. If a hacker with access to a 2024 computer watches your internet connection or gain access to the server, they should not be able to find your password. You may lose more than your gaming account especially if you use your credit card number as a password (I know you do it!)
OK, account-stealing and more importantly password-stealing are our priorities. Considering that players will not go as far as eavesdropping each other's internet or hack the server to steal accounts, the most important part is the salted hash part. Making the password secret to a hacker seeing only the salted hash, even with access to modern computational power. To achieve this level of protection, the game computes itself the hash of the password, salted by the login and sends that salted hash to the server once to obtain a login token. The password itself never leaves the NES. The login token is a simple number that can be placed in any message and identifies the logged session, avoiding sending the salted hash in every message, and simplifying server-side authentication. The hash algorithm is our main defense against the dark armies of the web, a state-of-the-art algorithm is necessary, Super Tilt Bro. uses SHA-256 which is unbroken and performs efficiently enough on the 6502 CPU.
The login protocol for Super Tilt Bro.
There would have been other alternatives, without citing them all here are some that can come to mind, and why it was not chosen. The Wi-Fi chip could handle HTTPS, partially, it performs the encryption but no server authentication. A challenge could be used instead of sending the hash, it would have prevented an attacker to log in knowing only the salted hash at the cost of a bit more complex login step, it is definitely an improvement if stealing accounts becomes a problem. Two-factor authentication, it is to be added over the login protocol, adding it can be achieved without changing the choices made above.
Let's discuss the SHA-256 hash algorithm
Hash algorithms have many fascinating properties. The one of interest in our case is that it can take any kind of data and transform it in a way that it is not possible to come back. In mathematical terms, this is a `h` function so that `h(m) -> x` and no way to discover `m` by knowing only `x`. Super Tilt Bro. places the login/password as `m` and transmits only `x` for authentication purpose.
SHA-256 operates on big endian 32-bit words. It requires 8 variables storing the final hashed value, 64 mathematically important constants, and an array of 64 variable words where most operations take place. This is 136 words, or 544 bytes, almost half of which are constants that can be stored in ROM. This is a very low memory footprint by today standards, and fits nicely in the NES limited RAM.
The message to be hashed is padded to be at least 64 bytes long, then is processed by successive chunks of 64 bytes. Each chunk passes through 64 rounds of pseudo-random bit shifting and logical operations, effectively producing a random-looking value in the 8 variables composing the hash. That is many iterations of multiple 32-bit operations, and definitely a big task for the 6502 CPU. Thankfully we can leverage our specific case to alleviate that.
SHA's way of scrambling your message
First, it is OK to be slow to compute the hash. The computation can be spread over multiple frames since it is done once, in the connection menu. That said, it cannot take several seconds. The player should not notice the connection being particularly slow just because of that. There also is a particularity that allows some shortcuts: the message's size is known. The login plus the password take 32 bytes, that's less than one chunk: we can implement pre-known padding and only handle a single chunk. Finally, using an 8-bit CPU we are not bound by the big endian nature of SHA-256 and can bring chaos to the variable and constant tables! Let's introduce the "shuffle endian", or when bytes are all around the place.
Instead of conforming to the table being 64 words of big endian 32 bits, Super Tilt Bro. rearanges it to 4 tables of 64 bytes. Each table containing a byte of each word. It allows accessing them more naturally in absolute-indexed addressing mode:
This SHA-256 implementation has not been benchmarked, but the connection feels instantaneous, no need to optimize further. If the performances have met the need of first try, that was not the same for correctness. Some bugs appeared, and a C implementation has been written to be able to compare the internal state at different steps of the algorithm. To ensure accuracy, Super Tilt Bro. now has some unit tests and even a fuzzing test stressing explicitly its SHA-256 implementation.
Conclusion
Super Tilt Bro. uses modern cryptography to protect your password. Do not assume it is enough! Errors can have slipped in, this is just a game, do not trust it to protect a valuable password. Anyway, it was fun to implement SHA-256 on the NES!
If you want to go further in the rabbit hole, you can follow these links:
Wikipedia article on SHA-2 has a great pseudocode for the SHA-256 implementation: https://en.wikipedia.org/wiki/SHA-2
Another mad man who did the same, this article was my starting point: https://bumbershootsoft.wordpress.com/2019/04/24/implementing-sha-256-on-the-6502/
Super Tilt Bro.'s SHA-256 implementation, it is reusable and even expandable to handle multiple chunks: https://github.com/sgadrat/super-tilt-bro/blob/713cae919834535b0c756973c33e2ea2e56bb64a/game/logic/sha.asm