venerdì 15 aprile 2011

11 Sono solo un "Mario" normale...


Al mondo esistono individui devoti e la devozione, alle volte, è una gran bella cosa. L'oggetto idolatrato, infatti, viene eternato dalla passione dei proseliti che lo venerano ed, in quanto culto, spesso e volentieri subisce interventi di restauro, rivisitazioni e tributi che ne moltiplicano la risonanza con effetti a catena...

"Mario" è indubbiamente vittima di questo fenomeno...

...Ed "L" di "SelectButton" deve essere senz'altro della mia stessa opinione, visto e considerato il suo approccio alla questione, sapientemente anunciato in occasione del "Super Mario Bros. ROM Hacking Month 2011". :D

Il logo dell'evento.

Il banner dell'iniziativa dice già tutto, no? ;) Connotandosi come una sorta di via di mezzo tra l'arte moderna ed il dump della VRAM del videogame dell'idraulico più famoso del mondo, indubbiamente invita alla sperimentazione, così come l'interessante iniziativa succitata che, pur essendo indubbiamente molto ma molto tecnica, ha comunque prodotto dei frutti succulenti e degni di nota. :)

Ma, in buona sostanza, cosa ci dice "L"?

Creativity will prevail!

Andiamo a tradurre (tradire... :P ), va la! :)

«"Super Mario Bros".

E' un videogioco, ma per qualcuno è altresì una "tabula rasa" sulla quale svariate persone hanno inscritto le loro idee originali, oscillanti tra il reverente ed il sovversivo; fra il serio ed il faceto. Si potrebbe, a ragione, sostenere che la storia dei platforms sia una risposta diretta a "Super Mario Bros"...

...E che genere di risposta potrebbe mai essere più diretta di un ROM hack riguardante quello stesso venerabile tomo?

Durante questo mese ci accingeremo a riesaminare e scandagliare quelle lande di mattoni e tubi, voragini e declivi; è contorto il mondo colorato, se osservato attraverso una lente deformata. Oppure c'è da spazzare della palvere da un recondito angolo dello spazio delle possibilità fisiche, da troppo tempo dimenticato...
».

Incipit senz'altro interessante, non trovate? ;) [NDT].

L'angolo delle possibilità fisiche...

«Importanti punti di riferimento da tenere a mente nel proseguimento di questa avvetura:

- "SMB" Utility: Un "level editor" estremamente utile, che può altresì insegnarvi tutte le idiosincrasie e le genialate della programmazione in ambito "NES".

- How to Assembly Hack "Super Mario Bros.": Il potenziale di questa discussione è davvero grande, ma potrebbe essere necessaria un'adeguata conoscenza del linguaggio di programmazione "assembler" per approcciare l'argomento.

- "Super Mario Bros." ROM Map: Volendo soddisfare le vostre inclinazioni esadecimali, questo è indubbiamente un buon punto di partenza per cominciare a sfrucugliare tra i codici...

- "NES" Palette Editor: Un editor che evidenzia tutti i valori esadecimali corrispondenti ai colori definiti in una ROM "NES". Da utilizzare in congiunzione con la precedente ROM Map, per orientarsi.

- Prima di "Mareo" c'era "Mørio". Perchè qualche volta tutti noi sentiamo il desiderio di abbandonare la strada maestra per penetrare l'ignoto...».

Non so se è "Super", comunque è "Morio"... ;)

Ovvero, "L" ci indottrina per bene, fornendoci le materie prime per seguirlo (eventualmente) nell'impresa. Oltre a questo, svaria in maniera evidentemente creativa (inside joke? Non lo sapremo mai, probabilmente... :P ).

Ma continuiamo...

«Ed ora, come hack inaugurale, ecco a voi...

E' un Mario qualunque...

...Si tratta di un hack dei livelli e della fisica del gioco che ho battezzato "Normal Mario Bros.".

Attraversa tre mondi per salvare il reame!

Badate bene, questo è un hack serio: è concretamente possibile riuscire a raggiungere la fine del gioco senza ricorrere ai trucchi dell'emulazione. Per contro, essendo questo hack immensamente più difficile del gioco originale, si potranno vincere vite con maggior frequenza. Vi spiegherò gli accorgimenti che ho messo in atto per rendere possibile tutto questo, ma già che ci siete, provate quello che c'è!

...E quando lo avrete terminato, sperimentate anche il livello "Hard", che indubbiamente rappresenta una sfida di gran lunga più interessante rispetto alla controparte offerta dalla ROM originale!

(E, gentilmente, vogliate ignorare la scolorita schermata introduttiva).»

Might as well, jump. Jump!

«Codificando "Normal Mario Bros.".

Come avrete senz'altro intuito, l'idea che sta alla base di "Normal Mario Bros." ruota tutta attorno al concetto di riduzione della capacità di salto di Mario; in altezza, questo è stato decurtato di un blocco, rendendolo più o meno equivalente all'elevazione che l'idraulico aveva in "Donkey Kong". Per permettere a Mario di superare ugualmente i livelli, sono state comunque messe in atto numerose modifiche, come la riduzione dell'altezza dei tubi, l'aggiunta di pozzi senza fondo al posto di tutte quelle buche che diversamente sarebbero state delle trappole inevitabili, nonchè l'abbassamento di tutte le piattaforme nei livelli aerei.

Ad ogni modo, solo le modifiche strettamente necessarie sono state apportate. La gran parte della geografia dei livelli è rimasta inalterata.

Essendo privo del suo salto prodigioso, anche il rapporto di Mario con i nemici che popolano i livelli è radicalmente mutato. Ora ogni avversario deve essere considerato a tutti gli effetti come un potente nemico che non è più possibile eludere per vie verticali. Un trio di "Goomba" è una minaccia oltremodo significativa. Un "Paratroopa" ballonzolante è un enorme gigante pronto a schiacciarci. Eliminare una fila di nemici grazie ad un guscio o eseguire un "triplo salto goombale", improvvisamente non è più una cosa da poco! Questo hack ci fa concretamente capire che cosa siano sempre stati, in realtà, quei piccoli avversari: dei grossi e mortali mostri che, solamente dalla tranquillità della nostra ex condizione aerea, sembravano banalmente minuscoli! E per quel che concerne Bowser, il confronto con lui ora ha il sapore di un duello all'arma bianca, con affondi e stoccate. Ogni suo salto adesca Mario ed ogni fiammata lo costringe a ritirarsi ed a ripensare le sue mosse, mentre un attacco improvviso, portato in un momento di distrazione, può concludere tragicamente il tutto.».

Oh, no!

«Per controbilanciare la grande difficoltà di questa hack ed a causa dell'incapacità di Mario di raggiungere buona parte dei blocchi "?", ora è possibile guadagnare una vita extra raccogliendo 10 monete invece delle canoniche 100. Questo fatto ha significativamente alterato il valore delle monete liberamente disponibili lungo i livelli. Improvvisamente, quei gruzzoli disseminati lungo il livello 2-2 e le caverne bonus assumono una connotazione decisamente più renumerativa! Coordinare con tempismo i salti per conquistare le monete fluttuanti dei livelli 1-3 e 3-3 è altresì un prezioso beneficio. E, parallelamente, ora i blocchi da 10 monete sono senz'altro qualcosa di più del frivolo strumento di gioia percussivo-compulsiva del gioco originale.

Il videogame termina e la principessa viene tratta in salvo alla fine del livello 3-4. Questa riduzione è stata messa in atto per una precisa serie di motivazioni:

- Non è impossibile, ma è abbastanza irragionevole tentare di confrontarsi con gli "Spinies" del livello 4-1, saltando.

- Il labirinto del livello 4-4 sarebbe impossibile da superare.

- Parimenti, il livello 3-4 è un'impresa altrettanto sovrumana.

In conclusione "Normal Mario Bros." ha il medesimo numero di livelli di "Super Mario Land".

Con malcelato orgoglio, inoltre, mi sento in dovere di fare un'ulteriore precisazione. L'"Hard Mode" ("Buzzy Beetle Mode") è effettivamente differente, questa volta! Ogni cambiamento che "SMB" apporta in modalità "Hard" ha ripercussioni radicali che trasformano totalmente questa versione del gioco:

- I "Buzzy Beetles" sono decisamente più minacciosi rispetto ai "Goombas". I loro gusci rimbalzanti sono un pericolo che obbliga il giocatore a stare sempre all'erta. Per contro, essi ricompensano grandemente chi padroneggia totalmente l'abilità di usare i gusci per eliminare i nemici in tutta sicurezza.

- Velocità dei nemici terrestri leggermente maggiorata. L'accellerazione extra rende considerevolmente più significativa la corretta valutazione del punto d'atterraggio di un salto.

- Le piattaforme semoventi sono più piccole!

- La "Warp Zone" non è accessibile.

- Come ben sapete, in "SMB" alcuni livelli iniziali del mondo 1 e 2 sono stati reimpiegati nei mondi 5 e 7, ma con avversari addizionali, allo scopo di renderli un po' più difficili da superare. Questi nemici supplementari sono tuttavia già compresi anche nei livelli iniziali, giocandoli in "Hard Mode". Morale: "Bullet Bills" in 1-3! "Parakoopas" in 2-3! Più barriere infuocate in 1-4 e 2-4!».

Volare!

Ed ora via con lo spiegone tecnico, per tutti gli amici informatici! :D [NDT].

«Assembly Hacks.

- Limitare la capacità di salto di Mario.

Il risultato è stato conseguito tramite un procedimento "ad hoc".

CODICE:
VerticalForce      = $0709
VerticalForceDown  = $070a

Questi indirizzi di memoria costanti, contenuti alla linea 390 del file "smbdis.asm", sono utilizzati per le routines fisiche che controllano il movimento di Mario. Io mi sono limitato a cambiare il valore "$0709" in "$070a"; in buona sostanza ho fatto in modo che entrambe le costanti puntino la medesima variabile.

- 10 monete = 1UP.

Consideriamo la seguente routine in "smbdis.asm":

CODICE:
GiveOneCoin:
    lda #$01               ;set digit modifier to add 1 coin
    sta DigitModifier+5    ;to the current player's coin tally
    ldx CurrentPlayer      ;get current player on the screen
    ldy CoinTallyOffsets,x ;get offset for player's coin tally
    jsr DigitsMathRoutine  ;update the coin tally
    inc CoinTally          ;increment onscreen player's coin amount
    lda CoinTally
    cmp #100               ;does player have 100 coins yet?
    bne CoinPoints         ;if not, skip all of this
    lda #$00
    sta CoinTally          ;otherwise, reinitialize coin amount
    inc NumberofLives      ;give the player an extra life
    lda #Sfx_ExtraLife
    sta Square2SoundQueue  ;play 1-up sound

Come potete osservare, è veramente semplice cambiare la frequenza con la quale si guadagnano le vite in funzione delle monete raccolte; basta variare il parametro "#100" in una qualsiasi altra cifra (ad un bit) ed il gioco è fatto! IPS patch corrispondente.

Analogamente, per ridurre il contatore delle monete, trasformandolo in un conteggio ad una sola cifra, guardate questo codice:

CODICE:
StatusBarData:
    .byte $f0, $06 ; top score display on title screen
    .byte $62, $06 ; player score
    .byte $62, $06
    .byte $6d, $02 ; coin tally
    .byte $6d, $02
    .byte $7a, $03 ; game timer

Questa area dati è decisamente preziosa per andare a modificare la barra di stato del gioco. Cambiamo il secondo parametro della riga "coin tally" in "$01". IPS patch corrispondente.

- Ridurre la coordinata alla quale Mario emerge dai tubi.

Come tutti ben sapete, Mario emerge da un tubo ad una precisa coordinata "Y" dell'altezza dello schermo. Siccome i tubi, in questa, hack, sono stati tutti ridotti di un blocco, in altezza, è necessario operare un aggiustamento a questa costante.

Osserviamo questa routine:

CODICE:
EntrMode2: lda JoypadOverride    ;if controller override bits set here,
           bne VineEntr          ;branch to enter with vine
           lda #$ff              ;otherwise, set value here then execute sub
           jsr MovePlayerYAxis   ;to move player upwards (note $ff = -1)
           lda Player_Y_Position ;check to see if player is at a specific
                                  coordinate
           cmp #$91              ;if player risen to a certain point (this
                                  requires pipes)
           bcc PlayerRdy         ;to be at specific height to look/function
                                  right) branch
           rts                   ;to the last part, otherwise leave

Il valore "#$91" è stato modificato in "#$a1". IPS patch corrispondente.».

Let's-a go!

Della serie: dopo la chicca di "Normal Mario" e lo spiegone tecnico, "L" si fa prendere la mano e si butta a capofitto sulle "variazioni sul tema". Enjoy!!! :) [NDT].

«Questo è "Plumberbalt". In quest'altro hack, il "D-Pad" è totalmente disattivato. Potete controllare Mario esclusivamente tramite i pulsanti "A" (per saltare) e "B" (per correre più velocemente). Il tutto può essere inteso come uno sfacciato tentativo di estremizzare la massima che asserisce che il metodo più facile per finire "Super Mario" consiste nel correre verso destra senza mai fermarsi. I livelli sono per la maggior parte gli schemi originali del videogame. Immodificati. A differenza del motto ispiratore, spesso sarà necessario rallentare la corsa di Mario per superare determinati ostacoli o riuscire a calibrare i salti sulle piattaforme di vitale importanza. Diversamente, per essere fedeli al motto, correre cocciutamente contro gli ostacoli solidi può essere utile per ottenere una temporanea interruzione dell'azione di gioco.

Ho ordinato i livelli in base a questioni estetiche ed alla loro difficoltà complessiva. In tal senso, abbiamo:

Il mondo 1, che contiene i livelli: 1-1, 4-1, 2-3 e 1-4.
Il mondo 2, che contiene i livelli: 3-1, 3-2, 3-3 e 3-4.
Il mondo 3, che contiene i livelli: 5-1, 5-3, 6-3 e 5-4.
Il mondo 4 ???

Per il resto, come in "Normal Mario Bros.", sono necessarie solamente 10 monete per guadagnare una vita. Questo significa, tra le altre cose, che colpire il fantomatico blocco "?" durante la corsa è essenziale per massimizzare le vite a disposizione.».

Me la vedo grigia...

«Questo è "Super Mario Brown", un hack cromatica di "Super Mario Bros." che muta tutte le tinte del gioco nelle corrispettive approssimazioni "NES" del giallo. In relazione all'emulatore impiegato, il risultato varierà da un piacevole colore dorato (FCEUX) fino ad un acre "non-propriamente-a-cristalli-liquidi-verdi" (Nestopia).

Si potrebbe intendere questo hack come una reminiscenza dell'originale, trascritta su carta ingiallita. Oppure, spaziando con la fantasia, immaginarlo come un film virato seppia. O ancora una sorta di speciale edizione per collezionisti del gioco, in foglia d'oro. Oppure una specie di meta-commento relativo al ricordo della percezione del colore di un videogioco così vecchio. O magari ho solo cercato di fare un gioco di parole visuale incentrato sul concetto di "età dell'oro Nintendo".

Mi permetto di aggiungere questo: taluni sostengono che il giallo sul marrone sia più rilassante per gli occhi rispetto al "bianco e nero", specialmente in condizioni di scarsa illuminazione in notturna. Ad ogni modo, ecco qua! E se per caso volete applicare questo effetto ad un altro hack, vi passo pure l'IPS.».

Super Kinoko Fry...

«Questo è "Super KinokoFry". Si tratta di un hack grafico della ROM, nello stile dell'omonimo fumetto web: "KinokoFry". Enjoy!

Un ringraziamento speciale a Dess per non aver notato finchè non era troppo tardi che ho rubato la grafica della testa di Rebecca da questo link.».

Ok. Missione compiuta. Spero vi siate divertiti a leggere tanto quanto mi sono divertito io a tradurre (che, in verità, pressappoco al 50% del lavoro mi son detto: "Ma chi me l'ha fatto fare?!" :D ). Ad ogni modo, è finita!

Enjoy!!! :)

Cos'è questo QRCode?
Come l'hai realizzato?


11 commenti:

Bert ha detto...

No dai... Mario anche qui, no! Non bastavano quei siti di retrogames pieni di fanboy? Ora m'infesta pure la piramide? X-D

Marte ha detto...

E magari questa non è nemmeno la prima volta!!! :P ;)

BrunoB ha detto...

Azz, l'assembly del 6502, lacrimuccia :'

Marte ha detto...

Ci smanettavi? :)

BrunoB ha detto...

Leggevo Commodore Computer Club ;) ma quando iniziai a fare qualche programmino era già tempo di Amiga (e anche lì, quando finalmente trovai il "corso di assembler di Fabio Ciucci", era già tempo di PC). Bei tempi cmq!

Marte ha detto...

Fammi indovinare. Ora che il tempo del PC è perenne, diciamo, non hai più tempo tu. :P

Lorenzo ha detto...

sono giovine, sono arrivato ai tempi del game boy. Al massimo ho finito seicento volte i super mario land per la console portatile... e i due mario RPG per nintendo ds, ma quelli non contano

Marte ha detto...

Allora forse è giunta l'ora di riprogrammare l'originale, Wrath. :)

PS: Come va l'ispirazione per Minecraft, t'è venuta o era solo un fuoco di paglia? :P

Lorenzo ha detto...

quasi quasi ora lo scrivo...

Marte ha detto...

Bravo. Io intanto sguazzo nelle vasche radioattive della mia fantasia. :D

Lorenzo ha detto...

per ora il massimo che ho fatto è riprodurre la testa di mario in minecraft per un murales in "pixel art"

Ritorna in alto! Related Posts Plugin for WordPress, Blogger...