スターフォックスアサルトから音声データをリップ

Posted on

 GCのリッピング環境を整えたのに活用していないじゃないか!ということで,ゲームは糞だけど音楽は神との呼び名も高い†1「スターフォックスアサルト」の音声データを吸い出して見ようかなと.

DSPの再生・変換

 「\root\bgm」以下にたくさんのDSPファイルが存在します.これらがBGMです.これらの再生には,以下のWinampプラグインを使用します.

 これを「plugin」フォルダに入れてインストールするだけですね.こうしてWinampで再生が出来るようになりました.また,「out_disk.dll」を用いればWav出力も出来ますね.

例外:オープニングミュージック

 オープニングミュージックだけなぜか入っていません.なぜか.動画と一体となっているのでDSPファイル単体では存在しないからです.

 分離を行うために,PSS_demuxを使います.PS2用ですが,GCのファイルにも用いることが出来ます.(動画の方はスゴイ事になっていて,変換しているとはとても言えません・・・.)

 さてオープニング用動画ファイルですが,「root\movie\loop_demo.sfd」となっています.他にもあるのでいろいろチャレンジ.

最後に

 教えてくれた2ちゃんねらーの皆様ありがとうございました.

  • †1: とまでは思わないけどね,個人的には.面白いじゃないですか.

coregaのCG-WLCB54GLを買ったよ

Posted on

 ワイヤレスマルチブート(店頭デモ起動したり)に使える無線LANカードですね.

 Wifimeと言って自作プログラムを動かすのにも使いたかったんですが,そうするとGBAの生ROMが必要になります.が,私はそんなもの買えるほど裕福で無いので(笑,これであきらめ.

 でもまあ,これでやっとDS買った意味が・・・(笑

 マルチブートに成功したらレポートでも書きます.

店頭デモの吸出しもやろうと思ってますので,PCG-C1MRX(愛称:ストレガ)に装着.

20060208.jpg

どうみてもはみ出しすぎです.本当にありがとうございました(‘A`)

↓Amazonで評価が低いのも分かったよwwwwww

corega CG-WLCB54GL IEEE802.11g/b CardBus対応 無線LANカード
コレガ (2004/05/31)
売り上げランキング: 593
おすすめ度の平均: 2

4 値段の割には‥
1 買ってはいけない!?
1 12ch~14chが使えません

買ってはいけない,とまで言うか(笑

そういえば,なんで付属ドライバのCDはあんなに汚れてるの?w

ポケモンは(ぴったり)100バイトの生命体

Posted on

です.ルビーにおけるポケモン個々のデータの場所は把握しました.

中身はまだ解析中です.っていうかまだまだ.

後日全容が把握できたら,もしくは諦めたら解析内容を掲載しようと思います.

・・・解析って言うかアドレスサーチしただけですね_| ̄|○

まあ「解析ごっこ」ですから,細かいことは気にせずw

個体値・努力値はそのままでは書いていなくって,解読するためのルーチンを通して読み書きしている模様.

一応改造対策なんですかね?

DISARMを16進数表示にするようにしたよ

Posted on

disarmというソフトをご存知でしょうか?

こちらで公開されている,ARMの逆アセンブラソフトです.

勿論GBAのROMを解析する時に良く使うわけですが・・・.

このソフトは数字の出力が「10進数」なんです!

で,それを書き換えて16進で表示させてやろうと.

適当に落としてきてgccでコンパイルしてみました.

***>make
gcc -O2 -mno-cygwin -c disarm.c
cc1.exe: Invalid option `no-cygwin'
In file included from disarm.c:19:
dis-asm.h:65: field `type name' has incomplete type
dis-asm.h:67: field `type name' has incomplete type
dis-asm.h:73: field `type name' has incomplete type
disarm.c: In function `dislarm_init':
disarm.c:143: warning: assignment from incompatible pointer type
disarm.c:144: warning: assignment from incompatible pointer type
disarm.c:146: warning: assignment from incompatible pointer type
make: *** [disarm.o] Error 1

工エエェェ(´д`)ェェエエ工

ちゃんとGCCつかったお!?

うーん・・・逆汗でもするか・・・?

と思ってとりあえずソースでも覗いてみたところ,16進数か10進数かの変更は関数の書式設定で設定されている模様.

こちらに書式に関する情報があります.

ということは,逆汗で覗いてもフォーマット情報は残っているはず.

逆アセンブラで覗いてみたところ,案の定こんな感じでした.

00403524   . F7C1 00008000  TEST ECX,800000
0040352A   . 75 05          JNZ SHORT DISARM.00403531
0040352C   . B8 2E2E4000    MOV EAX,DISARM.00402E2E
00403531   > 50             PUSH EAX
00403532   . 68 432E4000    PUSH DISARM.00402E43                     ;  ASCII "], %s#%d"
00403537   > 8B4D FC        MOV ECX,DWORD PTR SS:[EBP-4]
0040353A   . 51             PUSH ECX
0040353B   . FFD7           CALL EDI
0040353D   . 83C4 10        ADD ESP,10
00403540   . E9 50030000    JMP DISARM.00403895
00403545   > 68 4C2E4000    PUSH DISARM.00402E4C
0040354A   . E9 86010000    JMP DISARM.004036D5

ちゃんと残っています.ということは,バイナリエディタで書き換えれば良いんじゃないの?

ということで書き換えたところ・・・.

***>disarm "POKEMON EMER.gba"
00000000 ea00007f       b       $00000204
00000004 51aeff24       movpl   pc, r4, lsr #1e
00000008 21a29a69       movcs   r9, r9, ror #14
0000000c 0a82843d       beq     $fe0a1108
00000010 ad09e484       stcge   4, cre, [r9, -#210]
00000014 988b2411       stmlsia fp, {r0, r4, sl, sp}
00000018 217f81c0       cmncs   pc, r0, asr #3
0000001c 19be52a3       ldmneib lr!, {r0, r1, r5, r7, r9, ip, lr}
00000020 20ce0993       smullcs r0, lr, r3, r9
00000024 4a4a4610       bmi     $0129186c
00000028 ec3127f8       ldc     7, cr2, [r1], -#3e0
0000002c 33e8c758       mvncc   ip, #1600000
00000030 bfcee382       swilt   0x00cee382
00000034 94dff485       ldrlsb  pc, $000004c1
00000038 c1094bce       tstgt   r9, lr, asr #17
0000003c c08a5694       umullgt r5, sl, r4, r6
00000040 fca77213       sfmnv   f7, 4, [r7], #4c
00000044 734d849f       cmpvc   sp, #9f000000
00000048 619acaa3       orrvss  ip, sl, r3, lsr #15
0000004c 27a39758       undefined
00000050 769803fc       undefined

16進数キタ━━━━━━(゜∀゜)━━━━━━ !!!!!

成功です!

こんなんじゃ駄目だ!

GBA用ならベースアドレスを0x08000000にしなきゃ!ということで,

BCC Developer

を使って適当にやろう(駄 と画策したところ,やっぱり同じところでエラー.

どうもヘッダファイル中にenumで何かを宣言しているところで駄目な模様.ってか,enumって何?

というわけで検索してきました.Javaとは案外ちがうもんですね.

こちらの最後の方にあります.

どうもint型で並び方に関係する型らしい.

・・・でも,ソース中にあるのは

enum arch;

普通の変数みたいな宣言です.上のページで紹介されていたような宣言の仕方じゃない.

エラーが出ている所をすべてenum型からint型に変えれば・・・.

わーい通ったー!!

大体の感覚はJavaと一緒なのでカスタマイズするぐらいなら簡単にできますね.

早速完成.以下にうpします.

http://briefcase.yahoo.co.jp/bc/ryotsukankichi2/lst?.dir=/Soft

今後の課題

システムコールを表示してくれると便利かも?

そのためにはソースの解読が必要みたいですね・・・.