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

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

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

山内 薄

WonderGhost

来週の土曜に、ウチのサークルの仲間&F/T氏と久しぶりに集まって、月島にもんじゃ焼きを食べに行くので、その時のネタを急遽作ってみた。


要は GBA(devkitadv)用の WonderWitch 互換ライブラリで、WW用のソースをコンパイルすると、.gba が出来上がるという寸法。(ただし、WW用のソースに、若干の手直しが必要)現時点で、モノクロスワン用のグラフィックライブラリは、ほぼサポート。よほどトリッキーな組み方をしない限り、ほぼ100%の再現性が保てる。ただし、IL(インダイレクトライブラリ)はサポートできないので、いずれは、サウンド等は代替手段を考えないといけないな・・・写真は、友人 F/T 氏作の WWGP2003 課題部門賞受賞作品「WAVE R」を .gba にしたもの。後は、カラーライブラリを再現すれば、過去の拙作を、鋳型でプレスするがごとく、GBA に移植できるだろう。


余談だが、元々、もんじゃ会のネタ用だったので、3日程でサラっと挙げる気だったのだが、とんだ落とし穴にはまってしまって、結局、1週間もかかってしまった。今考えると、モノ自体は2日ほどで完成していたのだが、その後、メモリ内容が化けるという不具合に悩まされていた。始めは、どこかのポインタ変数が破壊されていて云々と思っていたりしたのだが、どうもソースに不具合はないらしい。そこで、gcc -O0 で、オプティマイザを切ったり、gcc -S で、アセンブラソースを吐き出して、それを読んでみたりもしたが、それも問題は無さそうな気配。しかし、明らかにデータが化けてしまう。原因を絞っていくうちに、char型のポインタを使用して、メモリ間コピーをするとおかしくなることに気づいたのだが、IWRAM は、32bitバス(4Byteアライン)ではあるものの、例外的に、8bit 単位のアクセスができるようになっているという情報を、すずめ愛好会さんの技術資料から得ていたので、安心していたのだが、もしかして・・・・・と思い、.bss セクションを、IWRAM から、EWRAM に変更したら、何事も無かったかのように、サラっと動いてしまった・・・・。根本的な解決にはなっていないが、とりあえずは問題は回避できた模様。
だが、IWRAM を使用しない(できない)というのは、もったいないの極みである・・・・もしかしたら、char型のポインタは、IWRAM 上に構築してはいけないのかもしれない・・・・


ちなみに、メモリ化けは、VBA で動かそうとも、F2A で動かそうとも、同じ症状が発生していたのだが、そういう意味では、VisualBoyAdvance の再現性はお見事としか言い様がない。

メモ


gbadevkit で、マルチブート対応させるには、
const int __gba_multiboot;
を宣言。そして、TEXTセクションを 0x2000000 (EWRAM 256Kbyte)に
すること。

しかし、TEXTセクションを EWRAM にするということは、WonderGhostで
変換したものは、.TEXT と .BSS を 256KByte 以内でまかなわないと
いけないわけか・・・・(苦笑)