上に戻る
4.ネームテーブルミラーリングを整える
概要
 ファミコンは元からの機能として、ネームテーブルを水平方向または垂直方向にミラーリングができたようです。
 素朴な(?)カートリッジでは、それはカートリッジ内部の配線によって決まるもので(?)、ゲーム中は固定で変えられません。
 MMC3では、ソフトウェア側から、このミラーリング方向を調整することが出来ます。
 その上位のコントローラーのMMC5でも、そういった機能が、しかも拡張されて存在しているようです。
 ロックマン4においては、縦スクロールシーンなど、そこそこ頻繁にミラーリング方向を設定しているようです。
レジスタ叩き方比較
 MMC3においては、ミラーリング方向調節のために$A000にストアするようです。
 水平ミラーリング
lda #$00
sta $A000
 垂直ミラーリング
lda #$01
sta $A000
 一方、MMC5では、前回の記事で触れていますが、$5105にストアします。
 水平ミラーリング
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0)))
sta $5105
 垂直ミラーリング
lda #(((1)<<6)|((1)<<4)|((0)<<2)|((0)))
sta $5105
 なんか、変な書き方をしていますが、一応、各ビットの役割を考えてこう書いておきます。
移殖
 何のことは無く、
lda #$00
sta $A000
 だって、
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0)))
sta $5105
 だって、同じ5バイトです。
 ひたすらコードを置換していけばOKです。
 ってことで、その一覧……
 以前からの通り、BANKORG_Dは、例えばBANKORG_D $12ABCDならバンク12のABCDを表します。

BANKORG_D $1B81B3
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0))) ; 00
sta $5105

BANKORG_D $399121
lda #(((1)<<6)|((1)<<4)|((0)<<2)|((0))) ; 01
sta $5105

BANKORG_D $3DBA9D
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0))) ; 00
sta $5105

BANKORG_D $7EC5FB
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0))) ; 00
BANKORG_D $7EC5FF
sta $5105

BANKORG_D $7EC974
lda #(((1)<<6)|((1)<<4)|((0)<<2)|((0))) ; 01
sta $5105

BANKORG_D $7ECD1C
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0))) ; 00
sta $5105

BANKORG_D $7ECDCC
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0))) ; 00
sta $5105

BANKORG_D $7ECE91
lda #(((1)<<6)|((1)<<4)|((0)<<2)|((0))) ; 01
sta $5105

BANKORG_D $7FE5E2
lda #(((1)<<6)|((1)<<4)|((0)<<2)|((0))) ; 01
sta $5105

BANKORG_D $7FE5FA
lda #(((1)<<6)|((0)<<4)|((1)<<2)|((0))) ; 00
sta $5105

BANKORG_D $7FFE62
lda #(((1)<<6)|((1)<<4)|((0)<<2)|((0))) ; 01
sta $5105
 一箇所だけちょっと違いますが、問題なく移殖できるようです。
(79)2008年9月21日 プレさ兵衛
inserted by FC2 system