カオスGBAについての戯言

(HPの日記を元にして、あとから書いた開発日記みたいなものです)

 

作るきっかけは、GBAを買った事なのかな…。

とくに欲しいソフトがあるわけでもなく、北米版フレイムレッド+アヤシイシールのGBASPが

現行のファミコンカラーSPよりカッコ良くて、ただそれを手元に置きたいと言う理由だけで

SPを買ってしまったわけです。

んで、SPで何が出来るかを考えたわけです。

スペック表を眺めていると240×160…との事。

…これはどうにかすればカオスが行けるんじゃないのかなって感じのネタ的ノリでスタートした感じです。

 

040226

最初にやったのはレイアウトのテスト。

画像処理ソフトを使って、GBAの画面にちゃんと収まるかのチェック。

で、結果はオーライ。多少見づらくなるけど致命的に絵が崩れる所はないということが判明。

ちなみにこれがダメだったら作ってませんでした。

今更ながらクロックが16MHzということを知る。

16MHzという速さはXVIで知っているけどRISCチップということで

スピードについてはかなり楽観的に考えていた気がする。

あとは、開発環境を整えたりした。

DOSベースのGCCなので1クリックでコンパイル&実行って感じにはならないけど、ま、いいか。

目標は「完成させる事」だったけど、5日以内に動くようにならなければ飽きるって自信があったので

とりあえず発表は動くようになってからというように決める。

 

040227

コンバータ作り。

今回はC言語なので、設計に迷う。(ちなみに前回と言うのはX68K版のカオスエンジェルズの移植。)

Cでプログラムを組むようになってからはスピードにシビアなマシンで組んでないから

とりあえず動けば良いやって感じの考えに行き付く。

ま、動かないと始まらないしさ。

Z80をCのマクロで置きかえられる形にして、マクロの中でCにするという感じの2段構えにした。

 

040228

コンバータとマクロが完成。

結構注意して組んだつもりだけどこの時点で絶対ミスがある自信があった(笑)

コンバートはすんなり出来たけど、コンパイラが通らず。

まあ、当たり前ですな。

コンバートをしただけで動くような設計じゃないし。

頭からソースを眺めてスタック補正RETや自己書き換え部分をつぶしていく。

ま、このへんは68の時のソースを眺めれば結構わかるので楽ですな。

と言っても7〜8時間かかった気がする。

 

040229

DOSコールとVDPの一部を実装。

でもコンパイラが通らない…。

原因は良く覚えてないけど、たしかラベルの付け間違えとかそんなのだったように思う。

DOSベースだとエラーが見にくいので、無理矢理VCでコンパイルしてコンパイルエラーをつぶした。

でGCCでコンパイルしたが7分くらいかかる。

さすがにこの遅さじゃ開発できないと思った。

ここまでか…と思ったが、試しに最適化オプションを外してみると1分くらいで終わった。

あー、やっぱり最適化には時間がかかるのね。

 

040301

コンパイル出来るようになったけど、マトモに動いてない様子。

ゲームが出来る程度のVDPの実装が終わる。ただ、メインが動いていないので

実際動くかどうかは不明。

コンバータが悪いのか、マクロが悪いのか、元ソースが悪いのか原因が特定できない為に

デバック作業は非常に困難…。

ソースとのにらめっこが続く。

 

040302

ある程度のコンバータやマクロのミスを発見したので、一旦、コンバートをしなおして様子見。

でも動かない。

致命的なコンバートと言うかマクロミスを発見したので動くと思ったのだが…。

 

040303

Z80のフラグ関係や動作にミスがないか本で調べたり。

ちなみにZ80をCにすると言うトリッキーな事をやっているので、コンバート部分は

1つの関数というとんでもない仕様です。Cで初めてGOTO文を使いました(笑)

それにしてもなんでCってローテート命令がないんだろう…。

普段でも上位と下位の4BIT入れ替えをしたいときとかに使いたくなるんだよなぁ。

 

040304

やっと動くようになる。

結局問題は元ソースにあった。正確に言うとコンバータのほうかもしれないけど

見ればわかるようなミスだったので、ソースを頭から眺めた時に発見できなかったのが悔しいですな。

マトモに動くようになるとVDPのミスが次々と明らかに(笑)

とりあえずパレットを直す。RとGが逆でした。

ちなみにこの時点ではタイトルが出るのに1分かかった。

軽い絶望感が…(笑)

スピード的にはかなり楽観的に考えていたので、この先ツライと思ったり。

WINのスピードに染まりきっていた自分を反省。

 

040305

グローバル変数を廃止してレジスタ指定にした。

速度が思いっきりアップ。

ってか、よくよく考えれば当然だよな。

グローバル変数はメモリ上に割り当てられることになってるし、アクセスが遅くなるに決まってる。

今回の移植はただの作業になるとばかり思っていたが、Cコンパイラの勉強になった。

完成の見通しがついたので画面写真を日記にアップした。

 

040307

VDPコマンドのLMMMの高速化等。

画面を間引いたりする処理が入るので、思ったように速くならない。

VDPの画面外にはみ出た時の処理のバグがどうしてもとれない。

X68の時も同じバグで悩んだ覚えあり。ちなみにMSXエミュレータのRuMSXも

同じバグが入ってます(今のバージョンは平気かもしれないけど)。

やっぱり悩み所だよな、ここは。

このバグが気になって高速化のほうに集中できず。

68の時苦労したのになんで覚えてないんだよ!!>俺

 

040308

VDPコマンドの高速化&インライン化。

実機だとVDPコマンドは便利だけど、それをエミュる場合はただのボトルネックにしかならないわけで

鬱陶しい限りですな。

たぶん移植に一番適しているのは98版なんだろうけど、98はまったくハードの事を知らないので

論外ですな。あ、でも、あのグラフィックの表示方式は結構ツライかもしれんな。

 

040309

68エミュ10Mhzとスピードを比べてみる。

やっぱり、微妙に遅い。

アセンブラで組めば良かったという後悔がわき上がってくるが、アセンブラで組んでたら

ARM7の命令セットを覚える前に飽きてただろう。

音の勉強。

GBAのGB互換音源を使う。

GBの音源はちょっと特殊なPSGなのでMSXの物をそのまま鳴らすと言う感じには行かないわけで

色々試行錯誤。

一応PSGのIOエミュは完成するもなぜか動きが不安定…むむむ。

 

040310

最適化ナシでコンパイルするとPSGのIOエミュがきちんと動くということが判明。

ピンと来る。

volatile指定してないじゃん…。

ほとんどがカプセル化されたDXとかで組んでるとvolatile指定なんて滅多にしないもんなぁ〜と自分に言い訳。

音楽ドライバ部分はそんなにややこしくないのですんなり移植。

でも、ノイズがかなりおかしい事に。どうもノイズの仕様がかなり違うみたい。

PSGも低音が違う感じ。ま、いいか、鳴ってれば…。

 

040311

迷路の描画を簡単に解析出来る範囲のアルゴリズムレベルで高速化。

画面モードを4から3に変更。

やっと実機より速くなった。

ただ、敵キャラの描画は実機と同じかやや遅い感じ。

そろそろ、やる気もなくなってきているので、ここら辺で手を打つべきか。

オリジナルのタイトルを付ける。たんにキーコンフィグ画面だけでも良かったけどね。

 

040312〜

焼け石に水程度の高速化。

これ以上の高速化は、アルゴリズムレベルで解析していくか、アセンブラで組みなおすかの

どちらかだけど、両方ともやる気ないので、とりあえず完成って事で。

ひそかな目標はXVIレベルのスピードだったんだけど、達成できませんでした。

なんていうか、やる気が足りませんな。

 

040320

簡単に出来そうな高速化を思いついたのでプログラムを書きかえる。

これにより、モンスターの描画が実機と同等に。

実際はわずかに遅いんだけど、迷路の描画が実機より早いのでプラスマイナス0という感じ。

…しかし、テストプレイをしたあとに、結構プログラムの高速化を施したからエンバグしてないと良いんだけど…。

一応、直した部分は3回くらい見なおしているんだけど、見逃す時は見逃しちゃうしね。

 

040328

ボチボチとコンバータ作りの作業でもやりますか。

結局最終的なテストプレイはしてないけど、まあ、平気だろう。

それにしても、これが遊べる環境にいて、更にマジメにプレイしてくれる人はいるのだろうか…。

ゲーム自体は今やっても面白いけど、環境が限られすぎてるしなぁ。

コンバータ(とは微妙に違うけど)類は、はじるすやONE、君が望む永遠etc…なんかがあるけど

これらは、いまでも問題なく入手可能なゲームだし、ユーザも多い。

それに比べてこれは15年も前のMSX2版をもっていないとダメなわけ。

さらに2DDが読める環境も必要だし。

あくまでも自己満足ソフトだし、作ってるだけでも楽しかったので良しとするか。

日記サイトで紹介されただけでも、やった価値があるというものですよ。

(というか、ただ単に移植しただけの俺が偉そうな事言う立場にはないよね…。たぶんオリジナル版の製作者の1/1000も苦労してないと思うし)

まぁ、このサイトにたどり着いて、このツマンナイ文章をここまで読む気力のある人たちは

実行する環境がある人たちなんだろうけどな!!(笑)

ってわけで、ここまで読んでくれた人は賢者と認定。塔に落書きでもしてください。

 

 

もどる

PC用眼鏡【管理人も使ってますがマジで疲れません】 解約手数料0円【あしたでんき】 Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 ふるさと納税 海外旅行保険が無料! 海外ホテル