2011年11月12日土曜日

MD RammyでNBA JAM、途中経過?

EEPROMの2402を載せたNBA JAMが未だにできませんが、何となくネットで「nba jam megadrive eeprom address」で検索したらこんなPDFが見つかった。

それによると、

nba7

アドレスは0x200001からと、普通のSRAMとかと同じ、MODEとPAGE_MASKはSEGA(2401)と同じ・・・

気になったのが、下の補足で、どうも16bitアクセスをしないとだめっぽい?

ってことで試したところ、少し進展・・・というか、違った動作をした。

ds.000000
PR.200001
PW.200001
PC.200001
PS.000080
P+.000001
PB.000016
PT.002402
PM.000011
OK
rd.000100

↑上のコマンドまで進めると、

PICT6646

MDの画面出力がデバッグ表示に変わる。

これは、NBA JAMはエラーが起こるとデバッグ画面が出るように設計されてるから。

カセットの刺しが甘かったりしてもちゃんとデバッグ画面が出る親切設計です(笑

ま、見たところで私にはわからんけどもw(爆

因みに、P+やPMの値を変えても同じようにエラーが出る(^-^;

8bitアクセスした時には0x200001からアクセスしても0xFFが出てくるだけだから・・・もうちょい?かな?

因みに、Winのエミュ、Gens、Regen、Fusionの3つでセーブデータ作成の様子を見たところ、

nba8

Fusionのみ、正常なセーブデータが作成された。

このデータの値を参考に、実機から出てきたら嬉しいなぁっと。

あ、上のほうで書いたPDFはWiiのgenplus-gxのとこのものなので、多分、genplus-gxではEEPROMのセーブも問題ないと思う。

13 件のコメント:

YoGirl さんのコメント...

ぽんさんすばらしい。
そしてバス エラー トラップでデバッグ画面を表示する様にしたイグアナ エンターテインメントありがとう。

このデバッグ情報と、Cコンパイラーの吐いたアセンブラーソースを、ざっくり照らし合わせて見ると、

PC 00FF0D12 (このアドレスの命令を実行した際にバス エラーが発生)
SR 00002704 (ステータス レジスター)
D0 00200011 (C演算用, EEPROM I/Oのビット マスク)
D1 0000FFFF (C演算用, 一時計算用)
D2 00000000 (未使用)
D3 00000000 (未使用)
D4 00000000 (未使用)
D5 00000100 (C変数用, 読み出すデータの数)
D6 00000006 (未使用, 呼び出し元の関数で使ってるローカル変数)
D7 00000001 (未使用, 呼び出し元の関数で使ってるローカル変数)
A0 00200001 (C変数用, EEPROM I/Oのポインター) ★
A1 00FF32AC (未使用, 呼び出し元の関数で使ってるローカル変数)
A6 FFFFFF98 (Cローカル変数確保用)
A7 FFFFFF86 (スタック ポインター)

★印の所がミソで、どうやらRammy 0.02には16bitバスモードでEEPROMにアクセスする関数にバグがある様です。

YoGirl さんのコメント...

あら。コメントが消えたからもっかい登校して見たら、また消えてしもうた。

YoGirl さんのコメント...

うーん。このコメントは残る様子。
何度と無くコメントが消える事がある謎。

YoGirl さんのコメント...

と言う事で自分の方に詳細を書いて見た。

http://68000.web.fc2.com/sram.html

バスエラー トラップでデバッグ表示してくれる様にしたイグアナ エンタータインメントのプログラマー、ありがとう。

ぽんRev さんのコメント...

googleに代わってごめんなさい(^-^;
原因がわからないので、ご面倒ですが、今回みたいに何度か書き込んじゃってみてくださいm(_ _)m

でもって、デバッグ画面がお役に立てたようで何よりです(^-^)
デバッグ画面が出るのは以前から知ってましたが、まさかRammyで操作して出るとは思いませんでした(笑
是非、検証のほどよろしくお願いしますm(_ _)m

kitahei88 さんのコメント...

ご無沙汰しています。
Rammy、いろいろ検証されているようで参考になります。
で、あんまりいい話ではないかもしれませんが、Pier Solarどうでしょうか?
Reprintで手に入れた後、そのまま未開封でほっといてあるので、イケるならちょっとやってみようかなと。
というかやってみますかね。
では~

ぽんRev さんのコメント...

kitahei88さん、お久しぶりです~(^-^)
Rammyは楽しいので是非遊んでみてください。

で、Pierですが、ROM側もRAM側も、残念ながらできませんです(^-^;
一応、試した結果ですw
詳しくは・・・Future Driverさんとこを見てくださいませね。
としか書けませんのでご了承のほど(^-^;

kitahei88 さんのコメント...

どうもです。
ほんとだ、よく読んでなかった(汗)

まあ、それはそれで今後の楽しみにしておきますです。

次のRammyはAVRでシリアル通信するのですね。いっそのことUSB接続にしたりとかどうかなどと思ってしまったりしました。
では〜

ぽんRev さんのコメント...

kitahei88さん

まぁ・・・個人で密かに実験してみるのはいいかもですが(^-^;
公にはしない方が良いと思います。

シリアル通信は、さまざまなプラットフォームで使える事を前提に考えられた上での仕様です(^-^)
基本、通信ができるPCなら新たにソフト作らなくても良いので、開発期間は短く済みますよね。

それと、一応、USBでの接続は可能です。
USB-シリアルアダプタでw
プリンタメインのパラレルアダプタと違い、シリアルは汎用性があるので、殆どのものが使用できると思います。

trickart さんのコメント...

パラレルアダプタ・・・
ホンコンを買う前にパラレル-USB変換ケーブルを探しましたが全然ないんですよねぇ・・・
プリンタ専用のはあるんですけどねぇ。
ホンコンもシリアルかUSBで開発して欲しかったもんです。
ホンコンUSBの開発は暗礁に乗り上げてたみたいですけど。

ぽんRev さんのコメント...

trickartさん

パラレルアダプタは、市販のものはホンコンでは使えない確率が高いですね。
ごく稀に使えるものもあったようですが、残念ながら私は詳細がわかりません(^-^;

んですが、これについては一応ネタとしてあるんですが・・・まだ作ってなかったりしますw
多分、作ったらホンコンOKな気が・・・
確定ではないので疑ってくれた方が安心(?)ですが、その内やると思うのでそれまでお待ちを(^-^;

YoGirl さんのコメント...

参考情報だけど、FTDI社製IC搭載の USB-シリアル 変換ケーブルの場合、デバイス情報をPC側から書き換えるだけで、WindowsがUSB接続を検出した際に、「新しいデバイスを検出しました Sweet Rammy」 みたいな感じで、専用ドライバーの開発無しにユニークなデバイスとして認識して使えるらしいです。
(アプリ側から見れば何時も通りのCOMポート)
ただウチ自身は試したこと無いから、本当にそうかどうかって言う確信無いです。(´^ω^`)

ちなみにFTDIと言うと最近はこんな物も在るようです。見栄え良くしたい人向け。(笑)
http://strawberry-linux.com/catalog/items?code=50040

ぽんRev さんのコメント...

YoGirlさん

情報ありがとうです(^-^)
なぜかウチに1個あったのでネタとして即行でやってみました(笑
確かに、どうせUSB-シリアル変換使うならこの方がいい感じですね(^-^)

イチゴさんのとこのケーブルは見栄え抜群ですねぇ。
こんなものがあるとは知りませんでした。
秋月の持ってなかったら思わず買ってたかもしれない(笑