20110.143u2出た0.143u2のソース差分がリリースされました。ギャンブルゲームが1600本(画面無し含む)追加って...だからピンボールなんて追加しなきゃよかったのに。表示色が全体に薄くなった。ゲームが変になったりクラッシュする。ボスやプレイヤーなどが表示されない。ティックも動作しない。プレイヤー2は動作する模様。サウンドが壊れているか完全に鳴らない。画面が通常より90度回転している。カクテルモード時はプレイヤー1の操作がプレイヤー2のものになる。プレイヤー1(青)の操作を再追加。ティックに変更-「コスミックモンスター」のオーバーレイ表示を実機筐体のビデオを参考に訂正。完全なインタリーブ処理により、toplandの3D表示が改善(ただしまだ不具合あり)。ST-V向けの修正いろいろ。「ファンキーヘッドボクサーズ」で使われていたinstadmaのハック削除。MMUバスエラーの特殊な状態での、リード・ライトビットを正しく設定。Belmont]-「ぱずり2」のプロテクトルーチンのうっかりバグを修正。MK6ゲームタイトルについてドキュメントを更新。バスエラー入力ライン追加、FMOVEM修正、HMMUの問題修正。601とメモリ強制I/OコントローラインタフェースアクセスにBATを正しく実装。Xでマルチスレッド動作をしているとき、オートリリースプール警告が出るのを修正。スケジューラコスレッドの実行を再有効化。Coder]-「ステッピングステージ」ドライバである程度の進捗。Neo-GeoドライバゲームのROM名改良。変数のシャドウイングに対する修正。DSPコアにDSPとIRQイベントを追加。ドラゴンズアイ」にDIP配置追加。speglsht.c:「スーパーイーグルショット」にDIP配置追加。Spin」にDIP配置追加。cave.c:「ホットドッグストーム」の基板配置、ノート、情報などを追加。chaknpop.c:「ちゃっくんぽっぷ」の完全な基板レイアウトを追加。chaknpop.c:「ちゃっくんぽっぷ」のDIP配置追加。also_used_by_parentの最適化や、ハッシュに合わせて長さも使用。CPU型ごとのジャンプテーブルを生成。PC1512で使用)をmc6845.cに追加。d3d->hlslのdouble-freeを修正。デフォルトのコントラストを強化。2011バブルシステムの情報Charlesさんページにバブルシステムについての解析が載っています。Systemの基板についていくつかテストを行いました。ここで、その動作の仕組みについて忘れる前に説明しておきたいと思います。SRAMチップで置き換えてある。SRAMは正体不明のMCU(64ピンSDIP)と共有されていて、必要に応じて読み書きを行っている。このMCUは68000を停止させることが可能で、バブルメモリと直に接続されている。68000がセクタリード/ライトのリクエストを出すために使われる、専用のハードウェアレジスタが$40000にある。MCUは共有RAMの$F00-$F7Fをこのリクエストに対するセクタバッファとして使用している。パワーアップリセット後、MCUは68000に実行させるベクタテーブルとブートプログラムを共有RAMに書き込む。Guru氏はこのプログラムがゲームプログラムに上書きされる前に取り出すため、SRAMをNVRAMと置き換えた。その結果が次の通りである:一定時間待つウォッチドッグを始動するMCUが取得したデータを14C-D00よりコピーする。これは不良セクタのビットマップで304バイトと思われる。128バイトの各セクタ毎に2432ビット、または合計で304Kである。各セクタは実際には132バイトだが、使えるデータは128バイトである。MCUがRAWセクタをRAMに書き込んだ後、BIOSが不要データを切り取る。オフセット$78000が$5555の場合、$78002に飛ぶ。これは、ドーターボードコネクタに接続した外部EPROMに該当する。バブルメモリのセクタ$001、$001、$801を読み込む。このデータは使用されない。この後の本番アクセスに備えたダミーリードと見られる。セクタ番号のビット11が特別な目的を持つかもしれない(例えば、セクタ$001と$801が同じなど)。セクタ$181からRAMの$10000へ8セクタを読み込む。このとき、132バイトのRAWセクタを128バイトセクタにコンバートする。バブルメモリから最初のゲームプログラムを1K読み込んだところで、$10000にジャンプする。これはRAMのなかでMCUと共有されていない箇所。この時点からゲームが動作し始め、セクタからメモリへの読み込みを継続しながら、ゲーム固有の命令を実行する。ワークRAMの下位4KにはシンプルなBIOSがあり、#0がセクタ読み込み、#1がセクタ書き込みのトラップをする。ゲームがハイスコアなどをバブルメモリに書き出していたかや、セクタの書き込みがRAWフォーマットかそうでないかなどは不明。保存とエミュレートという目的から言えば、各ゲームのバブルメモリー内データを全て読み出すことがゴールと言える。これを行うためには、68000でトロイの木馬を実行させ、MCUに対してセクタの読み込みをさせる必要がある。68000のプログラムコード自体もバブルメモリーから読み込んだり、MCUの内部ROMからコピーする必要があるため、独自コードを実行するのは簡単ではない。SRAMをROM(この場合書き込み不可にしたNVRAM)と置き換えると、起動時にMCUがデータの読み込みをしなければいけないため、正常に起動しないと思われる。そのため、ドーターボードのコネクタを使用するのが残された手段のようだ。シグネチャの確認を行ったり、68000の実行コードを記憶させたカスタム基板をドーターボードに取り付けることができるかもしれない。NVRAMやUSBインタフェースなどを追加して、セクタの読み込みに応じて保存させることも考えられる。他には、68000をフルークモジュールと置き換え、起動プログラムがバブルメモリーから読み込まれたプログラムに制御を移したときに一旦ブレークし、そのアドレスをトロイの木馬で上書きする方法もあるだろう。正確な動作のためにはMCUの腑分けや解析、読み出しが必要になると思われるが、バブルメモリーのゲームは大変希少で高価なため、基板にアクセス可能で、しかもこのような作業に対するリスクを冒す人を探すのは難しい状態である。当座は、バブルメモリーの吸い出しとMCUのシミュレーションで差し支えないだろう。20110.143u1出た0.143u1のソース差分がリリースされました。なんだか安定してません。X軸の位置にジャンプする。