プログラムROMをざーっと見て見ると、確かにネーム入れを作れそうな空きは無い。(文字列も必要だからね)
が、それは無駄な処理を含めた話で、削ろうと思えば(無論ゲーム内容に支障が無いレベルで)かなり削れる事が判明。
そこで思い付きで見切り発車。
MAMEを使えるのは非常に有り難い。ROM焼いたり消したりは苦痛だからねぇ。(消えるの待つ時間が;)
ただ、hiscore.datが居るのを忘れてたので、途中何度か「何でハイスコアが消えないんだ?」とか、hiscore.datがパッチるつもりの場所?をいじったりするとハイスコアの場所に何も表示されなくなったりして「いったいどこがバグってるよ!」と迷走したり・・・
☆ 頑張る俺の足跡(笑) ☆
まずは、ネーム入れの前に文字列表示の方法等の試しと、座標決め。
文字コードがオリジナルなので、文字列作成が面倒な事が判明(笑)
こんなもんかなぁ、という事で得点や名前等もデータ入力。単なる文字列表示では無く、ちゃんとデータを展開するルーチンを作って表示、ゼロサプレスも抜かり無し。
若干の調整と、ゴミ整理をして綺麗にしてみた。下が空きぎみなのは、最終的に「何か」をするつもりが有る為。出来るかどうかは別問題。
ゲームに組み込み。とりあえず、タイトルデモの後にハイスコアデモ、という感じに。
データの登録を初期処理に入れ忘れてるので、空の0データが表示されてる。何かを作るとすぐに試したくなるので、俺には良くある事。まったく問題無し。
データを入れた。ここで気が付いた。デモで「いんぷっとゆあねーむ」はおかしいと・・・(笑)
データの整理と色の見直し。パレットにろくなのが無く、文字表示に使える色が7色しか無い。
それはともかく、ハード的な性能は、バラデューク基板の方が圧倒的に上だった。
ゲームオーバー時に呼ばれるルーチン作り。これが意外と難関で、デモの時でも呼ばれてしまって大苦戦。
背景は残そうかと思ったけど、ちょっと見苦しい気がするのでやっぱり消す事にする。
名前の登録はまだ出来ないけど、とりあえずネーム入れの資格が有る時のゲームオーバー時のみに呼ばれるルーチンの完成。点数は反映だけさせた。
無論あの未使用音は鳴らしてます;
そのままデモまで待って見た状態。使ってるRAMはゲーム中未使用領域だったらしく、今の所バケる事は無しで一安心。
得点に合わせてちゃんと順位が変動するかチェック。同点だった場合は後からの方を上位にランクする様にした。
ちゃんとラウンドも対応。100面以上はFFと表示されるはず。(未確認)この辺りまで出来れば、完成は時間の問題なんだけど・・・
入力処理手前まで完成。途中でクレジットが入っても、ネーム入れが終わるまでちゃんと続く予定。
空き容量に若干の不安が出てきた。(下の空き部分で遊べなくなるかも;)
ドラゴンバスターはCPUが6809で、少し前までは一番得意だと思っていたんだが、最近はずーっとZ80と戯れていた為、命令形態の差に戸惑ってたりする;;;。(特にフラグの変化条件の違いが;)
6809は最高に使いやすい最も高性能な8ビットCPUだと信じていたが(実際そう感じていたし)、Z80も馴れてしまえば、それはそれで意外とプログラムが組みやすく、「こんな処理、Z80なら数バイトで簡単に出来るのに」とか結構感じたりも。(Rレジスタは偉大だわ;)
これが出来たら、次はパックマンにぜったい入ってる筈の隠し画面を調べるナリよ。
昔駄菓子屋で筐体におちゃめなイタズラしてたら暴走して、文字ででっかいパックマン(だったと思う)とnamcoという表示が出て固まったんだよー。
パックマンは縦画面のゲームだけど、その表示は横だったと記憶してるんだが…、真相を突き止めたい年齢に拙者もなった、という事だな。(意味やや不明)
I/Oチェック(ボタン)。スナップじゃ全然伝わらないと思うが(笑)
I/Oチェック(レバー)。入力ポートがなかなか見つからなかったのは色々な意味でちょっと驚き;メインはもうほぼ形が出来た。文字選択も一応可能に。(256キャラ選べちゃうし、もの凄い高速だが(笑))
![]() |
![]() |
一応の完成だだだだ。動作的には純正っぽく出来てる気がする。
これでネーム入れは可能だった事が証明ね(笑)
2Pにもちゃんと対応出来た。(2P側が先にゲームオーバーになっても大丈夫。)
ルーチン内にはNOPがポロポロあったり、無駄な間隔は残ったままで整理は殆どしていないが、バグは無さそう。(チェックが結構一発でちゃんと動いてたのが奇跡。騙されてる気もする(笑))
後は遊びを考えていたんだけど、合理化を図らないと厳しい予感。(一つ一つは小さく作れたと思っていたが、最終的に見るとまだ幾つかの処理がサブルーチン化可能…)
バイナリエディタで思い付きガシガシ打ちをしてるので、記憶が遠くなると、自分で書いた物を自分で解析せにゃならなくなるんだが(それで駆け足でここまで作った(笑))、あまり一般的とは思えない処理をしている気がするので、きっと難解(笑)ドルアーガをいじった時は、こんなにレジスタ操作とかした記憶が無いので、どこか考え方が6809的で無い作りなんだと思う。
分かる人は逆アセして、もっと良いルーチンを教えてくれるのは優しい心づかいでありますね。
現時点の差分でごんす。(終了しました)3つ全部に差分を当てる事。分からない人はやらない事。何があっても無保証。 差分は http://www.zerodivide.com/neo/ のNEOというソフトで作成しました。
あーだこーだと色々調べてみたんだけど、やっぱりスプライトの事はイマイチ分からないので諦める事にした。
下の空いてる部分でセリア姫の仮装ひげダンス大会を開催したかったんだがなぁ…
ちょこちょこっと配置を整理して、ハイスコアをそれなりに変更(笑)
これでお茶を濁す可能性が高かったんだが…
ボケーっとしてたら…神が降ってきました(笑)
![]() |
![]() |
ついに分かってしまった。
「気になって仕方ないので、本腰入れて徹底的にやるか…」と、面倒な物を作ってまで調べた甲斐があった。きっちり一晩かかった;
これからは好きにスプライトを表示できるので、予定通り大会開催だ!
以下続いてしまう事になりました。
|
どかーん!
できたー!!!
じーっと見ていると目が回りそうになるのは失敗かもしれんが(動作確認でちょっと気持ち悪くなった;)
せっかく表示出来る様になったからには、とことんやりたくなる訳で。
差分はここから。 終了
思ったよりも大掛かりな大改造になっちゃって、後から付けたしの連続とバグ対策のおかげでプログラムは「ぐっチャグチャ」っす。久々の6809だったけど、だいぶ感覚が戻った。(その分Z80の知識が飛んだ気もするが(笑))
とりあえず2P対応にはなってるけど、2Pのテストはあまりしてないのでやらないでね(笑)
バニーの耳忘れてた。別パーツが対応出来る形ではなかったので思いっきり書き直し;
ついでに処理するキャラの数を26キャラに増やした。
んー、こうなったら、処理落ちするネーム入れを目指すか!(ウソ)
後もうひと味入れたら本当の完成!(の予定)