NEStinymachines

マリオのものと同じ、カメラの遊び

二画面分の幅のレベルと、そこを歩く四角。遊んで右へ歩き、柱を見ていてほしい: 絵はしばらく動かず、それから滑り出し、やがて歩みに追いつく。向きを変えると、絵が追ってくる前に四角が画面を歩いて戻る。プログラムは 551 バイトの命令 246 個で、作り方も確かめ方も同じだ。

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

画面の上では

フレーム 60
フレーム 60
フレーム 150
フレーム 150
フレーム 330
フレーム 330
フレーム 420
フレーム 420

カメラは待ち、ゆっくり動き出し、それから留める

スーパーマリオブラザーズは、マリオを画面の真ん中に置き続けはしない。右へ歩くと、マリオは絵が止まったまま画面の左側を横切る。80 ピクセルを少し過ぎるとカメラが動き出すが、マリオより遅いので、マリオは 112 に来るまでカメラに追いつき続ける。そこからはマリオが動いたぶんをカメラがすべて受け持つ。マリオが動いてもカメラが動かないその範囲が遊びで、ゆっくりした動き出しのおかげでスクロールは決してがくんとしない。左へ歩くと、ゲームのカメラはまったく動かない。マリオがレベルを戻れないのはそのためだ。このカートリッジは右側をゲームのとおりに持ち、左側には 48 という自前の縁を持つので、カメラは戻って追う。

このカートリッジスーパーマリオブラザーズ
カメラが最初に動くときのプレイヤーの画面上の位置8081
歩みに追いついてからプレイヤーを留める位置112112
プレイヤーより遅く動いた、動き出しのフレーム数6545
左へ戻るプレイヤーをカメラが追うはいいいえ、決して
左へ歩くときにプレイヤーを留める位置48無い
プレイヤーが右へ向き直ってからカメラがまた動き出す位置7980

書いたとおりに

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

;; The camera, after the square has moved. Its place on the screen is x
;; less the camera. Walking right past 80, the camera moves a pixel; and
;; if the square is still past 112, the camera is set to keep it at 112.
;; Walking left with the square nearer the edge than 48, the camera is
;; set to keep it at 48. Then the camera is held between 0 and 256, the
;; two ends of the level.
camera:
    LDA $11
    SEC
    SBC $20
    STA $22
    LDA $13
    BEQ settled
    BMI leftward
    LDA $22
    CMP #$51
    BCC settled
    INC $20
    BNE eased
    INC $21
eased:
    LDA $11
    SEC
    SBC $20
    CMP #$71
    BCC hold
    LDA $11
    SEC
    SBC #$70
    STA $20
    LDA $12
    SBC #$00
    STA $21
    JMP hold
leftward:
    LDA $22
    CMP #$30
    BCS settled
    LDA $11
    SEC
    SBC #$30
    STA $20
    LDA $12
    SBC #$00
    STA $21
hold:
    LDA $21
    BPL notbelow
    LDA #$00
    STA $20
    STA $21
    JMP settled
notbelow:
    CMP #$01
    BCC settled
    BNE above
    LDA $20
    BEQ settled
above:
    LDA #$00
    STA $20
    LDA #$01
    STA $21
settled:
    LDA $11
    SEC
    SBC $20
    STA $22
    RTS

この前は: マリオのようにスクロールする絵

次は: ゼルダのように滑り込む部屋

すべてのレッスン