■
吸い出した Alpine Games を Handydebug で動かして、デバッガトレースで、なんとなく追っていく。すると、明らかにRAM領域を破壊する行為を行っていることがわかる。(それが原因でHandyがワーニングエラーを出した訳)結論からいうと、ブートローダーが行うROMカートリッジからのデータ読み込みで、読み込むデータのアドレスが狂っていたため、おかしなデータを拾い、それをカウンタとしてRAM領域を埋めていたため、領域破壊が起こっていたのだった。ここで(今更ながら)ピンと来た・・・
実は、256K ROM と 512K ROM では、ROMにアクセスする際のページサイズ仕様が異なるため、(256K=1024Bytes / 512K=2048Bytes) Handyのヘッダ内に、このページサイズを明記してやらないと、Handy側でROMにアクセスする際のページの単位量を認識することができない。そして、私の拙作は、512KB x 1Bank を前提としたROMイメージだったのだ・・・
で、早速、.lnx ファイルのヘッダを書き換えて、
ROM Bank0 = 1024bytes/page (256KB ROM)
ROM Bank1 = 1024Bytes/page (256KB ROM)
にすると・・・・Handyで起動した!ただし、当然のことながら、エミュレータ上では存在するはずもない EEPROM(128バイトのデータセーブ用の FlashROM)の書き込みに失敗するため、そこから先は動かないようだ・・・(たぶん)
つまり、Alpine Games は、 256KB x 2Banks で動いていたことになる(に違いない)ようだ。で、例のジャンパーを切り替えることによる回路の挙動の違いを調べてみた上で、そのピンアウトのことをネットを使って調べるてみると、どうやら、あのジャンパーを切り替えると、バンクの使用、未使用を切り替えることができる(に違いない)
そうすると、また振り出しに戻ってしまう。拙作の 512KB ROM イメージのように、512KB x 1Bank 構成のROM は、この世に存在しないのか?
いや・・・・存在するのだ・・・・Pit Fighter・・・・