2000-08-09
2000-08-07
2000-07-31
2000-07-29
2000-07-19
2000-07-16

PS2メモカを読む、REX-SMA02 で。

谷重製作所の TSG さんが PS2 のメモカにのってる EEPROM を SmartMedia にのせ変える方法を公開してくださいました。
えらく感動した私はさっそく自分でもやってみようと思ったのですが、 いろいろと困難が待ち受けておりました。

えーと本家のページはリンク禁止ていうことですんで、いまのところ自分で探してください、としか言えません。すいません。

2000-08-09:トップのページはリンクフリーでした。 ここです

スマメのコネクタがない
日本橋を探してみましたが、全然なかったです。 こういう部品関係は秋葉でないとダメですねー。 共立のおにいさんには「流通してない」といわれてしまいました。残念。 というわけで、 ある偉大なお方が購入代行してくれるというのでお言葉に甘えさせて頂きました。 ありがたいことです。

むずい...
元々のってる EEPROM TC58V64AFT を外すというのが大変。 うまく取って基盤もチップも生かそうと考えたのが失敗のもとでした。 接着部分の皮膜がはがれて The END です。 パターンを追ったらもういっこのチップの足にたどり着いたので、 そこにハンダ付けを試みましたが、諦めました。 カッターで皮膜を削ってみましたが、ハンダがのらないのでブンなげました。
そもそも EEPROM を生かしたところで、 それを有効利用させるだけの技量が私にはありません.
で、気をとりなおしてさらに 3500 円投資。今度ははなから EEPROM はゴミ箱行きを決意してましたので、カッターで根元から切ってしまいました。

配線
やっとスタートラインにたったと思ったんですが、ハンダ付けが細かくて苦労する。 疲れた体にムチ打ってやってたらコテが隣りにあたって、 つけたばっかりの線が取れたりした。明日遅刻しちゃヤバいよな、と思って5時ごろ就寝。次の日しっかり遅刻する。 で再挑戦したらわりとあっさり出来ました。 これからやるひとは体調を万全にしてがんばってください。
TSG さんのページにある配線図どうりに配線。VSS てどこだろう、 とちょっと考えました。て慣れてる人は悩まないところでしょうけど、 普通のひとは悩みますよねえ。 Mod 関係で勉強したおかげで GND だってのはすぐ分かったんですけど。 でスマメ側の 11 番ですけど、隣りの隣り、1 0番に付けちゃいました。あってるかどうか知りませんが動いてます。

リーダー/ライター
改造記事を最初に見たときに、(まだソフトは公開されてないときです) とりあえず日本橋にスマメ関係を物色しに行ったとき見つけた RATOC REX-SMA02 を購入。
その後ソフトが公開されたんすが、REX-SMA01V 対応てことで、惜しいって感じです。 REX-SMA01V は今後購入する気満々ですけど、Windows が動く環境には PCMCIA がないんで、そっちも買わないといけないのがつらいところです。 それと、よく分かってないんですけど PCMCIA 自体も対応/非対応があるらしいです。

差してみる...
ハンダ付けが終わってメモリーカードにスマメコネクタがぶら下がった不細工なものが完成。 おそるおそるつけてみる。ブラウザを選んだら「フォーマットするか?」 と聞いてきたので言いなりになる。が、一瞬で「失敗」。おー、カード差すの忘れてた。
気をとりなおしてもう一度。あらダメだ。 そういえば前、スマメは物理フォーマットしてないとうまくフォーマット出来ないみたいって言ってたなあ、と思い出す。これを聞いてなかったら「できないじゃん」、 て諦めるところでした。でも差したカードは新品だったんですけど、 FAT12 フォーマット済みだったのかな?

フォーマット
フォーマット出来ないことには先に進めませんので 物理フォーマットするプログラムを作成。 物理フォーマットして、再々挑戦したらうまく PS2 がフォーマットしてくれました。感動〜。
注意。プログラムはまともに動くと思いますが、ソースはウソだらけですんで、 信用しないでください。

んー、今日はここまで。
今後の予定: せっかく動作が分かってきたので REX-SMA02 の Linux 用のドライバ作成とかやってみたくなってる。もちろん PS2 フォーマット専用。
DOS で一通りのことが出来るようにしたいと思ってるが、8M扱うのはきついなあ、といまさら悩んでいる。でもうちのマシン環境の都合上 DOS 用でないと面倒なんで、やります。<いつまで DX 50MHz つかってんだか。
あと Magic Gate をんがっ。<告訴されるぞ。できないと思うけど。
PS2 用の逆アセプログラム。 1万行ほど書いたところで仕事が忙しくなったために自分のソースがよく分からなくなってしまった^^;3月の中ごろからほったらかし。


2000-07-19
たにしげさんのソフトがプラグイン形式に。 これでスマートメディアを物理的によめるデバイスだったら直接叩くところだけ書けばもれなくファイルマネージャが付いてくる、 という可能性大です。感謝感激っ。
で、すぐに SMA02 用のプラグインに着手、かというと実は回り道。 すでにメモカのイメージは取ってあったので、目先の利益を重視してファイルを読むだけのプラグインを作成。(Win の肩ならしみたいなつもりでした。)
で、どうなったかというと、めでたくファイルを抜き出すことには成功したんですけど、 動作が不安定。 CFileDialog が出ない、というか出たこともあるけど、みたいな感じです。 出たときっていうのは ASSERT に対して「無視」を選んでようやく出たっていう、 ...よーわからんです。 しかたないのでファイル名をソースに直書きしたりして、なんとか。 中途半端プログラマを自称する私ですが、さすがにこれは恥ずかしくて公開できない。
あと IE4(というかいっしょについてくるコントロール) がいるのかなーと思ったのでインストール。今は IE5 になってるとは今知った。 うわー HTML が IE に関連付けされてるや。 Mozilla も古くなってるので今度バージョンアップして逆襲することにします。 別に「まくそ」に恨みはないんですけど、 なんとなくずっとこんな心理状態なんです。ほっといてね。
2000-07-29
ふぇー、やっと分かった。プラグインは全然手をつけてない...TSG さんごめんなさい。 512 バイトごとに出る EDC だか ECC だかの計算方法をずっと調べてた。こんなかんじ。
BYTE Table[] = {
	0x00, 0x87, 0x96, 0x11, 0xa5, 0x22, 0x33, 0xb4,0xb4, 0x33, 0x22, 0xa5, 0x11, 0x96, 0x87, 0x00,
	0xc3, 0x44, 0x55, 0xd2, 0x66, 0xe1, 0xf0, 0x77,0x77, 0xf0, 0xe1, 0x66, 0xd2, 0x55, 0x44, 0xc3,
	0xd2, 0x55, 0x44, 0xc3, 0x77, 0xf0, 0xe1, 0x66,0x66, 0xe1, 0xf0, 0x77, 0xc3, 0x44, 0x55, 0xd2,
	0x11, 0x96, 0x87, 0x00, 0xb4, 0x33, 0x22, 0xa5,0xa5, 0x22, 0x33, 0xb4, 0x00, 0x87, 0x96, 0x11,
	0xe1, 0x66, 0x77, 0xf0, 0x44, 0xc3, 0xd2, 0x55,0x55, 0xd2, 0xc3, 0x44, 0xf0, 0x77, 0x66, 0xe1,
	0x22, 0xa5, 0xb4, 0x33, 0x87, 0x00, 0x11, 0x96,0x96, 0x11, 0x00, 0x87, 0x33, 0xb4, 0xa5, 0x22,
	0x33, 0xb4, 0xa5, 0x22, 0x96, 0x11, 0x00, 0x87,0x87, 0x00, 0x11, 0x96, 0x22, 0xa5, 0xb4, 0x33,
	0xf0, 0x77, 0x66, 0xe1, 0x55, 0xd2, 0xc3, 0x44,0x44, 0xc3, 0xd2, 0x55, 0xe1, 0x66, 0x77, 0xf0,
	0xf0, 0x77, 0x66, 0xe1, 0x55, 0xd2, 0xc3, 0x44,0x44, 0xc3, 0xd2, 0x55, 0xe1, 0x66, 0x77, 0xf0,
	0x33, 0xb4, 0xa5, 0x22, 0x96, 0x11, 0x00, 0x87,0x87, 0x00, 0x11, 0x96, 0x22, 0xa5, 0xb4, 0x33,
	0x22, 0xa5, 0xb4, 0x33, 0x87, 0x00, 0x11, 0x96,0x96, 0x11, 0x00, 0x87, 0x33, 0xb4, 0xa5, 0x22,
	0xe1, 0x66, 0x77, 0xf0, 0x44, 0xc3, 0xd2, 0x55,0x55, 0xd2, 0xc3, 0x44, 0xf0, 0x77, 0x66, 0xe1,
	0x11, 0x96, 0x87, 0x00, 0xb4, 0x33, 0x22, 0xa5,0xa5, 0x22, 0x33, 0xb4, 0x00, 0x87, 0x96, 0x11,
	0xd2, 0x55, 0x44, 0xc3, 0x77, 0xf0, 0xe1, 0x66,0x66, 0xe1, 0xf0, 0x77, 0xc3, 0x44, 0x55, 0xd2,
	0xc3, 0x44, 0x55, 0xd2, 0x66, 0xe1, 0xf0, 0x77,0x77, 0xf0, 0xe1, 0x66, 0xd2, 0x55, 0x44, 0xc3,
	0x00, 0x87, 0x96, 0x11, 0xa5, 0x22, 0x33, 0xb4,0xb4, 0x33, 0x22, 0xa5, 0x11, 0x96, 0x87, 0x00
};

void calcECC(BYTE *ecc, const BYTE *data)
{
	int i, c;

	ecc[0] = ecc[1] = ecc[2] = 0;

	for (i = 0 ; i < 0x80 ; i ++) {
		c = Table[data[i]];

		ecc[0] ^= c;
		if (c & 0x80) {
			ecc[1] ^= ~i;
			ecc[2] ^= i;
		}
	}
	ecc[0] = ~ecc[0];
	ecc[0] &= 0x77;

	ecc[1] = ~ecc[1];
	ecc[1] &= 0x7f;

	ecc[2] = ~ecc[2];
	ecc[2] &= 0x7f;

	return;
}
128バイトごとに3バイトを計算x4で12バイトの ECC を出すってことみたいです。 今日はこれだけ。どーやって訂正するのかは一般市民の私には理解不能です。
2000-07-31
おいらはなんもやってないけど更新。とりあえず適当なプログラムでデータの書き出しには成功してますけど。
ファイルマネージャ 1.0beta4 が公開されて、 改造結果を書き込むことが可能になった。 改造好きなら誰もが夢見る DOA2 をどうこうするってのがとっとと現実のモノになってしまった。 こんなウケそうなこと黙っておれん、てことでいろんな人に自慢してしもた。 で、いろいろ考えた末、極小の写真を載せることにしました(後ろ姿)。 これ絶対 Datel か力王あたりが改造データ入りメモカ売り出しちゃうんじゃないかなと...それとも MagicGate のチップの問題で売るに売れないのかしらん? てことはもし出るとしたら MagicGate 部分を素通しさせるような仕様のヤツ?
あと、上のやつは ECC (エラー訂正)じゃなくて EDC (エラー検出)みたいっすね。 なんとかソロモン符号がどーとかこーとか(全然わかってない)って感じじゃないしだいたいテーブルのせいでエントロピー減少(やっぱりわかってない)、要するに3バイトぽっちじゃ訂正はできんでしょう(やっぱり自信なし)。

2000-08-07
んーと、DOS 用のプログラム(バックアップとか) はそろそろ公開してもいいかなーてぐらいに安定してます。 ベッド備え付けのノートパソコンで寝ながら開発してたんですけど、 どうしても双方向で通信できない。 で、デスクトップのマシンにつないでみたら一発で通信できてしまった。 しかも BIOS の設定はなんでもOK。ほんとかよー。 でも確かに苦し紛れモードよりスピードはやいし。どーなってんのか不明です。
あとデータ書き換え用のユーティリティーを作ろうと思ったんだけど、 (hex editor みたいの) VGA 扱うプログラムってよく考えたら書いたことない... int 10h がらみ調べときます。

MagicGate がらみを調べてみようってことでスマメアダプタをもう一個作りました。 メモカ内蔵のちっちゃいほうのチップって固有のシリアル番号が印刷されてて、 データとしても暗号の鍵みたいなのを持ってるわけです。 じゃあ暗号化されたファイルも当然ちがうもんになるんだろう、 てことで差分攻撃が出来るかなーとか思ってやってみました。
結果:なんかファイルのあたまのほう(0x18 からだったか?)から 0x20 bytes だけ固有の ID らしきものがあって、あとのイメージは同じでした。
ちなみにメモカ1号で DVD をダウンロードして、メモカ2号に差してみたら PS2 が起動しませんでした。即暴走て感じです。


2000-08-09
がはは、公開した物理フォーマットするプログラムバグってるじゃん。 指定するアドレスが4ビットほど右にずれてます。なので今日あたり更新します。
てことで新しいプログラムです。
hanimar@reocities.com