La versione SNES di Super Mario Bros. inclusa nella collection Super Mario All-Stars ha poche differenze di gameplay rispetto alla versione NES. Una differenza in particolare, però, salta all'occhio per chiunque sia abituato al resto della serie, ed è storicamente odiata dai fan: Mario passa attraverso i blocchi mattone. Vi siete mai chiesti perché?
Frieze, programmatore (e autore dell'ottimo canale YouTube Retro Games Mechanics Explained) ha rovistato nel codice dei due giochi per capire esattamente il motivo di questa differenza, e l'ha spiegata nel suo blog.
La prima scoperta interessante è che, al contrario di quanto può sembrare, la routine della rottura del blocco in All-Stars è una copia esatta, riga per riga, del codice originale. Grazie a un leak, sappiamo persino la data di questo codice: 12 agosto 1985. Insomma, la rottura del blocco di per sé è rimasta invariata. La seconda scoperta interessante è che, sia su NES che su SNES, il codice dice a Mario di salire quando colpisce un blocco. Apparentemente, quindi, sembra che la versione "corretta" sia quella SNES. Allora cosa succede su NES?
La spiegazione è che quando il blocco viene colpito si trasforma per un frame in un tile invisibile ma ancora solido; in questo momento inizia l'animazione del blocco colpito; infine, nel frame successivo, diventa un tile attraversabile. I programmatori hanno limitato di proposito il rendering a un solo blocco per frame, forse per evitare rallentamenti o bug visivi. Nella versione NES Mario sbatte la testa quando il blocco è invisibile ma solido, e quindi non può salire ulteriormente. Nella versione SNES invece questa limitazione è stata tolta (la riga di codice è sempre lì, ma è letteralmente stata "commentata"): tutto questo processo avviene nello stesso frame, il tile diventa subito attraversabile e così Mario non va a sbattere. Chissà se questa è una scelta intenzionale, o se i programmatori hanno pensato di ottimizzare la performance senza accorgersi delle ripercussioni sul gameplay.
Secondo voi qual era il comportamento intenzionale, quello NES o SNES? Esiste qualcuno che preferisce la versione SNES?
Interessante! Mi sono sempre chiesto perché i blocchi funzionassero in quel modo nella versione SNES, ma non pensavo che la differenza stesse in qualche riga di codice commentato. Rompere strisce di blocchi mentre corri è particolarmente fastidioso perché ti ci incastri e perdi momentum, a volte però torna utile perché ti permette di salire più velocemente su altri blocchi.