
■PS2DIS
現在のバージョン:
0902090408ダウンロード --- #35 3/16
■他愛のないことを書く場所
2002-2-17
ゲーラボ見ました、う〜む。本て一旦ばら撒かれるともう修正できないってのが怖いなあと思った。校正の結果意味が変わってしまったところもあるし。。。
#おれのせいじゃないんだ!と暗に言い訳(^^;
今度正誤表作ってみます。ていうかヘルプ作るのが先のような。。。
最近 PS2DIS の開発が滞ってますが、作るのではなく、使う側にまわってるせいです。
なんか PS2 用のプログラムを書こうと、いろいろ勉強中です。
そういうわけでしばらくアップデートはないかもしれませんが、バグとか、いそいで直して欲しいこととかあればやりますんで、メールください。
今分かっている最悪な問題点:
意味のあるシンボル名が __gnu_compiled_c ってシンボルで上書きされてしまうことがある。 - 直せるけど、どうするのがベストか不明。
2002-2-10
サルのように FFX International をやる。8,9は個人的にはダメでしたが、これは面白いっす。ヒアリングのお勉強にも絶大な効果(^^ ○ボタン押したらもう一回しゃべってくれたりするし。
で、シーモアにむちゃくちゃにされてゲームオーバーになったおかげで我に返ってプログラムを書き出すが、何がやりたいかわからなくなる。
そうそう、前に PS2Linux 付属の as で sq.lq が通らないといったけれど、どうやら
sq t0,0xfff0(v1)みたいなのは通してくれなくて、
sq t0,-0x10(v1)ならOKとわかる。次のリリースでは直るのかな?てか私がバグ突っ込んでるんだったりして。めんどくさいから調べません。
2002-1-30
PS2Linux Kit の正式版が出るそうな。メディアだけなら 1,500 円と良心的。
今度は HDD 内蔵のほうを買ってみようかと思う。捨て身でがんばれ>SCE(笑
2002-1-24
どうも Blaze のX-ploderが発売された模様。どうなんだろ。
エミュも結局 cop0 他、全部やらないと使いづらいって結論に至ったが、ちゃんとやるのは大変。 EE の P から始まるやつのコード書くのがめんどくさくって力尽きそうです。
。。。実は X-Ploder はもう2ヶ月くらい前から売られてたらしい。
2002-1-19
なんか ps2dis をゲーラボで取り上げてくれるらしい。載ろうが載るまいがどっちでもいいんだけど、どうせ載るんだったら質の良い情報を提供して欲しいなあと思う。
改造方面で活躍してる方々にもお手数をかけてしまってどうも申し訳ありません。よかったら協力してやってください。
いまさらって気もしますが、Alt+上下で、「現在行の属性と異なる行にジャンプ」というのを付けました。やってみればどういうことか分かると思いますが、複数のブロックが散在するようなプログラムでの移動にとっても便利です。
www.bn.com (正確にはバーンズアンドノーブルと提携してるゲーム屋)で Code Breaker を買ってみたらすぐに届いた。U.S. の PS2 でないと動かんのでちょいと別のチップ(うがっ)を載せないと動かせんなあ、と思ってるんですが、解析目的で買ったので動かなくっても別にいいや。げ、暗号化されてる、ふひひ。
2002-1-15
う〜ん、ラベルの移植以来のヒットです>エミュ機能。落ちるけど(笑
Naplink! のプログラム(1.00)だとロードしてエミュ画面開いて 100 million
一回押すと $000a0008 で止まる。
(止まるのは属性が code でも undef でもないから。)
$000a0000 からプログラムが展開されてるのが一発で分かる。
BIOS がどこを読み書きしてるかもかなり分かってしまうし。
GT3 だと、展開してんのはテクスチャでしたか。core.gt3
をどこでロードしてんのか、いまだにわからん。。。
まだ対応してない命令がかなりあってその命令にぶちあたったらそこで止まります。カーソルを進めて仕切りなおせば続けて動かせます、一応。(笑
2002-1-14 2002-1-7 2001-12-16 2001-12-08 2001-12-06 2001-12-05 夜中 2001-12-03 2001-11-28 あさ 2001-11-26 よる 2001-11-26 2001-11-25 2001-11-18 2001-11-16 2001-11-14 2001-11-11 2001-10-17 2001-09-24 2001-09-10 2001-09-09 2001-08-19
2001-08-06
2001-08-01
2001-07-31
2001-07-30
2001-07-20
祝日とは無縁、会社で徹夜っぽい。
2001-07-19
こんなのは世間じゃ常識なのかなあ。なんにしてもこれで簡単に文字がだせるや、ふひひ。
2001-07-18
2001-07-17
午前5時をまわって、ようやくクロス環境の構築をはじめる。
予定通り開発者メーリングリストのサイトにある NetBSD 用のドキュメントを見ながらの作業。ありがたいことです。
ていうか、コンパイル遅いぞ Pentium133(爆
2001-07-16
2001-07-15
そして日曜だというのに出勤。
2001-07-13
2001-07-12
2001-07-10
2001-07-08
2001-07-05
2001-07-03
2001-06-29
2001-06-28
2001-06-27
■成果物
2001-06-26:
objdump の出力をごそごそするビューワ
--- ほんじゃなにか?起動ディスク(DVD のこと)さえあればあとは市販品でなんとかなったり。。。
■支離滅裂な、とりあえずの感想 2001-06-23
Naplink! の話。PS2 でプログラム書こうって人は Naplink! のプログラムの中覗いたことと思いますが、
「圧縮されててようわからん。もしかして SCE のライブラリ使ってるのを隠すため?」
なんてちょっとかんぐったりしてました。
で、今 EE のエミュを書いてて、これの展開が出来るところまできました。
PS2DIS 落ちたらテンポラリのディレクトリにゴミを放置しますんで一度チェックして
もしあったら消してやってください、すんません。
正月休み。ほんとはもっとがんばるはずだったのだけど、歯が痛くて5日くらいうずくまってた。(今までよく仕事できてたなあ、と感心した。)今は痛くないが鼻から異臭を放つ鼻水が延々と。。。歯槽膿漏のすごいやつかなあ。
今痛くないからほっといてみよっと(笑
VU マクロ命令の出し方変えました。一番の理由はアセンブラのほうが対応するのめんどうだったから。
あと、IRX 対応のほうですけど、シンボル付きの IRX を読みこませると ps2dis.exe があるディレクトリに勝手に irxstub.txt というファイルを作ります。
IRX はダイナミックリンクできるようになってて番号で呼び出すのだけど、その番号とシンボルの対応表です。たくさん読みこませるとたくさん覚えて賢くなっていくって寸法です。
で、このファイルは NAPALM にある Herben さん作の irxtools ってやつについてくる imports.txt と完全互換にしてあります。ps2dis.exe のフォルダにこれを irxstub.txt て名前で置いておくと、最初から賢い状態になります。
まえに lq,sq が通らん!とのたまってましたが、勘違いだったみたい。
今やったら余裕で通った(^^; gas/config/tc-mips.c。
そういうわけでこいつを PS2Linux 付属の gas に上書きするとめでたく
at,v0 見たいなレジスタ名を通してくれます。面倒なのでパッチはつくらん。
また PS2Linux とぜんぜん関係ないんだけど(苦笑
上の「改造支援プログラム」のリンクから行けるプログラムにとっても良く似たものがカラットで公開されました。
あのね、ほんとはツリーコントロール使って複数タイトル対応のにしたいな〜と思ったんだけど、
「まあテスト目的のだし、いいや」って感じであんなプログラムになってるんです。
ツリーめんどくさいです(笑)。
なのでカラットにはそういうかっこいいプログラムを期待したいです。よろしくね>カラット。
ついでに SharkPort の *.spc も読めるようにしてね>カラット。
さもないとおれさまのソフトをバージョンアップしてしまうぞ(笑
ついでに、不安定だったダイレクトメモリンクの修正版もおいてます。Memolink.exe 本体のバグだったんだ、へえぇ。
p で開くパッチリストのところで PS2PAR コードをペーストってボタンをつけた。
まだ 3 とか 4 とかのコードには対応してない。ヘンなのをペーストされるとヤバいので、対応するかどうか未定。ていうかめんどくさいだけ。。
ほんで、すごそうな改造コードを求めて徘徊(笑)
一番すごかったのは VANISH の掲示板で今にも流れそうなコッペリアさんのAC4のやつかなあ。ペーストしてコードをダブルクリック(その番地に飛びます)。。。うわっ!(笑)
俺も早く命令覚えなきゃ、と本気で思った<覚えてね〜のかよ(^^;
#勝手に名前だしてすいません。問題あったら伏字にします。
知らない間に Naplink! が 1.01b になってる。なにが変わったか不明。
んと、PS2Linux 付属の binutils でレジスタ名を zero,at,v0,v1 とか$なしで書けるようにしたんだけどなぜだか sq,lq では使えない。なんで? gas/config/tc-mips.cです。ていうか、根性いれてチェックしたわけではないんですけど。
そうそう、Naplink! のドライバ使ってる状態でもダイレクトメモリンク使えた。ふぅん。
PS2PAR の改造コードをパッチとして読みこめるようにしようと思ってプログラムを書いてましたが、まだ出来てません。副産物が先に出来てしまったのでこちらで公開しておきます。
電池買ってきた。右のが Naplink! 動いたやつらです。
なんだか Liksang も売り出したようで、抜け目がないな、ちょいぼったくりぎみ。
ちなみに下のはじゃんぱらで 2000 えんくらい。 秋葉ならもっと安いでしょう。上はおーくしょん。
Naplink! を快適に動かす改造についてはいろいろと問題があるので口を慎みます。てか、そっち方面は今はほとんど分かってないんで、これから調べる。
あ゛〜 PS2 安くなるんだ、勢いで買うかな(笑
われながらアホやね。cfc2 とか qmtc2 とか、コンマが抜けてただけだった(^^;
まあ、アホはあほなりにがんばるってことで。あ、 vi0 では通してもらえなかった。
gas/config/tc-mips.c をガシガシ書き換えりゃ済む話なんだけど、やっぱり $vi0
みたいな出し方にしときます。
qmfc2 で検索したら こんなところを発見。リンクフリーって書いてるからリンクしてみました。
Naplink! が使える USB リンクケーブルを2種発見。ゴキブリの卵みたいな、あずきのような形で線が入ってるやつ、あとGショックみたいでまんなかにスタートレックのマークみたいなのが書いてるやつ。全部そうだって保証はないですけど。今度デジカメの電池を入れ替えたら写真出します。

Prolific PL-2301 か 2302 を使ってる。 しろいのは 2301 決定。
あした仕事なのにまづ〜。
えと、すいませんが COP1 のレジスタ名を f0 とかから $f0 にしました。PS2Linux の gas が通してくれないから。vf0 は通してくれた。vi0 は通るかと思って試したら。。。
cfc2 とか qmtc2 とか、どないしても通らんやんけ〜!!てなわけで分かりません(^^;
そんで、テキスト出力時(Ctrl+C でしか試してないが。)に16進の出し方とレジスタの出し方を選べるようにしましたんで、そのまま gas で通るはず(ほとんどは)。
こぴぺこぴぺ(笑
連休。ps2dis をまともなソフトにすべく、コードを書きまくる。Ctrl+C でカーソルがある関数の逆アセ結果をクリップボードにコピーするようにしたら、とっても便利。なんだけど、やっぱり GAS 互換で出力できるようにするべきかなあ。。。
そして PS2 の開発環境はやっぱり Linux (Intel)のが便利かなあ、と思う。
なんだけど常時立ち上げてる Linux には USB がついてないので NapLink 使えないのが痛いところ。。。
あ、PS2Linux を NapLink のクライアントに出来ないかとやってみたがあえなく撃沈。
Kernel 2.4 ならいけるかも、と思うが、、腰が重い(^^;
で、PS2 のキーボードがぼろぼろになってきた。すでに一度分解>水洗いしてるけど。新しいの買おうかな。(スペースバーがお気に入り。)
昔書いた prepsdis て実験プログラムのクラスをひっぺがして psdis の .pef
ファイルの読み込みが出来るようにした。そもそも ps2dis は psdis を ps2
で使いて〜ってところから始まったので、今まで対応してなかったのが不思議なくらい。
出来たてですけど、アップします。バージョン番号は変わらず。
英語対応を始めた。日本人相手だと言葉巧みに言い訳できるんだけど、
英語じゃムずいので、やる気のないメニューとかは消し去った。
現状の最新版はこっちにあります。そのうちこっちも差し替えます。
英語間違いのつっこみはやさしくお願いします(笑
なんだか Linux から遠い話ばっかりしてますが、今回も Linux とは関係ありません。
NAPALM で USB 経由で PS2 のプログラムを動かすソフトが、ついに公開されました。
PL-2301 か 2302 てチップを載せたUSBリンクケーブルでつなげます。
うちで無理矢理動かしてみたところ、カラットのダイレクトメモリンクのドライバ
(Thesyconの)と競合したんで、すりかえたら動きました。
実はむちゃくちゃ興奮してます。おめでと〜!
一応 VU マクロ命令に対応した。というわけで cop1 のレジスタ名を vf0, vf1... としてたのを f0,f1 にしてみた。根拠はない。
ほんで VU で vadd.xyzw vf0,xyzw, vf1.xyzw, vf2.xyzw なんてことになるんだけど、最初このように表示してみたんだけど、
冗長なのと見た目に整然としないので vadd と出すことにした。 VADD ではなく vadd 。やっぱり大文字のがいいのかなあ。
.vutext をマイクロ命令として表示ってのもいつかチャレンジ予定。
すげ〜便利だ。。。どうしよう。
ps2dis についた新しい機能を簡単に説明します。未完の最終兵器です(^^;
簡単にいうと、イメージ中の各関数を他のファイルから探し出して勝手にシンボルを移植するって機能です。
SCPH-10000 の BIOS には初期の体験版を、PS2PAR には Region-X を、って感じで近いところを読ませると効果ありです。
やりかたはまず解析さんを起こして、それから Ctrl+Shift+T。(まだ自信ないのでこういうキーアサイン。安定したらちゃんとします。)
ファイルダイアログがでるので、シンボル付きのファイルを読ませてください。しばらく固まりますが我慢してると、素敵なことになります♪
理論的にはもっともっと精度が高くなるはずです。現時点はまだ実験段階ですんで間違いもやらかしますが、ご理解のうえ遊んでくださいませ。
応用すると PS1 は完璧になったりするかも、などと夢見てしまいます。
うそうそ。別にEUCがデフォルトってわけではなくて、決まってないって感じでした。
お詫びにAMERICA: A TRIBUTE TO HEROESで募金してみました。戦争に使わないでね。
風邪をこじらせてしまったので定時退社。おかげでいろいろ出来ます(おい
PS2 のデフォルトの漢字コードが EUC だということが発覚。うすうすは感づいてたけど。
というわけで ps2dis に ASCII,SJIS,EUC を選択できる機能をつけました。
漢字といえば BIOS 内の漢字のイメージ。krom のほうは 106,096 bytes
で 16x15 の第一水準?の漢字が 3489 文字。(PS1 とおんなじ?) JIS X 0208 の1区から47区です。これに続いて 8x15 のASCII 文字が
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
て感じで入ってます。 kromg のほうは以前言ったとおり、アルファベットにいろんなものがついたやつ。SCEE 向けでしょう。こっちは JIS X 0212 の6区から11区に散在するやつが順番に入ってます。
ELF の解説もまともなのが見つかったので、ps2dis にいろいろと付け足してみました。
モジュールにも対応できたような気がする。
ただ、コード用のシンボルとデータ用のシンボルがごっちゃになって表示されてしまうので難ありです。
まともになってきたら英語版を作りにかかろうと思ってる。
その前に秘密(になってしまっている)コマンドの解説を書いたほうがいいんだろうけど、めんどくさい。
殺す気かと思うようなプロジェクトもようやく落ち着きそうなんで、気をとりなおしてなんかやろうと思っている。
とりあえず ps2dis のバグだけなおしときました。
体験版のたぐいはシンボルテーブル付きのファイルが結構あるようで、むちゃくちゃ分かりやすいです。
あとは IOP のほうを解析できるようにするかってのが悩みの種。
ps2dis で、ちゃんと ELF に対応しようと思ってちょろっと書いてみた。
詳細な資料が見当たらなかったのでかなりつじつま合わせなコードで、
結果として Excecutable はOKなんだけど module とかのオブジェクトに対応できなかった。
.o 対応はもうちょい待ってください。objdump のソースでも追ってみることにします。
このバージョンで Datel の DVD RegionX を見るとあまりの分かりやすさに笑えます。
ps2dis に「SYSCALL にラベルをつける」という機能、その他を追加。
会社で爆睡。気づいたら終電の時間だった。解析さんで addu addiu の処理を間違ってたのでなおした。
まだ基本的な機能がなってない
ps2dis060101.zip ですけど、使いこなせば強力です。
アクセスしてるアドレスとか一目瞭然。うひ。
完全に自由を奪われてしまった。。。
とりあえず作りさしの逆アセを例によってむちゃくちゃ中途半端なままリリースしてしまいます。
ps2dis060101.zip 121,811bytes Windows 用です。
ことわっておかないとまずいので断っておきますが、作りかけです(笑
罠のように何もしないメニュー項目があったりします。
使い方もまとめていません。キーアサインはかなりの部分で psdis と互換性がありますので
ここを見て探ってみてください。
開発は VC++5 でやってます。Win2000 で動かしてみたら固まったことがある(そのときは VC6 でコンパイルしなおしたもの)
のでそのへん不安です。Win95 と 98 ではある程度動くと思ってます。
やっぱり世間じゃ常識だったよう。そっち系サイトで ROMDIR を展開するソフトてのが流れてた。
ROMDIR てなんのこと?て思ってたらこれだったのね。多くは語りませんが
ダウンロードして BIOS ファイル読ませればすぐ分かります。
BIOS がファイル単位で分かれてるなら当然、「ファイルシステムとしてマウントしてしまおう!」てなります。
Linux のお勉強にもってこいなのでやることにしましたが、はまってしまった。またひまが出来たら続きをやります。
使えるネタを発見。BIOS内のフォントの場所がわかりました。
bfc64000 からは、アルファベットにアキュートやらウムラウトやら、要するに点がいっぱいついたやつ(なんていうか知らん(^^;
bfc66000 からは、うひ、漢字もあるぞ。配列が何互換かまでは調べてません。
格納方法は(たしか)PS1と同じで、30バイトで1文字。横16ビットで MSB FIRST。
BIOS によってアドレスが違うかと思ったけど 10000 と 18000 では同じでした。
また意味もなくいろんなものを読んでみる。
Linux 動作中の COP0 レジスタ値。サンプル数:一回きり。
モジュール実行中。
注)24:Debug は mfc0 で取った値です。意味ないかもしれません。
上記括弧内は付属のマニュアルでは未定義とされていますが、
dis5900 てプログラムでこのように書かれています。詳細は知りません。
0 :0000000e Index
1 :00000007 Random
2 :0006771a EntryLo0
3 :000676da EntryLo1
4 :01155920 Context
5 :00000000 PageMask
6 :00000000 Wired
7 :00000000 CPR[0,7]
8 :2ab25fb4 BadVAddr
9 :2d89eab3 Count
10:2ab240aa EntryHi
11:00000001 Compare
12:30050c01 Status
13:50008020 Cause
14:2ab7bfcc EPC
15:00002e20 PRId
16:00073443 Config
17:00073443 (LLAddr)
18:00073443 (WatchLo)
19:00073443 (WatchHi)
20:08008020 XContext
21:08008020 CPR[0,21]
22:08008020 CPR[0,22]
23:08008020 BadPAddr
24:00328007 Debug
25:000f8bc4 Perf
26:00328007 (ECC)
27:00000001 (CacheERR)
28:0111f020 TagLo
29:00c80040 TagHi
30:5aa9000c ErrorEPC
31:00002e20 CPR[0,31]
だからどうした?ごもっとも。ふうん、て感じです。
I_STAT:10008030
I_MASK:00000000
D_STAT:0fb89158
D_MASK:0fb89170
今日も終電。昨日適当なことを口走ったのでGSのマニュアルを読んでみる。(まだ読んでなかったのか(^^;)
P.159 CSR(r/w):システムステータスによると、調べてるところは、うげ、GSのリビジョン番号だそうで、 NTSC/PAL じゃないのね。
古いGSだったらこういう初期化ってことなんですね。
ちなみに PS Linux を動かしてる SCPH-18000 は REV 0x15 その左の GS の ID は 0x55 でした。
やりたいことがたまってきたら 10000 と 15000 でも調べてみます。ええ3台ありますとも。病気と自覚してます(笑
自慢じゃないが妙な改造はしてないぞ。
早朝。この会社なんとかしてくれ(苦笑
帰宅後、PS1 でおなじみ、BIOS のテストパターン(カラーバー)をなんとなく eCos/RedBoot を使ってたたいてみる。
最初 bfc00930 に飛ばしたら一瞬しか表示されない。よくよくコードを見てみると、最初にビデオモードの設定をしてた。
NTSC/PAL か判別してるよう。???ていうか、判別できるんだったらこれ組み込んだら VGA だの NTSC だのメモカに書く必要ないぢゃん???
時間がないので今度しらべるけど、こんなん。誰か調べて。私は忙しすぎ。ps2gs.c だったかを見ればいいんだろうけど、もうねる。
もちろん擬似コードです。
*GS_CSR = 0x200
*VIF1_FBRST = 1
*GIF_CTRL = 1
*GIF_MODE = 0
if ((*GS_CSR >> 16) & 0xff) == 1) {
// PAL か NTSC かどっちかでしょう。
} else {
// その逆でしょう。
}
てなわけで、その次のアドレス bfc00b3c にぶっとばしてカラーバーを拝んだ、もうねる。
かれこれ15時間ほどサルのように逆アセを書きつづける。が、COP2 の ADDbc のところではたと止まる。
「ニモニックが引数でむちゃくちゃ変化する!卑怯モノ(わ」
そういう作りになってない。完全に想定外です、げっそり。
あと、レジスタ値を実際に変化させる機能はとりあえず挫折することにした。やっとれん。
会社でお泊まりでようやく帰宅。Happy Hacking PS2! てサイトが出現して(このひとはとてもすごいひとらしい)
eCos/RedBoot てブートストラップ環境をPS2に移植したものが公開されました。帰ってさっそく dhcpd と tftpd をセットアップ。
とりあえず現状の vmlinux を、日々 router としてがんばっている Linux の /tftpboot/ におく。
メモカをセットアップして電源投入。。。
「うわ、画面に表示された!」
「すげ〜 telnet ではいれる!」
「げーダウンロードできない!」
そういや tftpd てファイルのパーミッションゆるゆるにしないとだめなんだったな、と思い chmod 777。気をとりなおして
「おおお、ロードしやがった!」
すごいや。今日も徹夜しよっと(笑
あ、TFTP でファイルのパーミッションが rwx でないとダメなどというのはウソでした。
Can't load 'memolink': operation timed out
などとよくいいますが、しつこくやってると load してくれるようです。
bf402016,2017,2018 の謎を探ってみたり。。。 2016 にはコマンド番号いれるんだ、 2017 の第7ビットはビジーだ、
第6ビットもようにたもんで、0になったら 2018 からなんかもらえる、ぐらいしかわからんかった。
2017 覗き見したりしてたらキーボードの反応がヘンに。そして eject コマンドたたいたら、べろ〜んとトレイがあいて、
ps2sif_lock: low level locking violation
とかいわれて tty が死んだ。なんか横取りしてしまったらしい。eject を SIGKILL しても死なない。親の bash を殺したが
eject はめでたくゾンビに。うわ、リブートしてもキーボードがへん!こわいよお〜。
一度電源切ったらなおりました(^^;
あれ?今度は正常に eject するし 2017 がゼロになったりしない。。。bfc01c70 にごみ書いたりしてたのが悪かったのか?
bfc01c70 てROMじゃないのかなあ。
あ、でも dvd マウントするとゼロになりっぱなし。脈略なくてごめんなさい。
なんか怖いのでしばらく DATEL のプログラム調べます。これなら文句はこないはず。(ほんとか?)
なにげに PS2 発売と同時に書き出した ps2dis って win 用の逆アセプログラムを動かしてみる。
「すげ〜」。これを完成させない手はないなと思った。しばらく潜るかもしれません。
。。。とは言ったものの、時間ないんだった。ぼちぼちやります。期待しないで。
今日気づいたこと:整数のオーバーフローに対して Linux は Floating point exeption といいました。
情けない話ですが、「addi って負の値のアンダーフローもオーバーフローだっけ?」
(意味不明)と思って、
.set noreorder
.globl doit
.ent doit
doit:
li $02, 0x80000000
jr $31
addi $02,-1
.end doit
こんなん書いてCから呼んでみたら言われてしまった。私より初心者の人のために書いておきます。
上のプログラムを addi.s という名前でセーブして、 as -KPIC -o addi.o addi.s てしたらリンクできるオブジェクトが出来ます。
-mcpu=5900 てオプションつけると、少なくとも lq とか sq は使えました。
つづき。レジスタを $2 たら $31 たら番号で書くのはとてもうっとおしい。
$fp,$sp,$gp,$at,$kt0,$kt1 は使えてあとは使えない。なんでだろう。
なんとかなるかと思って binutil を展開してみた。 gas/config/tc-mips.c がとっても怪しいので書き足してみる。
書いてたら、ほんとは itbl-ops.c らへんを変えるのが筋っぽいと知るが、めんどうなので続行。
一応できたみたいなんでパッチだします。こっちのページにどうぞ。
土曜から日曜にかけて、会社で徹夜。。。
帰りに日本橋によったらKARATのPS2<−>PCリンクケーブル売ってたので即買い。
日本で売る気ないのかと思ってました。
USBIOってドライバつかってます。Thesycon GmbH
でAPI置いてるみたいなのでとりあえず落としておいた。
で、付属のケーブルは、絶句。USBの普通のケーブル2本とシリーズBどうしををつなぐコネクタだけ。
こんなんで通信できるとは知らなかった。とはいえこれは楽しそうなアイテムです。
今度コネクタ分解してみますが、クロスしてるだけだったら頭いたい。
あとDATELネタとしてPS2PARがバージョンアップだそうで、これもとりあえず買っておく。
中古屋でSFC用のPARを見つけて、使うとはとても思えないが買い。
ソフマップでツインファミコンの新品が叩き売られてたが思いとどまりましたわ。
ネタがないので追記。ルートからメモカをマウントしても暗号化されたファイルはファイル名すらでませんでした。
それ以外のファイルは読めました。ディレクトリは1階層だけ掘ることができました。ルートにファイルを置けました。
---実験後のメモカ---
./mc00:
total 7
drwx------ 7 root root 4096 Jul 5 00:45 BWLINUX
drwx------ 3 root root 2048 Jul 3 03:49 TESTDIR
-rwx------ 1 root root 8353 Jul 3 03:48 mcfs2.diff
./mc00/BWLINUX:
total 1086
-rwx------ 1 root root 964 Jun 22 00:18 icon.sys
-rwx------ 1 root root 63 Jun 22 00:19 p2lboot.cnf
-rwx------ 1 root root 63 Jul 5 00:45 p2lboot.opt
-rwx------ 1 root root 33112 Jun 22 00:18 penguin.ico
-rwx------ 1 root root 2186782 Jun 22 00:19 vmlinux
./mc00/TESTDIR:
total 0
-rwx------ 1 root root 472 Jul 3 03:49 readme
なに? p2lboot.opt の更新日付が今日だ。ブート時に書きかえたりするんですか?
ちなみに vmlinux が22日の日付なのは20日から出張に行かされるという悲劇があったためです(笑
あと、ついでに手元にあったメモカ(てかスマメ)のゲームデータのディレクトリイメージ。
ディレクトリの階層制限はこれまたどっかで理不尽につけられたもののような気がします。
メモカの物理フォーマットとしてはサポートしているはずです。
参考?リンク:
去年書いたメモカのはなし 途中で更新が途絶えてしまった。。。
Muku さんがリンクはってくれたおかげで結構立ち寄ってくれる人が増えました。
んですが、私は仕事で週末パーで、そろそろ平日徹夜モードに入りつつあります。
更新もなにもネタが作れません。PS2 会社に置いたろかと本気で考えてます。
さてしつこくメモカ周辺でうろうろしてますが、なぜだかメモリの 0x80007c20 に
"BWLINUX" の文字を発見しました。ps2mcfs と ps2mc ではこの文字を扱ってるんですが、
どちらも module で、ロードしてないはずなのに。。
そのアドレスのちょい上には各種メモリマップドなアドレスの配列が。非公開のみっけ。
あ、ルートからマウントできてしまった。。。
が、プログラムの改変にあたると思われますので胸にしまっておきます。
とりあえず低レベルで対応してないという仮説は間違いでした。
その後の調査の結果(て30分たってないけど。)、上記の BWLINUX は DVD 内の起動ファイルのイメージでした。
これは解析しちゃいけない領域なんですよね、多分。なおさら公開できん。
改造コードを受け付けるデバイスとか作ったら面白いかなあって思いましたが
Panic 続出で収集がつかなくなりそうなのでこれもやめ。
/dev/ps2mc00 を ioctl(2) でいぢってみました。くだらないわりに長いので
こっちに書きました。
あと、簡単にセーブデータが見えるかと思ってみたけど、そんなに甘くない。
mcfs の "BWLINUX" を "" に変えてみたら、コンソールにこんなんでました。
PlayStation 2 Memory Card file system
ps2mcfs: ps2mcfs_init_filebuf()
ps2mcfs: start thread
VFS: Disk change detected on device ps2mc(245,0)
ps2mcfs: ps2mcfs_read_super(dev=f5:00)
ps2mcfs: ps2mcfs_get_root(port/slot=00)
ps2mcfs: ps2mcfs_alloc_root(port/slot=00)
ps2mcfs: ps2mcfs_alloc_dirent()
ps2mcfs: ps2mcfs_ref_dirent(): refcount=0++
ps2mcfs: parse_options()
ps2mcfs: ps2mcfs_read_inode(inode=812df5a0): ino=1
ps2mcfs: ps2mcfs_find_dirent_ino(1)
ps2mcfs: ps2mcfs_ref_dirent(): refcount=1++
ps2mcfs: get_path: /
ps2mcfs: ps2mcfs_update_inode(/)
sbios_rpc: RPC failed, result=-1
ps2mclib_GetDir() failed
ps2mcfs: put_path: /(count=0)
ps2mcfs: ps2mcfs_setup_fake_root(card00)
fake_root 発動でなんも見えんかった。
ウソ書いたことが発覚。メモカのファイルシステムのソースで root を "BWLINUX" に設定してました。
てことで ps2mcfs.o を書きかえればゲームのセーブデータなんかも読み書きできるかもしれません。
が、なぜ BWLINUX をルートにしたかって考えると、
もしかしたら低レベルのAPIがルートディレクトリの走査をサポートしてないのかもしれないです。
もしくは、ただめんどくさかったから。
またウソ書くと申し訳ないのでこのへんにしときます(^^;
kernel の init のところで呼んでいる ps2_dev_init() - ps2sif_init() あたりが見当たらない。どこでリンクしてるんだろう。
もっと探せということか。ち、ねよっと。
2001-06-23:
BIOS ぶっこぬきユーティリティー
0xbfc00000 から 0xbfffffff までをマップしただけのキャラデバイス /dev/bios0 を作ります。
60行しかないインチキくさいプログラムですが、
これからデバドラ書こうってひとには雛型になるかもしれません。とかいいながら私自身全然わかってません。
ひどいバグがあったのでアップデートしました。(6/26 15:30)でもこれ汎用性に欠けるから使えないなあ。おまけに会社でデバッグしたとき日本語のコメントがつぶれた。
このプログラムはバグだらけです。さっき objdump いぢってみたらありがたいものを出してくれたので勢いで作成。
objdump --target=elf64-littlemips --disassemble <file name> (あってるのかなあ?)とかの出力をファイルに落としたら、
odview <ファイル名> で見れる。 less なんかと違うのは j jal beq あたりのジャンプをカーソル右で飛べること。
左で戻れること。そんだけだよ、わっはっは。このソースは何度もいいますがバグだらけなんですが直す気はありません。
とりあえず自分が欲しかったから書いただけです。なら公開すんなよって話はごもっともですが、勝手ぢゃん(w
jalr とか飛べないのをなんとかしろってのもなしです。今度つくるときは出来るようにちゃんとがんばります。
■これなんでしょ??? 2001-06-27
Linux Kit の DVD のプログラムをなんとなく strings でみたんだけども、
PCIC: Adaptec APA-1460 detected
PCIC: 3way 3WL-847-T detected
PCIC: DE-660 detected
PCIC: FastEther PCC-TX detected
PCIC: LPC3-TX detected
PCIC: Compact Flash detected
PCIC: ATA/ATAPI Adapter detected
PCIC: I/O DATA CBIDE II detected
PCIC: LPC2-T detected
PCIC: HDD and Ethernet I/F for PS2 detected
どういう意味でしょう。これってインストール時点で対応してたりするんですかね。はて???だれか〜!!(わ
ついで。あと、このへんも。
HDD & Ethernet I/F for PS2
SUN WAY
3WL-847-T 10BASE-T LAN
D-Link
DE-660
118B6603
Adaptec, Inc.
APA-1460 SCSI Host Adapter
Version 0.01
corega K.K.
corega FastEther PCC-TX
N PC Card
MELCO
LPC3-TX
UM]e0
microdrive
'UM]N
'UM]Nd
'UM]N
PC CARD MANUFACTURER
PCMCIA ATA/ATAPI Adapter
Version 3.00
PCMCIA
PnPIDE
ARGOSY
RESEARCH
IO DATA
CBIDE2
Apricorn
ATA PC Card
MELCO
LPC2-T
ETHERNET-CARD-UE-2216
マニュアル読む、というか理解するのが大変。
こんなに公開されると拍子抜け、みたいな気もしてます(笑
。。まあのんびり電車の中で読むことにします。
さて、環境構築は、つつがなく終了でした。
ディスプレイは最初EIZO T962 で Mac 8500 のディスプレイをひっこ抜いてセットアップしたんですが、
後に、今は亡きマハーポーシャで買ったCTX の17インチのでも映ることが発覚したので、
いまはそちらを使っています。キーボードは MITSUMI の英語配列のでなんの問題もなく動いてます。
マウスはつけてません。
Xはわざわざ PS2 で動かしてもしょうがないかなあってことでTTYで充分ってことにしておきます。
(実はマウスを操作できるだけの場所が確保できない(^^;)ネットワークもなんの問題もなく拍子抜け。
いたれりつくせりです。続いてカーネルをコンパイルしてみる。
make zImage だと、あらエラーでおわっちゃうのね。
ただの make (だったかな?)で vmlinux が出来たので多分成功してると思いますけど、とりあえずここまで。
で、ほんだら何を作ろうかって考えると、さしあたり逆アセかなあ、とやっぱり思うわけですが、
げ〜、知らない opcode いっぱい! これは骨が折れそう。
あとさらっとできるかなと思ったのがメモカのセーブデータを読み書きするドライバ。
なんで読めるようにしてくんなかったんだろう、セーブデータ。
メモカのファイルシステムのソースがついてたので簡単かと思ったんですけど、これは低レベルの
/lib/modules/2.2.1/misc/ps2mc.o をたたいてるだけで、こっちのソースはないってことみたいです。(2001-06-28 半分ウソでした。)
てことでオブジェクトファイルの逆アセほし〜。
ていうか各種 irx を責めずして真の勇者になることなぞあり得ないよな、などと思ってみたりする。
なんだけども例のライセンス条件で「解析すんな〜」ってことが書かれてましたから早まった行動は控えなくてわっていう感じです。しばらく様子を見ながらツール類は充実させていかないとなあ、と思ってます。
そのためには、このクソ忙しくて安月給の会社をなんとかせねば(笑
おしまい
追記 06-25:知らなかったのだけれど、 objdump でちゃんと逆アセできるのかしらん。
家帰ったら調べてみます。
昔書いて、ここに残っているもの。
PSX 用アクションリプレイに使われている EEPROM のまとめ
そなえつけの掲示板。つかってない。
■リンク
PS Linux Users Group.
活動拠点はやっぱり東京です。たのしそう。。。(笑
PSLinux(銀杏座β)さん。
「EE,GSに関するQ&A BBS」ていうよだれが出そうなBBSを立ち上げてます。
恥ずかしがらずに恥ずかしい質問しようと思います。
オフィシャルページ
がんばれオフィシャル。
hanimar@geocities.comリンクは自由ですし、どこに張ってもらってもいいです。