NES研究室にあるCC65サンプル(hello, world)をNESASM用に修正してみた。
…つっても、結構前に書いたやつなので只の供養目的ではあるけど(苦笑)。
主な変更はnesasmに無い疑似命令を潰し込みしただけ。
コード自体は同じように書けるみたいなので
ソース間のやり取り(フォーラムのコードを試す等)に苦労はしなさそう。
;---------------------------------------------------------------------------- ; NES Sample1 "HELLO, WORLD!" ; Copyright (C) 2007, Tekepen ; nesasm modified by 2019, Regekatsu ;---------------------------------------------------------------------------- ; iNESヘッダ .inesprg 1 ; プログラムにいくつのバンクを使うか。今は1つ。 .ineschr 1 ; グラフィックデータにいくつのバンクを使うか。今は1つ。 .inesmir 1 ; - 垂直ミラーリング .inesmap 0 ; - マッパー。0番にする。 ; 起動 .bank 0 ; バンク0 .org $8000 ; $8000から開始 ; リセット割り込み Reset: sei ldx #$ff txs ; スクリーンオフ lda #$00 sta $2000 sta $2001 ; パレットテーブルへ転送(BG用のみ転送) lda #$3f sta $2006 lda #$00 sta $2006 ldx #$00 ldy #$10 copypal: lda palettes, x sta $2007 inx dey bne copypal ; ネームテーブルへ転送(画面の中央付近) lda #$21 sta $2006 lda #$c9 sta $2006 ldx #$00 ldy #$0d ; 13文字表示 copymap: lda string, x sta $2007 inx dey bne copymap ; スクロール設定 lda #$00 sta $2005 sta $2005 ; スクリーンオン lda #$08 sta $2000 lda #$1e sta $2001 ; 無限ループ mainloop: jmp mainloop ; パレットテーブル palettes: .byte $0f, $00, $10, $20 .byte $0f, $06, $16, $26 .byte $0f, $08, $18, $28 .byte $0f, $0a, $1a, $2a ; 表示文字列 string: .byte "HELLO, WORLD!" ; 割り込みベクタテーブル .bank 1 ; バンク1 .org $FFFA ; $FFFAから開始 .word $0000 ; VBlank割り込み .word Reset ; リセット割り込み。起動時とリセットでResetに飛ぶ .word $0000 ; ハードウェア割り込みとソフトウェア割り込みによって発生 ; パターンテーブル .bank 2 ; バンク2 .org $0000 ; $0000から開始 .incbin "character.chr"