NEStinymachines

マリオのものと同じ、レベルの終わり

右端にポールがあり、その先に扉があるレベル。遊んでポールに跳びつき、パッドから手を離してみてほしい: 四角は滑り降り、ひとりでに扉まで歩き、残り時間がスコアに数え込まれ、カードが次のレベルを告げ、それが始まる。プログラムは 1,458 バイトの命令 566 個で、作り方も確かめ方も同じだ。

ここで遊ぶ 机の上で変えてみる カートリッジ。NES のカートリッジを遊べるところならどこでも遊べる: interlude.nes

画面の上では

フレーム 120
フレーム 120
フレーム 150
フレーム 150
フレーム 250
フレーム 250
フレーム 520
フレーム 520

しばらくのあいだ、ゲームは自分で遊ぶ

スーパーマリオブラザーズでマリオが旗のポールに届くと、パッドは効かなくなる。ポールを滑り降り、ひとりで城へ歩いて入り、残り時間が数え下ろされて点に変わるあいだそこに立っている。それから絵は次のワールドを告げるカードのために消され、そのレベルが始まる。そのあいだプレイヤーが決めることは何も無く、何かがうまくいかないこともない。二つのレベルのあいだにゲームが演じる一場面だ。このカートリッジも、自前の速さと、自前の数え方の速さと、自前のカードと言葉で同じ場面を演じる。これを測る台本は、パッドが無視されることを見せるために、ずっと左を押したままにしている。

このカートリッジスーパーマリオブラザーズ
ポールを滑り降りるフレーム数3162
そのあとひとりで歩くフレーム数3198
そのあいだ左を押していて、無視されたはいはい
時間を数え下ろすのにかかるフレーム数295314
一フレームに減る時間の単位11
一単位あたりの点5050
数え終わってから絵が消されるまでのフレーム数0143
次のレベルが遊べるまでカードが出ているフレーム数121161
レベルの番号、前と後1、21、2

書いたとおりに

このレッスンが扱うプログラムの部分。プログラム全体は、ただのテキストファイルだ: interlude.s

;; The pole: the square's right edge reaching the pole's column, at any
;; height, is the level's end. From here the pad is not read again until
;; the next level: the slide begins.
pole:
    LDA $11
    CLC
    ADC #$0F
    STA $20
    LDA $15
    CLC
    ADC #$08
    STA $21
    JSR solid
    CMP #$05
    BNE notyet
    LDA #$07
    STA $50
    LDA #$00
    STA $12
    STA $13
    STA $16
    STA $17
    STA $03
notyet:
    RTS

この前は: マリオのように、命を失ってやり直す

次は: マリオのように、穴に落ちる

すべてのレッスン