NEStinymachines

マリオのように、ブロックから出るコインと点数

固さのレッスンのレベルに、上の帯を足した: 点数とコインの数。遊んでブロックに跳び上がってみてほしい。プログラムは 1,379 バイトの命令 548 個で、作り方も確かめ方も同じだ。

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

画面の上では

フレーム 92
フレーム 92
フレーム 98
フレーム 98
フレーム 112
フレーム 112
フレーム 140
フレーム 140

数はすぐ変わり、コインはゆっくり動く

スーパーマリオブラザーズでは、マリオの頭がブロックを突き上げたまさにそのフレームでコインが数えられ、点数が足され、上の帯もそのフレームで書き直される: コインの数と、変わったのは一つだけでも点数のすべての桁を。そのあとに見えるものは飾りだ。コインのスプライトがブロックから飛び出し、上がって落ちる間に四つの絵を回り、それが消えると、その値打ちの点数がいた場所からゆっくり浮かび上がる。このカートリッジも、自前のコインと飛び方と数字で、同じ順番で出来事を起こす。

このカートリッジスーパーマリオブラザーズ
点数はコインの数と同じフレームで変わるはいはい
そのフレームの前後に帯へ書いたタイルの数118
コインが見えているフレーム数1731
コインが上がるピクセル数2738
コインが回る絵の数と、それぞれを見せるフレーム数4 枚、それぞれ 2 フレーム4 枚、それぞれ 2 フレーム
点数が見えているフレーム数と、上がるピクセル数40、19 上がる46、22 上がる

書いたとおりに

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

;; The bar: the score's six digits on row 2 from column 2, a coin, and
;; the coins' two digits, all written again whenever either changes.
bar:
    LDA #$20
    STA $2006
    LDA #$42
    STA $2006
    LDX #$00
digits:
    LDA $60,X
    CLC
    ADC #$2A
    STA $2007
    INX
    CPX #$06
    BNE digits
    LDA #$00
    STA $2007
    STA $2007
    LDA #$08
    STA $2007
    LDA $66
    CLC
    ADC #$2A
    STA $2007
    LDA $67
    CLC
    ADC #$2A
    STA $2007
    LDA #$00
    STA $68
    RTS
;; The coin: 18 frames, rising 3 pixels a frame for 10 and falling 2 for
;; 8; then the points, 40 frames, rising a pixel every second frame.
coin:
    LDA $69
    BEQ points
    CMP #$09
    BCC sinking
    LDA $6A
    SEC
    SBC #$03
    STA $6A
    JMP flown
sinking:
    LDA $6A
    CLC
    ADC #$02
    STA $6A
flown:
    DEC $69
    BNE floated
    LDA #$28
    STA $6D
    LDA $6A
    STA $6E
    RTS

この前は: マリオのように固い、地面とブロックと壁

次は: マリオのクリボーのように、壁でも互いにでも向きを変える歩き手

すべてのレッスン