EXCEEDの同人ソフト開発日記という名の備忘録

趣味のゲームソフト開発人。プロなのかアマなのかは不明(不定)らしい。

任天堂のソフトはいつも予定通りに出てこないって言われるけど、
ソフト作りっていうのは、そういうもの。
ゲームソフトは、期限までにやれと言われて、徹夜したり死に物狂いでやったからといって、
期待通りのものにはならない。そういうふうにすると、
結局、チームは妥協しなければならなくなる。
妥協させられて、できたものは、粗くなってしまう。
ユーザーは目が肥えていますから、受け付けてもらえない

山内 薄

吸い出した Alpine Games を Handydebug で動かして、デバッガトレースで、なんとなく追っていく。すると、明らかにRAM領域を破壊する行為を行っていることがわかる。(それが原因でHandyがワーニングエラーを出した訳)結論からいうと、ブートローダーが行うROMカートリッジからのデータ読み込みで、読み込むデータのアドレスが狂っていたため、おかしなデータを拾い、それをカウンタとしてRAM領域を埋めていたため、領域破壊が起こっていたのだった。ここで(今更ながら)ピンと来た・・・


カートリッジに最大で2つのROMバンクを設けることができる。


実は、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・・・・