2012年8月26日の日記を表示中

2012年 8月26日 (日)

ファンタジーゾーンII

昨日の続きで、今日は電池切れしているらしいファンタジーゾーンIIの修理にチャレンジしてみました。といっても、こちらは基板自体が壊れていなければ、プログラムROMを吸い出して、295min先生の作ったツールでデコード・マージしたものを焼いて載せ換えればよいだけのはず・・・。

ファンタジーゾーンII

電池が切れているらしいMC-8123

って、この基板、JAMMA変換のハーネスついてると思ってたら、違うのかよ (;´Д`)。修理頼むならハーネスくらいつけてくれー(;´Д`)

ハーネスないとチェックできないんですけど・・・

というわけで、まず手元にあった動作未確認のピタゴラスの謎の基板用のJAMMA変換ハーネスを作って(こっちも何かのコントロールボックス向けみたいなカードコネクタがぶら下がっていた)、これを使い回してファンタジーゾーンIIの方は絵出しだけを確認することにしました。まずはハーネス。

ピタゴラスの謎用のハーネス

これでピタゴラスの謎が起動することを確認。よし、これで絵音とクレジットは確認できるな。

ピタゴラスの謎

次に、295min先生の作ったプログラムをダウンロードして動かしてみます。ツール自体はWindows向けのバイナリとして配付されていますが、中にソースが含まれているので、コンパイルし直せばLinuxでも動くはず・・・。というわけで、コンパイルしてやったら普通に通って動きました。わーい。

・・・が、生成された、電池切れ対策用のプログラムROMが全然動きません。真っ暗な画面のままです。うおー、なぜだ・・・。

とりあえず295min先生の方で生成したプログラムROMのデータ(?)を頂いて動かしみたところ、こっちではちゃんと起動しました。うおお、すげえ。というか基板生きててよかった。

ファンタジーゾーン II起動した

いやしかし、何でLinux向けにコンパイルしたバイナリだと、きちんと動くデータが出来ないんだろうなぁ・・・。Windows上で付属のバイナリを動かしてみたところ、こっちではそれっぽいデータが生成されました。ということは、コンパイラ依存なのかな・・・?生成されたものを見比べると、何か全然違ってます。うーん、ビット幅とか、その辺かなー。

ソースを追いかけてみたところ、配列のサイズが足りてない部分を発見。なるほど、これのせいでおかしなバイナリが生成されてしまっていたのか。ボーランドのコンパイラだと、たまたまこれで動くコードが生成されてしまうために、Windowsだと動いてしまい、開発中に見つからなかったものと思われます。ここを直したら、Linuxでもちゃんと動くデータが生成されるようになりました。

というわけで、あらためてファンタジーゾーンIIです。あー、Z80Bどうしようかね。

ファンタジーゾーン II

ついでに、MC-8123繋がりで、SYSTEM2のタイトルも見てみることにしました。元々ジャンクのモンスターランドとチョップリフターは起動せず。ぐぬぬ。

モンスターランド起動せず

チョップリフターもだめでした

また、ブロックギャルについては、295min先生のツールが対応しているかと思いきや、うちのはSYSTEM2用なために使えず(295min先生のツールはSYSTEM1の方のみ対応らしい)。仕方ないので、M1信号を使って実験してみたところ・・・

ブロックギャルの基板はM1を使う方向で・・・

見事に起動!

ブロックギャル

しかし、何か音楽に違和感が・・・。いや、元々を知らないんですけど、なんか音痴な感じがします。最近ナツゲーで動いているから、誰か知ってるかなと思い(自分は開始後一瞬で終わったので音楽まったく記憶になしw)、配信して色々な人に聴いてもらったところ、やはり何か音が低いとか言う意見が。うーん、なぜだ。

MAMEのソースを見たら、SYSTEM1やSYSTEM2ではクロック周りで何かM1使って特殊なことをやってるような記述が・・・。なんだこれ。関係あるのかな?

About main CPU clocking:

A 20MHz crystal clocks an LS161 which counts up from either 10 or 11 to 16 before carrying out and forcing a reload. The low bit of the reload value comes from the Z80's /M1 signal. When /M1 is low (an opcode is being fetched), the reload count is 10, which means the 20MHz clock is divided by 6. When /M1 is high, the reload count is 11, which means the clock is divided by 5.

To account for this, we install custom cycle tables for the Z80. We clock the Z80 at 20MHz and count 5 cycles for each original Z80 cycle, plus an extra 2 cycles for each opcode fetch (since the M1 line is low for 2 cycles per byte).

この後は、同じく電池切れとされていた脱子ちゃん雀荘の方にもチャレンジ。こっちも295min先生がサポートしているのと違うバージョンだったので、ツールが使えず、ブロックギャルと同様にM1を使った方法でやってみたんですが、こちらは残念ながらうまくいきませんでした。うーん、マザーが壊れているのか?あるいはZ80のM1は、2個以上アドレス線を同時にドライブするパワーがなくて、やるなら間にバッファいれないとダメとかそういうのなのか?前者だったら痛いなー。

2012年8月26日の日記を表示中

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2012年8月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ