上に戻る
1.概要・構想
目的
 MMC3では、プログラムサイズを1Mバイトに拡張することは不可能であるらしいので、それであれば、MMC5に移殖してしまえという安易な企画。
 これで、ハードウェア的に問題のないハックロムが可能……かもしれません。
 そもそも、MMC5のROM焼き環境が、少なくとも容易には、存在していない気がしますが……
(結局のところ、実際に動くかどうかはわからんという意味)
 ちなみに、私はマッパー変更とか、したことありませんので、ひょっとしたら滅茶苦茶なことを言っているかもしれないです。
 その辺はご了承をお願いします……
MMC5って?
 よくわからんです^^
 MMC3の上位バージョンであるが、コストがかかったりなんだりで、ほとんど使われていないらしい。
 残念ながら、私はMMC5のカートリッジを持っていないので、全て手探りで改造していくことになります。
MMC5の資料
 なんか見つからないです^^
 日本のいくつかのソフトでしか使われていないっぽいですね。
 一応、
ttp://www.tripoint.org/kevtris/mappers/mmc5/index.html
 この辺に、ピンの説明(?)があるようですが、レジスタの役割とかはないですね……
 ということで、エミュレータのソースを参考に作っていくことにします。
 一応2つのエミュのソースを参考に作りました。
 目指すところがエミュでいいのか……という話もありますけど。
(とはいえ、エミュ上で動かすことしか考えていませんけどね……実際問題)
 なんだか果てしなくグダグダですみません……
仕様
 とりあえず、現在40h個のバンクがあるのを倍の80h個に拡張します。
 後になってわかったことですが、どうやら、2000毎にバンクを切ると、80h個が限界のようですね。
 で、後ろの2個のバンクは、やはり3E-3Fのコピーを置きます。
 これは、某所の資料によると(資料元は消滅済み)、電源投入時には、一番後ろのバンクが、全てのプログラムバンクにマップされるらしいからです。
(つまり、7F-7F-7F-7Fとマップされる?)
 また、システム部にバンクをまたいだジャンプ、コールルーチンが欲しいので、レインフラッシュのスプライト処理ルーチンを潰してまかないます。
 さらに、拡張した先頭のバンク40には、初期化用のルーチンを置きます。

 レインフラッシュを潰すのは結構問題があるのですがね……
 けど、システム部にあるルーチンで、潰すことが出来て、それなりに容量を稼げるのがそこぐらいしか見つからなくて……
 自作ハックロムではレインフラッシュルーチンは使わなくする予定。
 ロングジャンプ・コールのルーチンはこんな感じで作ってみました
どー進める?
 具体的に何を変更するのかと言いますと、MMC3のレジスタを叩いている部分を、MMC5向けに書き換えていくことになります。
 逆アセンブルして調べると……
1E804E:sta $8000
1E8053:sta $8001
1E805B:sta $8000
1E8060:sta $8001
399123:sta $a000
3DBA9F:sta $a000
3EC0D4:sta $c000
3EC0D7:sta $c001
3EC0DC:sta $e000
3EC14F:sta $e000
3EC152:sta $e001
3EC17B:sta $c000
3EC1C2:sta $c000
3EC273:sta $c000
3EC292:sta $c000
3EC2F0:sta $c000
3EC30E:sta $e000
3EC5FF:sta $a000
3EC976:sta $a000
3ECD1E:sta $a000
3ECDCE:sta $a000
3ECE93:sta $a000
3FE5E4:sta $a000
3FE5FC:sta $a000
3FFE64:sta $a000
3FFE73:stx $8000
3FFE79:sta $8001
3FFF3D:sta $8000
3FFF44:sta $8001
3FFF4B:sta $8000
3FFF52:sta $8001
3FFF62:sta $8000
3FFF67:sta $8001
3FFF6C:sta $8000
3FFF71:sta $8001
 このくらいの箇所でMMC3を叩いているようです……
 うーん、結構多い気もしますし、案外少ない気もします。
 ちなみに、MMC3ではたぶん、ロードによるレジスタ叩きはない……いやあるかも(汗)
 まぁ、無いとして進めていきます……
 また、MMC5の初期化するためのルーチンが必要になります。
 リセットルーチンの付近から、自作初期化ルーチンに飛ばしてやればOKです。
 飛ばすときは、バンクまたぎジャンプを使えばOKですね……
 とりあえずは、ビジュアル面がグダグダでも、プログラムだけは正しく走る状態にしないとダメです。
 そのためには、$8000だとか$8001を叩いている当たりを重点的に変更する必要があるようです。
(76)2008年9月18日 プレさ兵衛
inserted by FC2 system