lynn
@chordbug
math music conlangs weird toys ⎃
it mostly is, yes! you can also stomp off the top of tall enemies like Koopas no matter your vertical velocity. and any collision counts as a stomp during a "stomp chain". here is a flowchart
so if you never jump, and walk straight onto a springboard, you get launched up with the anomalous low initial gravity
hmm what else is there? oh walljumps! these happen when mario's side and feet pixels enter the wall *on the same frame*, and the feet check snaps him to the ground. that's why you need speed… but it's neither pixel- nor frame-perfect (y%16≤5 will do, and the wall takes ~2 frames to push you out)
in my vids, you can see that after a jump, "VF" (gravity) remains set. so there's a kind of "gravity storage": when you walk off a ledge it uses the gravity of your latest jump. at the start of any (sub)level, VF is strangely low, and it feels like mario is on the moon. peep this huge goomba bounce
I think some of the weirdness of the controls is due to the fact that all horizontal acceleration is doubled whenever mario's facing direction ≠ moving direction. I've colored him white here when that's happening. this is probably for skidding, but it enables "fast accel" in speedruns
note the green mario is almost imperceptible in this video! it seems he just has a super rare nearly-frame-perfect arc that's hard to activate. 0x19 and 0x1c are just too close to one another
let's talk jump... when you press A, the game assigns mario a certain upward speed and gravity value that determines his arc. there are 5 arcs, based on his horizontal speed at the start of the jump. we can assign them colors (red, orange, yellow, green, blue) and color mario accordingly:
then he lands, and the feet nudge-right logic stops running bc he's not falling. and so his right-side pixel nudges him out *left* again. but if we've been sucked in enough that the head pixel can now bonk, we can generate more "falling" frames and get sucked in further:
so here's a trick you can do... • jump near an overhang, tap left • mario's right side sees a wall, but he is "already moving left" so it doesn't nudge him. • then as he starts falling, his feet say: "we're moving left, but see a wall here. reject him! nudge him right!"
whenever he's moving down, his feet pixels check for a wall, and decide whether to "snap" or "reject" (nudge) him based on his y%16:
mario has 5 "sensor pixels" used for physics... his feet pixels check for solid ground to land on, of course. the side pixels check for walls, and eject him outward. the head pixel checks for bonking against a ceiling. if his head misses a block but his side enters it, he gets nudged sideways
I started from github.com/MitchellSter..., which is a 1:1 translation of the game's disassembly into 18k lines of equivalent C++ code... first I massaged out all the registers, flags, macros, and `goto`. then I started breaking it into files. now I'm introducing some structs that own game state. etc
I've been reverse-engineering / porting Super Mario Bros. to C++ to understand how it works on the inside! I guess this looks exactly like an emulator but it's not, the "RAM" is recreated from internal state
green yuri: "radiohead... nobody here would know them." kamiina botan: "SAW85-92 reminds me of home 😊"
whenever I see these kind of capitals in a Garamond-y italic I'm like, man I'm sorry but that looks like ass
one of my lasting memories of Japan is how easy it is to pay with coins. you grab a random fistful from your wallet, dump them all in the little funnel, and it spits out exact change
beta-test my legally distinct polyomino stacking puzzle game: lynn.github.io/tetra.html
whoever composed the music for Tetris for the Picotron didn't have to go so hard (it's me)
I've created quite a difficult trivia game for myself (I don't know actors/history...)