ファミコンのプログラム2

このエントリーをはてなブックマークに追加
342名前は開発中のものです。
nesdevにあるDASM32というアセンブラを使って
4メガバイトのマッパー#2 ROM作ってみました。
(ソース汚いので公開はかんべん)
NESヘッダの設定ですが、個数で設定するので最大FFつまり
255個、4メガバイトより1バンク分小さくなります。

いくつかエミュで実行させたんですけど、
うまくいったかと思ったら、データを1バンクずらすと
正常に参照できないみたい、つまり動作不可。
g-nes…ROMの高位番地ではデータのあるバンクが一つおきで正常に動作しています。
   アドレスの低いところでは正常動作。
PocetNES なぜか?GNESと同じ動作。不思議です。
NnnesterJ GNESと反対のバンクで正常動作。
VirtureNES これのみ正常動作
yame 起動すらせず
想像するにそれぞれのエミュではPRGROM用の読み込み領域を
1MB程度もってて、それより高い番地のデータはCHRROMに読んでしまう、
それで$4000で区切られているべきデータが$2000になってしまい、
データがどこかへ飛んでしまうという・・・
一応「PRGROMの最後の$4000バイトをC000にハードワイヤする」って
動作をしてくれるエミュは起動だけはしますが…。
正常動作がVirtureNESのみとは寂しい結果に。やっぱり1メガバイトで我慢します。
みんなが使ってるNESASM使えますし。

>341
NESASMを使うと
 .bank 127   ;1バンクは8kバイト
が最大ですから、PRG、CHR関係なく全体で1メガバイトのROMを作成します。
マッパー#2、MMC5関係なくこれが限界です。
343名前は開発中のものです。:2006/04/20(木) 06:26:21 ID:8eW3K1w2
>342
「データをずらす」とは
  .bank 100
  .incbin "data.bin"
を.bank 101 とかにすることです。
344名前は開発中のものです。:2006/04/20(木) 16:49:22 ID:WLsBR7uE
http://gamdev.org/up/img/5350.zip
4MB実験(DASM32)