約 3,359,526 件
https://w.atwiki.jp/sagafrontier/pages/43.html
SQUARE Playstation s soft 初期/後期AKAO Format この資料は、旧SQUARE社(現SQUARE ENIX社)のPlaystation向けソフトのサウンドのフォーマット"AKAO"について記述した。 (他旧SQUARE社の音源ドライバには、SMDS(ゼノギアス等), HOSA(DEWPRISM)等がある) バージョン 初期AKAO 初期は細かな仕様の変動が激しく、実際のところ一枚岩ではない。時系列順に示す。 FINAL FANTASY 7 (1997) SaGa Frontier は FF7 と概ね似ているが、FC コマンドの内容などが異なる。 FF7 では音色・サンプルの情報はヘッダーレスのファイルに記録されていたが、SaGa Frontier では "AKAO" シグネチャつきのフォーマットに変更されている。 Saga Frontier (1997) ここから FC xx 形式のメタイベントが導入される (本資料では詳細を記していないが後期AKAOの FE xx とほぼ同じ) FRONT MISSION 2 (1997) チョコボの不思議なダンジョン (1997) (シーケンスデータが圧縮されている) ここからヘッダーサイズが 16 バイトから 32 バイトになる (本資料では詳細を記していない) パラサイト・イヴ (1998) 後期AKAO アナザー・マインド (1998) チョコボの不思議なダンジョン2 (1998) FINAL FANTASY 8 (1999) チョコボレーシング ~幻界へのロード~ (1999) SaGa Frontier 2 (1999) レーシングラグーン (1999) 聖剣伝説 LEGEND OF MANA (1999) FRONT MISSION 3 (1999) クロノ・クロス (1999) VAGRANT STORY (2000) FINAL FANTASY 9 (2000) FINAL FANTASY 2 (Playstation版) (2002) BYTE 1Byte(8bit)である事を示す。 WORD 2Byte(16bit)である事を示す。 DWORD 4Byte(32bit)である事を示す。 AKAOは、リトルエンディアンで記述される。 (1) ヘッダー 初期AKAO Address Type 0x0000 BYTE(4) "AKAO" のASCII文字列 0x0004 WORD File Serial ID:曲毎に番号が異なる。 0x0006 WORD File Size(先頭の16Byteを除く) 0x0008 WORD Reverb Type (0~9) 0x000A BYTE Timestamp (年) (BCD形式) 0x000B BYTE Timestamp (月) (BCD形式) 0x000C BYTE Timestamp (日) (BCD形式) 0x000D BYTE Timestamp (時) (BCD形式) 0x000E BYTE Timestamp (分) (BCD形式) 0x000F BYTE Timestamp (秒) (BCD形式) Address Type 0x0010 DWORD 使用されるチャンネル。各bitがそれぞれのチャンネルに対応。基本的に下位のbitから順に使用するが例外あり(例:FF7「不安な心」)。上位8bitは効果なし。 0x0014 WORD 曲データのある相対アドレス ch1 … (5)項参照 ※該当チャンネル使用時に限り記録される 0x0016 WORD 曲データのある相対アドレス ch2 ※該当チャンネル使用時に限り記録される 0x0018 WORD 曲データのある相対アドレス ch3 ※該当チャンネル使用時に限り記録される ・・・ ・・・ ・・・ 0x0040 WORD 曲データのある相対アドレス ch23 ※該当チャンネル使用時に限り記録される 0x0042 WORD 曲データのある相対アドレス ch24 ※該当チャンネル使用時に限り記録される 尚、初期AKAOで記述される相対アドレスは、2Byte先のアドレスを基点とする。 チャンネルは、静的にハードウェアの各チャンネルに割り当てられる。 殆どの曲は、Playstationの最大発音数24音を、 曲で16チャンネル、効果音で8チャンネルで使用し、効果音と共存させている模様。 一部の曲は、16チャンネル以上使用している場合がある。 例) FINAL FANTASY 7 星の危機 (24チャンネル) FINAL FANTASY 7 スタッフロール (20チャンネル) Reverb Type については以下のとおり。 値 説明 0 Reverb Off 1 Room 2 Studio (Small) 3 Studio (Medium) 4 Studio (Large) 5 Hall 6 Space Echo 7 Echo 8 Delay 9 Pipe Echo 後期AKAO 0x0000 BYTE(4) "AKAO"のASCII文字列 0x0004 WORD File Serial ID:曲毎に番号が異なる。 0x0006 WORD File Size 0x0008 WORD Reverb Type (0~9) ・・・ ・・・ ・・・ 0x001E WORD 不明 0x0020 DWORD 使用されるチャンネル。各bitがそれぞれのチャンネルに対応。基本的に下位のbitから順に使用する。 0x0024 DWORD 不明 0x0028 DWORD 不明 0x002C DWORD 不明 0x0030 DWORD 拡張音色データ情報への相対アドレス (0 未使用) … (2)項参照 0x0034 DWORD パーカッション情報への相対アドレス (0 未使用) … (4)項参照 0x0038 DWORD 不明 0x003C DWORD 不明 0x0040 WORD 曲データのある相対アドレス ch1 … (5)項参照 ※該当チャンネル使用時に限り記録される 0x0042 WORD 曲データのある相対アドレス ch2 ※該当チャンネル使用時に限り記録される 0x0044 WORD 曲データのある相対アドレス ch3 ※該当チャンネル使用時に限り記録される ・・・ ・・・ ・・・ 0x007C WORD 曲データのある相対アドレス ch31 ※該当チャンネル使用時に限り記録される 0x007E WORD 曲データのある相対アドレス ch32 ※該当チャンネル使用時に限り記録される 後期AKAOの相対アドレスは、書かれているアドレスを基点とする。 相対アドレスとは、その位置からのオフセット量を示す。 たとえば、0x0040に書かれているch1の相対アドレスが0x0010であった場合、 0x0040+0x0010=0x0050番地から、ch1のデータが書かれている事を示す。 後期AKAOには最大32個のチャンネルがあるが、Playstationの最大発音数は24音であり、 効果音も含めて、音源ドライバーがハードウェアへ動的に音を割り当てるようになっている。 (2) 音色データ情報ヘッダー (Key-Split Instruments) 2Byte×16個の構造体(合計32Byte) 16個の拡張音色データのオフセットが記載されている。…(3) オフセットの基点は(2)の0x20バイト先、すなわち(3)の先頭アドレスである。 曲データ中の"0xFE 0x14"で指定される音色番号に対応しており、 先頭から順に、それぞれ音色番号0,1,2,・・・,15番の拡張音色データへのアドレスを示す。 数値が0xFFFFの場合は、当該番号の音色は未使用である事を示す。 (最適化されたPSFファイルでは0で消去されていたりするが) 例 80101EF0 00 00 10 00 30 00 58 00 80 00 B0 00 C0 00 E0 00 80101F00 08 01 20 01 FF FF FF FF FF FF FF FF FF FF FF FF 音色番号0の(3)音色データ情報は 0x80101F10 に存在、音色番号1は 0x80101F20 に、音色番号2は 0x80101F40 に、以下同様。 (3) 音色データ情報 (Key-Split Instrument Regions) 拡張音色データの定義が記載される。拡張音色データではキー範囲ごとに異なるサンプルを使用できる。 本データの所在は ①初期AKAOの0xFCの引数、あるいは ②後期AKAOの(2)項 によって示される。 8Byte×(n)の構造体となる。構造は以下の通り 0 音色番号 (A1 コマンドの引数に指定する値と同じ) 1 適用音程範囲 開始ノート番号 2 適用音程範囲 終了ノート番号 3 ADSR Attack Rate (0-127) 4 ADSR Sustain Rate (0-127) 5 ADSR Sustain Mode (1, 3, 5, 7) 6 ADSR Release Rate (0-31) 7 ボリューム (n/128, 0のときは増減なし) ADSR Sustain Mode は以下のいずれかを指定する。 1 Linear increase 3 Linear decrease 5 Exponential increase 7 Exponential decrease サウンドドライバが正しくゾーンを選択できるよう、以下の条件に合わせてデータを記載すること。 音色ごとに、終了ノート番号が小さい順にデータを並べなければならない 音色ごとに、最後尾のゾーン定義の後ろには、ゾーンの終端を表すエントリを記録しなければならない 後期AKAOでは、8バイトすべてが0の終端データを記録しなければならない(厳密には ADSR Sustain Mode が 0 のデータが終端として判定される) それ以前、パラサイト・イヴでは、80 80 80 80 00 00 00 00 が記録される。音色番号が 0x80 以上のデータが終端とみなされる模様 (4) パーカッション音色データ 8Byteの構造体の配列。先頭の8Byteから C, Cis, D, Dis, E … の音色データを示す。 オクターブの扱いが初期AKAOと後期AKAOで異なる。 初期AKAOではオクターブは無視される。したがって、配列の要素数は最大で12であると考えられる。 後期AKAOではオクターブが反映されるため、配列の要素数は最大で128であると考えられる。 実際にシーケンスに表れる要素数は固定ではないが、要素数が明示的に記述されているわけでもない。この配列はシーケンスデータの末尾に配置されるため、ファイルサイズを確認し、ファイルサイズ外の領域にはアクセスしないようにプログラムを作成すると良いだろう。 初期AKAO 0 パーカッション音色番号 (A1 コマンドの引数に指定する値と同じ) 1 発音する音程(ノート番号) 2 ボリューム 小数部 (※) 3 ボリューム 整数部 (※) 4 パンポット (AA コマンドの引数に指定する値と同じ、64 が中央) ボリュームは A8 コマンドの音量値を上書きする形で実現される。ここで指定する値は (A8コマンドで指定する値 * 128) と等価である。したがって、A8 コマンドで指定可能な最大値 0x3F80 (127 * 128) 以下の値を指定するのが妥当な使用法であると考えるが、それを超えるケースが実在するかどうかは不明。 初期AKAO パラサイト・イヴ データが1バイト増えている。 5 リバーブ on/off (1 or 0) 後期AKAO データが8バイトに再編成されている。 0 パーカッション音色番号 (A1 コマンドの引数に指定する値と同じ) 1 発音する音程(ノート番号) 2 ADSR Attack Rate (0-127) 3 ADSR Sustain Rate (0-127) 4 ADSR Sustain Mode (1, 3, 5, 7) 5 ADSR Release Rate (0-31) 6 ボリューム (n/128, 0のときは増減なし) 7 パンポット (bit 0-6) および リバーブ on/off (bit 7) 尚、8Byteの構造体が全て0x00のときは、未使用である事を示す。 構造上、0x00がたくさん並ぶ事があるが、『決して、AKAOデータの終わりではない』ので、抜き出し時は注意。 一部資料には、『0x00が連続したらAKAOデータ終わり』とか書いてあったけど、そんな事は無い。 ヘッダーのファイルサイズ通りに切り出せば、問題ない。 (5) シーケンスデータ 0x00~0x99 音符・休符を示す。 音程の変換式は以下のようになります。 バイトコード / 11 = 音の高さ 0=ド 1=ド# 2=レ 3=レ# 4=ミ 5=ファ 6=ファ# 7=ソ 8=ソ# 9=ラ 10=ラ# 11=シ 12=タイ(直前の音を切らずに伸ばす) 13=休符 バイトコード / 11 の余り = 音の長さ 0=全音符 (192 ticks) 1=2分音符 (96 ticks) 2=4分音符 (48 ticks) 3=8分音符 (24 ticks) 4=16分音符 (12 ticks) 5=32分音符 ( 6 ticks) 6=64分音符 ( 3 ticks) 7=6分音符 (32 ticks) 8=12分音符 (16 ticks) 9=24分音符 ( 8 ticks) 10=48分音符 ( 4 ticks) パラサイト・イヴ以前の初期AKAOにおいては、スラーやレガートが有効ではない通常の状況では、音符の実際の発音の長さ(デュレーション)は上記から -2 ticks した長さになる。アナザー・マインド以降の後期AKAOではこの限りではない。 0x9A~0x9F 未定義命令。 0xA0 シーケンス終了。 無限ループしない場合の終端となる。 0xA1, voice BYTE 音色番号を(voice)に指定する。 又、ハードウェアエンベロープを音色の規定値に設定する。 0xA2, length BYTE 次の音符・休符(0x00~0x99コマンド)の音長を、強制的に(length)[ticks]にする。 効果は持続しない。それ以降の音符・休符は通常どおりに解釈される。 0xA3, volume BYTE 音量を、(volume)にする。 0xA4, length BYTE, depth BYTE (length)[ticks]で(signed char)(depth)×100[cent]だけ、音程を推移する。 (length)が0の場合は 256 ticks と解釈される。 0xA5, octave BYTE オクターブを(ocrave)に設定する。 基本的に4が中央Cとなるが、音色によってサンプリングされた周波数が異なる為、この限りで無い。 0xA6 オクターブを1つ上げる。 0xA7 オクターブを1つ下げる。 0xA8, expression BYTE 2系統目の音量。音符の表現付けの為に使われる。 音源ドライバ内部で、0xA1コマンドの引数と掛け算が行われ、それが実際の音量になる。 0xA9, length BYTE, expression BYTE (length)[ticks]で、(expression)に音量を推移する。 (length)が0の場合は 256 ticks と解釈される。 0xAA, panpot BYTE パンポットを指定する。64が中央。 0xAB, length BYTE, panpot BYTE (length)[ticks]で、(panpot)にパンポットを推移する。 (length)が0の場合は 256 ticks と解釈される。 0xAC, clock BYTE ノイズ周波数を(clock)の下位6bit(0~0x3F)の値に設定する。 ただし、上位2bitが0でない場合は相対指定となり、下位6bitを符号付きで解釈して現在のノイズ周波数を相対的に変化させる。 0xAD, ar BYTE ハードウェア・エンベロープ (ADSR) の Attack Rate を設定する。 0xAE, dr BYTE ハードウェア・エンベロープ (ADSR) の Decay Rate を設定する。 0xAF, sl BYTE ハードウェア・エンベロープ (ADSR) の Sustain Level を設定する。 0xB0, dr BYTE, sl BYTE ハードウェア・エンベロープ (ADSR) の Decay Rate と Sustain Level を設定する。 0xB1, sr BYTE ハードウェア・エンベロープ (ADSR) の Sustain Rate を設定する。 0xB2, rr BYTE ハードウェア・エンベロープ (ADSR) の Release Rate を設定する。 0xB3 ハードウェア・エンベロープ (ADSR) を、音色のデフォルトに戻す。 0xB4, delay BYTE, rate BYTE, type BYTE 音程LFOを指定する。 delay[ticks]が、LFO開始までの時間。 rate[ticks]が、LFOの1ステップの長さ。値が小さいほど変化が高速になる。(rate)が0の場合は 256 ticks と解釈される。 type(0~15)はLFOの波形の種類を指定する。 波形ごとに1周期あたりのサンプル数は異なるため、LFOの周期は一概には言えない。 0xB5, depth BYTE 音程LFOの振幅量を指定する。 depthの最上位bitで振幅量の範囲を指定する。 0の場合は最大で約 ± 50 cents の範囲 (1の場合と比べて振幅が 15/256) 1の場合は最大で約 ± 700 cents の範囲 のはず。 0xB6 音程LFOを停止する。 0xB7, armode BYTE ハードウェア・エンベロープ (ADSR) の Attack Mode を設定する。 ハードウェアの仕様説明は省略するが(PSX Spex などを参照)、値の説明は以下のとおり。 値 説明 0 Direct Mode 1 Linear Increase Mode (Normal Phase) 2 Linear Increase Mode (Inverted Phase) 3 Linear Decrease Mode (Normal Phase) 4 Linear Decrease Mode (Inverted Phase) 5 Exponential Increase Mode (Normal Phase) 6 Exponential Increase Mode (Inverted Phase) 7 Exponential Decrease Mode 0xB8, delay BYTE, rate BYTE, type BYTE 音量LFOを指定する。 delay[ticks]が、LFO開始までの時間。 rate[ticks]が、LFOの1ステップの長さ。値が小さいほど変化が高速になる。(rate)が0の場合は 256 ticks と解釈される。 type(0~15)はLFOの波形の種類を指定する。 波形ごとに1周期あたりのサンプル数は異なるため、LFOの周期は一概には言えない。 0xB9, depth BYTE 音量LFOの振幅量を指定する。 0xBA 音量LFOを停止する。 0xBB, srmode BYTE ハードウェア・エンベロープ (ADSR) の Sustain Mode を設定する。 0xBC, rate BYTE, type BYTE パンポットLFOを指定する。 rate[ticks]が、LFOの1ステップの長さ。値が小さいほど変化が高速になる。(rate)が0の場合は 256 ticks と解釈される。 type(0~15)はLFOの波形の種類を指定する。 波形ごとに1周期あたりのサンプル数は異なるため、LFOの周期は一概には言えない。 0xBD, depth BYTE パンポットLFOの振幅量を指定する。 0xBE パンポットLFOを停止する。 0xBF, rrmode BYTE ハードウェア・エンベロープ (ADSR) の Release Mode を設定する。 0xC0, semitones BYTE (signed char)(semitones)だけ移調する。絶対値指定。 0xC1, semitones BYTE (signed char)(semitones)だけ移調する。相対値指定。 0xC2 リバーブを有効にする。 0xC3 リバーブを無効にする。 0xC4 ノイズを有効にする。 0xC5 ノイズを無効にする。 0xC6 FM変調を有効にする。 0xC7 FM変調を無効にする。 0xC8 リピート開始点 リピートはおそらく4重までネスト可能 0xC9, count BYTE リピート終了点 (count)の回数に達するまで、リピート開始点に戻って演奏を繰り返す。 (count)が0の場合は256と解釈される。 0xCA 無条件リピート リピート回数を+1してから、リピート開始点に戻って演奏を繰り返す。 0xCB ノイズ、FM変調、リバーブ、0xF4 (オーバーレイ)、0xF8 (代理発音) などの効果をリセットする。 0xCC スラー開始。 実際には、KeyOn/KeyOffの操作を停止し、音程のレジスタのみを変更する処理となる。 間に休符が挟まれた場合は、スラーを終了する。 0xCD スラー終了 0xCE, delay BYTE ノイズを有効にして、一定時間後に無効にする。 delay[ticks]が無効化までの時間。delayが0の場合は 256 ticks と解釈される。 0xCF, delay BYTE ノイズの有効・無効を一定時間後に反転する。 delay[ticks]が無効化までの時間。delayが0の場合は 256 ticks と解釈される。 0xD0 レガート開始。音符が終了する直前のKeyOffの操作をしないようにする。 0xD1 レガート終了 0xD2, delay BYTE FM変調を有効にして、一定時間後に無効にする。 delay[ticks]が無効化までの時間。delayが0の場合は 256 ticks と解釈される。 0xD3, delay BYTE FM変調の有効・無効を一定時間後に反転する。 delay[ticks]が無効化までの時間。delayが0の場合は 256 ticks と解釈される。 0xD4 ノートの音程を無視し、1つ前のチャンネルの再生周波数をコピーして使用するようになる特殊なコマンド。 0xD5 0xD4の効果を解除する。 0xD6 1つ前のチャンネルの再生周波数を音量に乗算するようになる特殊なコマンド。 つまり、1つ前のチャンネルが低い音を出すほど音量は小さくなり、高い音を出すほど音量は大きくなる。 0xD7 0xD6の効果を解除する。 0xD8, pitch BYTE (signed char)(pitch)だけ音程をずらす。絶対値指定。 音程が変化する範囲は±1オクターブ。 (pitch)は再生周波数に対する倍率を示す。cents のような対数スケールではない。 たとえば、127で127/128倍(約+1オクターブ)、-128で128/256倍(-1オクターブ)に再生周波数を変化させる。 0xD9, pitch BYTE (signed char)(pitch)だけ音程をずらす。相対値指定。 0xDA, speed BYTE ポルタメント有効化。音符間の音程がなめらかに推移するようになる。 speed[ticks]がポルタメントの速さ(長さ)。speedが0の場合は 256 ticks と解釈される。 0xDB ポルタメント無効化 0xDC, dlength BYTE これ以降に出現する音符の長さを固定する奇妙なコマンド。おそらく効果音向け。 (signed char)dlength[ticks] で長さを相対的に指定する。(初期値は0=無効) dlength を加算後の長さが 1~255 の範囲内でなければクリップする(0 にはできないはずで、有効化すると無効化できないかも)。 0xDD, length BYTE, depth BYTE (length)[ticks]で、(depth)に音程LFOのdepthを推移する。 (length)が0の場合は 256 ticks と解釈される。 0xDE, length BYTE, depth BYTE (length)[ticks]で、(depth)に音量LFOのdepthを推移する。 (length)が0の場合は 256 ticks と解釈される。 0xDF, length BYTE, depth BYTE (length)[ticks]で、(depth)にパンポットLFOのdepthを推移する。 (length)が0の場合は 256 ticks と解釈される。 0xE0以降のコマンドは、初期AKAOと後期AKAOで異なるので注意。 初期AKAO 0xE0~0xE7 未実装命令。効果は 0xA0 と同じ。 0xE8, tempo WORD テンポを設定する。BPM (拍/分) に変換する式は以下のとおり。 bpm = tempo / 218.453333333 正確には以下の式から上記の結論となる。 PPQN = 48 TIMER_FREQ = 0x44E8 bpm = 60.0 / (PPQN * (65536.0 / tempo) * (TIMER_FREQ / (33868800.0 / 8))) FINAL FANTASY 7 では、タイマーの係数が異なる。 bpm = tempo / 214.998204082 正確には以下の式から上記の結論となる。 PPQN = 48 TIMER_FREQ = 0x43D1 bpm = 60.0 / (PPQN * (65536.0 / tempo) * (TIMER_FREQ / (33868800.0 / 8))) 0xE9, length BYTE, tempo WORD テンポを、(length)[ticks]で、(tempo)に推移する。 (length)が0の場合は 256 ticks と解釈される。 0xEA, reverb WORD リバーブの深さを、(reverb)に設定する。 0xEB, length BYTE, reverb WORD リバーブの深さを、(length)[ticks]で、(reverb)に推移する。 (length)が0の場合は 256 ticks と解釈される。 0xEC, address WORD パーカッションに切り替える。 (address)に、パーカッション情報の構造体がある相対アドレスが記述される。…(4) 0xED パーカッションを終了する。 0xEE, address WORD (address)(相対アドレス)に無条件ジャンプする。 主に無限ループに使われるが、一部、条件ジャンプ命令などと組み合わせ、 スパゲティーな構造になっている曲もあり、この限りで無い。 0xEF, condition BYTE, address BYTE (condition)条件下において、(address)(相対アドレス)に条件ジャンプする。 ゲームの進行状況において曲を進行させる場合等に使われる。 0xF0, count BYTE, address WORD リピート(0xC8~0xC9, 0xCA)内条件分岐。 (count)目のリピートであった場合、(address)(相対アドレス)にジャンプする。 (count)が0の場合は256と解釈される。 0xF1, count BYTE, address WORD リピート(0xC8~0xC9, 0xCA)内条件分岐。0xF0と類似。 (count)目のリピートであった場合、(address)(相対アドレス)にジャンプしてリピートを終了する。 (count)が0の場合は256と解釈される。 0xF2, voice BYTE 音色番号を(voice)に指定する。0xA1コマンドと異なり、ループポイント以前のサンプルを再生しない。 技術的には、ループ開始アドレスを規定どおりに設定するが、サンプル開始アドレスを2ブロック分の短い無音の ADPCM サンプルに向けることでこのような動作を実現する。 0xF3 (SaGa Frontier) 不明 0xF3 (FINAL FANTASY 7) 不明。トラックだけでなくシーケンス全体に影響を及ぼす。 0xF4, voice BYTE, voice2 BYTE (FINAL FANTASY 7) 未使用チャンネルを使用して2つの音色で同じ旋律を演奏する。オーバーレイ。FF7「不安な心」で使用されている。 主チャンネルの音色番号を(voice)に設定し、未使用チャンネルに割り当てられる副チャンネルの音色番号を(voice2)に設定する。 2つのチャンネルは ADPCM の再生周波数を共有しており、音色ごとに音程が計算されるわけではないことに注意が必要。併用できるインストゥルメントは限られるかもしれない。 0xF5~0xF8 (SaGa Frontier) 未実装命令。効果は 0xA0 と同じ。 0xF5 (FINAL FANTASY 7) 0xF4 の効果を解除する。 0xF6, balance BYTE (FINAL FANTASY 7) 0xF4 のオーバーレイの主チャンネルと副チャンネルの音量バランスを 0~127 で指定する。 balanceが0だと主チャンネルが100%で副チャンネルが0%、127だとその逆となる。 0xF7, length BYTE, balance BYTE (FINAL FANTASY 7) 0xF6 のオーバーレイの音量バランスを、(length)[ticks]で、(balance)に推移する。 (length)が0の場合は 256 ticks と解釈される。 0xF8, rr BYTE 未使用チャンネルを使用して、音符を2つのチャンネルの間で交互にキーオンする。FF7のオープニングや鷲の砦のティンパニ、ティファのテーマのメロディパートなどで使用されている。 その際、ハードウェア・エンベロープ (ADSR) の Release Rate を (rr) に設定する。 0xF9 0xF8 の効果を解除する。 0xFA~0xFB 未実装命令。効果は 0xA0 と同じ。 0xFC, address WORD (SaGa Frontier) 拡張音色を設定する。 音色情報の構造体は、(address)(相対アドレス)に記述される。 構造体は、(3)項参照。 FINAL FANTASY 7 では 0xE0~0xE7 と同じ未定義命令。 0xFD, timebase BYTE, time BYTE 拍子情報。(timebase)は一拍あたりのtick数を表し、(time)は一小節あたりの拍数を表す。 言い換えると、拍子を(time)[分子]/(192÷(timebase))[分母]に設定するといえる。 ただし、初期化のために2つのパラメータに0を指定するケースがあるようなので、プログラムを作成する際は0除算の可能性に注意が必要。 ゲーム内ではこの情報に基づいて現在の小節番号と拍数がカウントされる。 0xFE, measure BYTE 小節番号を指定された値に設定する。 0xFF 未実装命令。効果は 0xA0 と同じ。 後期AKAO 0xE0 不明 0xE1, unknown BYTE 不明 0xE2 不明 0xE3 不明 0xE4, length BYTE, rate BYTE (length)[ticks]で、(depth)に音程LFOのrateを推移する。 (length)が0の場合は 256 ticks と解釈される。 0xE5, length BYTE, rate BYTE (length)[ticks]で、(depth)に音量LFOのrateを推移する。 (length)が0の場合は 256 ticks と解釈される。 0xE6, length BYTE, rate BYTE (length)[ticks]で、(depth)にパンLFOのrateを推移する。 (length)が0の場合は 256 ticks と解釈される。 0xE6, unknown BYTE, unknown BYTE 不明 0xE7~0xEF 不明 0xF0~0xFD, length BYTE 音符・休符・タイ 音長は、length[ticks]となる。(ただし 0xA2 や 0xDC によって上書きされる可能性がある。このあたりの扱いは通常の音符と同じ) 0xF0 C 0xF1 Cis 0xF2 D 0xF3 Dis 0xF4 E 0xF5 F 0xF6 Fis 0xF7 G 0xF8 Gis 0xF9 A 0xFA B 0xFB H 0xFC タイ 0xFD 休符 0xFE, 0x00, tempo WORD テンポを設定する。BPM (拍/分) に変換する式は以下のとおり。 bpm = tempo / 218.453333333 正確には以下の式から上記の結論となる。 PPQN = 48 TIMER_FREQ = 0x44E8 bpm = 60.0 / (PPQN * (65536.0 / tempo) * (TIMER_FREQ / (33868800.0 / 8))) 0xFE, 0x01, length BYTE, tempo WORD テンポを、(length)[ticks]で、(tempo)に推移する。 (length)が0の場合は 256 ticks と解釈される。 0xFE, 0x02, reverb WORD リバーブの深さを、(reverb)に設定する。 0xFE, 0x03, length BYTE, reverb WORD リバーブの深さを、(length)[ticks]で、(reverb)に推移する。 (length)が0の場合は 256 ticks と解釈される。 0xFE, 0x04 パーカッションに切り替える。(4)項参照 0xFE, 0x05 パーカッションを終了する。 0xFE, 0x06, address WORD (address)(相対アドレス)に無条件ジャンプする。 主に無限ループに使われるが、一部、条件ジャンプ命令などと組み合わせ、 スパゲティーな構造になっている曲もあり、この限りで無い。 0xFE, 0x07, condition BYTE, address WORD (condition)条件下において、(address)(相対アドレス)に条件ジャンプする。 ゲームの進行状況において曲を進行させる場合等に使われる。 例) FINAL FANTASY 9 ラスボス VAGRANT STORYの一部の曲 0xFE, 0x08, count BYTE, address WORD リピート(0xC8~0xC9, 0xCA)内条件分岐。 (count)目のリピートであった場合、(address)(相対アドレス)にジャンプする。 (count)が0の場合は256と解釈される。 0xFE, 0x09, count BYTE, address WORD リピート(0xC8~0xC9, 0xCA)内条件分岐。 (count)目のリピートであった場合、(address)(相対アドレス)にジャンプしてリピートを終了する。 (count)が0の場合は256と解釈される。 0xFE, 0x0A, voice BYTE 音色番号を(voice)に指定する。0xA1コマンドと異なり、ループポイント以前のサンプルを再生しない。 技術的には、ループ開始アドレスを規定どおりに設定するが、サンプル開始アドレスを短い無音の ADPCM サンプルに向けることでこのような動作を実現する。 0xFE, 0x0B, address WORD, address2 WORD 不明 0xFE, 0x0E, address WORD (address)(相対アドレス)にジャンプする。0xFE 0x0F で元の位置に復帰する。 ネスト不可。ネストした場合、以前のリターンアドレスは上書きされる。 0xFE, 0x0F 0xFE 0x0E から復帰する。 0xFE, 0x10, count BYTE (count) で指定された数のハードウェアチャンネルを予約する。 各トラックで予約チャンネルを使用するには別途 0xFE 0x1D の使用が必要。 0xFE, 0x11 予約チャンネルを解放する(予約チャンネルの数を0に設定する) 0xFE 0x12, length BYTE, volume BYTE (length)[ticks]で、(volume)に音量を推移する。 (length)が0の場合は 256 ticks と解釈される。 0xFE, 0x14, voice BYTE 拡張音色を設定する。(2)項参照 0xFE, 0x15, timebase BYTE, time BYTE 拍子を、(time)[分子]/(192÷(timebase))[分母]に設定する。 0xFE, 0x16, measure BYTE 小節番号。 0xFE 0x19, length BYTE, expression BYTE 0xA9 の音量フェードをノートオンごとに適用する。 (length)が0の場合は 256 ticks と解釈される。 0xFE, 0x1A 不明 0xFE, 0x1B 不明。0xFE 0x1A の効果を解除する 0xFE, 0x1C, unknown BYTE 不明 0xFE, 0x1D 0xFE 0x10 で割り当てられた予約チャンネルを現在のトラックの発音に使用する。 発音時は予約チャンネルを優先的に使用する。予約チャンネルがすべて使用済みの場合は、残りのチャンネルの使用を通常どおり試みる。 0xFE, 0x1E 0xFE 0x1D の効果を無効にし、現在のトラックで予約チャンネルを使用しないようにする。 0xFE, 0x1F 不明 0xFF 不明 後期AKAOインプリメンテーションマップ 後期AKAOにも、ゲームタイトルごとの実装の違いはわずかながら存在する。問題になるオペコードはあまり楽曲に登場することがなく一通りの解釈をしていても実際は問題にならないものがほとんどのように思うが、参考情報としてタイトル別の実装のばらつきを次の表に示す。 次の表は、ゲームタイトルごとにオペコードにどのようなデータ形式・効果が割り当てられているかを示している。(void) は引数を取らないオペコードであることを示す。n/a は処理が割り当てられていないことを示す(E0 と同じ効果になる)。NOP と書かれているオペコードは、引数を読み飛ばしているだけで処理が見られないことを表す。ばらつきのないオペコードについてはとくに情報を記していない。 Game Title (Year) E0 E1 E2 E3 E4 E5 E6 FE 0B FE 0C FE 0D FE 0E FE 0F FE 10 FE 11 ... FE 13 ... FE 17 FE 18 ... FE 1A FE 1B FE 1C FE 1D FE 1E FE 1F Another Mind (1998) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Chocobo Dungeon 2 (1998) (void) n/a n/a n/a n/a n/a n/a (int16, int16) NOP (byte, byte) NOP (void) (byte) (length byte, target byte) (byte) (void) n/a (byte) (length byte, target byte) (void) (void) n/a n/a n/a n/a Final Fantasy 8 (1999) (void) n/a n/a n/a n/a n/a n/a (int16, int16) NOP (byte, byte) NOP (void) (byte) (length byte, target byte) NOP (byte) NOP (void) n/a (byte) (length byte, target byte) (void) (void) (byte) (void) (void) n/a Chocobo Racing (1999) (void) n/a n/a n/a n/a n/a n/a (int16, int16) NOP (byte, byte) NOP (void) (byte) (length byte, target byte) AllocReservedVoices (byte) FreeReservedVoices (void) n/a (byte) (length byte, target byte) (void) (void) (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a SaGa Frontier 2 (1999) (void) n/a n/a n/a n/a n/a n/a (int16, int16) NOP (byte, byte) NOP (void) (byte) (length byte, target byte) AllocReservedVoices (byte) FreeReservedVoices (void) n/a (byte) (length byte, target byte) (void) (void) NOP (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a Racing Lagoon (1999) (void) n/a n/a n/a n/a n/a n/a (int16, int16) NOP (byte, byte) NOP (void) (byte) (length byte, target byte) AllocReservedVoices (byte) FreeReservedVoices (void) n/a (byte) (length byte, target byte) (void) (void) NOP (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a Legend of Mana (1999) (void) (byte) (void) n/a n/a n/a n/a (int16, int16) n/a n/a Pattern (int16) PatternEnd (void) AllocReservedVoices (byte) FreeReservedVoices (void) n/a (byte) (length byte, target byte) (void) (void) NOP (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a Front Mission 3 (1999) (void) (byte) (void) n/a n/a n/a n/a (int16, int16) n/a n/a Pattern (int16) PatternEnd (void) AllocReservedVoices (byte) FreeReservedVoices (void) n/a (byte) (length byte, target byte) (void) (void) NOP (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a Chrono Cross (1999) (void) (byte) (void) n/a VibratoRateSlide (byte, byte) TremoloRateSlide (byte, byte) PanLfoRateSlide (byte, byte) Unknown (?) n/a n/a Pattern (int16) PatternEnd (void) AllocReservedVoices (byte) FreeReservedVoices (void) (void) n/a n/a (void) (void) NOP (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a Vagrant Story (2000) (void) (byte) (void) n/a n/a n/a n/a (int16, int16) (byte) n/a Pattern (int16) PatternEnd (void) AllocReservedVoices (byte) FreeReservedVoices (void) n/a n/a n/a (void) (void) (byte) UseReservedVoices (void) UseNoReservedVoices (void) (void) Final Fantasy 9 (2000) (void) (byte) (void) n/a VibratoRateSlide (byte, byte) TremoloRateSlide (byte, byte) PanLfoRateSlide (byte, byte) (int16, int16) n/a n/a Pattern (int16) PatternEnd (void) AllocReservedVoices (byte) FreeReservedVoices (void) n/a n/a n/a (void) (void) NOP (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a Final Fantasy Origins - Final Fantasy 2 (2002) (void) (byte) (void) n/a VibratoRateSlide (byte, byte) TremoloRateSlide (byte, byte) PanLfoRateSlide (byte, byte) (int16, int16) n/a n/a Pattern (int16) PatternEnd (void) AllocReservedVoices (byte) FreeReservedVoices (void) n/a n/a n/a (void) (void) NOP (byte) UseReservedVoices (void) UseNoReservedVoices (void) n/a AKAO サンプルデータファイル 本ページでは AKAO のシーケンスデータについて説明してきたが、音楽を再生するにはあわせてサンプルデータの理解が必要となる。 サンプルデータはシーケンスデータと同じく AKAO シグネチャつきのファイルに格納されているため、その構造を以下に示す。 初期AKAO - FINAL FANTASY 7 FF7 では以下のファイルにサンプルが格納されている。 SOUND/INSTR.DAT - メインサウンドのアーティキュレーション情報およびピッチ情報 (93 instruments) SOUND/INSTR2.DAT - 「片翼の天使」のクワイアのデータ。ファイル構成は同上 (4 instruments) SOUND/INSTR.ALL - メインサウンドの SPU 転送先アドレスとサンプル本体 SOUND/INSTR2.ALL- 「片翼の天使」のクワイアのデータ。ファイル構成は同上 INSTR.DAT (アーティキュレーション情報およびピッチ情報) 64バイトの構造体が繰り返される。ファイルサイズは記録されていないことから、読み込みサイズはプログラム内にハードコードされている。 Address Type 0x0000 DWORD サンプルの開始位置 (SPU アドレス) 0x0004 DWORD サンプルのループ開始位置 (SPU アドレス) 0x0008 BYTE ADSR attack rate (0x00-0x7f) 0x0009 BYTE ADSR decay rate (0x00-0x0f) 0x000A BYTE ADSR sustain level (0x00-0x0f) 0x000B BYTE ADSR sustain rate (0x00-0x7f) 0x000C BYTE ADSR release rate (0x00-0x1f) 0x000D BYTE ADSR attack mode (1, 5) 0x000E BYTE ADSR sustain mode (1, 3, 5, 7) 0x000F BYTE ADSR release mode (3, 7) 0x0010 DWORD[12] 音階ごとの基準ピッチ (C, Cis, D...) 基準ピッチはオクターブ6の音階における再生レートを表す。 INSTR.ALL (SPU 転送先アドレスと PSX-ADPCM 本体) 0x0000 DWORD サンプルデータの転送先 SPU アドレス 0x0004 DWORD サンプルデータのサイズ 0x0008 DWORD 0 (未使用?) 0x000C DWORD 0 (未使用?) 0x0010 BYTE[] サンプルデータ (PSX-ADPCM) 初期AKAO - SaGa Frontier ファイルが一体化され、AKAO シグネチャが付与された。 Address Type 0x0000 BYTE(4) "AKAO" のASCII文字列 0x0004 WORD 未使用? 0x0006 WORD 未使用? 0x0008 WORD 未使用? 0x000A BYTE Timestamp (年) (BCD形式) 0x000B BYTE Timestamp (月) (BCD形式) 0x000C BYTE Timestamp (日) (BCD形式) 0x000D BYTE Timestamp (時) (BCD形式) 0x000E BYTE Timestamp (分) (BCD形式) 0x000F BYTE Timestamp (秒) (BCD形式) 0x0010 DWORD サンプルデータの転送先 SPU アドレス 0x0014 DWORD サンプルデータのサイズ 0x0018 DWORD 開始ID 0x001C DWORD 未使用? 0x0020 DWORD 未使用? 0x0024 DWORD 未使用? 0x0028 DWORD 未使用? 0x002C DWORD 未使用? 0x0030 DWORD 未使用? 0x0034 DWORD 未使用? 0x0038 DWORD 未使用? 0x003C DWORD 未使用? インストゥルメントの個数は (128 - 開始ID) で算出される。 次に64バイトの構造体の繰り返しによるアーティキュレーション情報・ピッチ情報が続く。構造体の内容は FF7 の INSTR.DAT と同一のため説明は割愛する。 さらにその後ろには、サンプルデータが配置される。 初期AKAO どのID帯にインストゥルメントをロードするかを指定可能となった。 また、終了ID が追加され、インストゥルメントの格納数が可変となった。 それ以外の点は SaGa Frontier と同じ。 Address Type 0x001C DWORD 終了ID (0 の場合は 0x100 とみなされる) 後期AKAO - Another Mind Another Mind は過渡期のバージョンであり、他の後期AKAOとは若干異なるファイルレイアウトが採用されている。 ファイルの冒頭に出現する64バイトのヘッダーは後述のバージョンとおそらく同様。終了IDがインストゥルメントの個数になった模様。 Address Type 0x001C DWORD インストゥルメントの個数 ヘッダーの後には、64バイトの構造体の繰り返しによるアーティキュレーション情報・ピッチ情報が続く。構造体の内容は前バージョンと似ているが項目の順序が異なっているほか、サンプルの位置情報が SPU アドレスからオフセットに変更された。 また、基準ピッチが Q8 固定小数点数に変更されており、旧バージョンよりも値が256倍大きい点にも注意。 Address Type 0x0000 DWORD サンプルの開始位置 (サンプルデータ内の相対オフセット) 0x0004 DWORD サンプルのループ開始位置 (サンプルデータ内の相対オフセット) 0x0008 DWORD[12] 音階ごとの基準ピッチ (C, Cis, D...) (Q8 固定小数点数) 0x0038 BYTE ADSR attack rate (0x00-0x7f) 0x0039 BYTE ADSR decay rate (0x00-0x0f) 0x003A BYTE ADSR sustain level (0x00-0x0f) 0x003B BYTE ADSR sustain rate (0x00-0x7f) 0x003C BYTE ADSR release rate (0x00-0x1f) 0x003D BYTE ADSR attack mode (1, 5) 0x003E BYTE ADSR sustain mode (1, 3, 5, 7) 0x003F BYTE ADSR release mode (3, 7) 後期AKAO Another Mind と比較すると、アーティキュレーション情報が64バイトから16バイトに再構成された。 ファイルの先頭には、以下の64バイトのヘッダーが記録される。 Address Type 0x0000 BYTE(4) "AKAO" のASCII文字列 0x0004 WORD File Serial ID 0x0006 WORD 不明 0x0008 DWORD 不明 0x000C DWORD 不明 0x0010 DWORD サンプルデータの転送先 SPU アドレス 0x0014 DWORD サンプルデータのサイズ 0x0018 DWORD 開始ID 0x001C DWORD インストゥルメントの個数 0x0020 DWORD 不明 0x0024 DWORD 不明 0x0028 DWORD 不明 0x002C DWORD 不明 0x0030 DWORD 不明 0x0034 DWORD 不明 0x0038 DWORD 不明 0x003C DWORD 不明 次に16バイトの構造体の繰り返しによるアーティキュレーション情報が続く。 Address Type 0x0000 DWORD サンプルの開始位置 (サンプルデータ内の相対オフセット) 0x0004 DWORD サンプルのループ開始位置 (サンプルデータ内の相対オフセット) 0x0008 WORD (signed) Fine Tune (※) 0x000A WORD Unity Key 0x000C WORD ADSR1 0x000E WORD ADSR2 ※Fine Tune 再生周波数に対する倍率を示す。cents のような対数スケールではない。たとえば、0x7FFF で 0x7FFF/0x8000 倍(約+1オクターブ)、-0x8000で0x8000/0x10000倍(-1オクターブ)に再生周波数を変化させる。 この後ろにサンプルデータが配置される。
https://w.atwiki.jp/mtgwiki/pages/1261.html
SoloMoxen 古の0もしくは1マナである強力なマナ・アーティファクト7枚を合わせた俗称。 具体的には以下の通り。 Sol Ring Black Lotus Mox Pearl Mox Sapphire Mox Jet Mox Ruby Mox Emerald 読みは「ソロモクゼン」で、ソロモン(Solomon/古代イスラエル王。アラビア語ではスレイマン)の文字りである。 Moxも参照。 参考 カードの俗称 用語集
https://w.atwiki.jp/pocketplanes/pages/67.html
NAGASAKI [長崎] NAGASAKI は ASIA に位置する人口約 0.45 millionの都市。 NAGASAKI Airportは Class 1 の空港。 “On August 9,1945, Nagasaki was the target of the United States second atomic bomb attack.” 開港(coins) 3230coins 宣伝(coins) 13230coins レベル1 レベル2 レベル3 アップグレードコスト(coins) - 6460 9690 LAYOVERS 5 10 15 廃港時の払戻(coins) 1615 4845 9690
https://w.atwiki.jp/xenostulti/pages/6.html
更新履歴 @wikiのwikiモードでは #recent(数字) と入力することで、wikiのページ更新履歴を表示することができます。 詳しくはこちらをご覧ください。 =>http //atwiki.jp/guide/17_117_ja.html たとえば、#recent(20)と入力すると以下のように表示されます。 取得中です。
https://w.atwiki.jp/kuromugi/pages/52.html
XenClient -- ブログ検索 http //www29.atwiki.jp/kuromugi/pages/48.html XenClientメーカーサイト等 http //www.citrix.com/English/ps2/products/product.asp?contentID=2300325 http //media.intelcore2010.veplatform.com/content/2110_Citrix_Intel_DVCGoFaster_2010_final_cdh_edits_1265045626.pdf Wiki デスクトップ仮想化/Citrix XenClient デスクトップ仮想化/XenClientハードウェア互換情報 M/B Intel DQ57TM http //www.intel.com/products/desktop/motherboards/DQ57TM/DQ57TM-overview.htm http //www.intel.com/cd/channel/reseller/ijkk/jpn/products/desktop/bdb/dq57tm/feature/index.htm -- 日本語は誤記あり http //akiba-pc.watch.impress.co.jp/hotline/20100109/ni_cq57tm.html 価格.com -- DQ57TM 価格比較 http //kakaku.com/item/K0000080024/
https://w.atwiki.jp/sicpstudygroup/pages/85.html
naga Todo 4.50 Exercise 4.35 (define (an-integer-between low high) (require ( = low high)) (amb low (an-integer-between (+ low 1) high))) (define (a-pythagorean-triple-between low high) (let ((i (an-integer-between low high))) (let ((j (an-integer-between i high))) (let ((k (an-integer-between j high))) (require (= (+ (* i i) (* j j)) (* k k))) (display (list i j k)) (newline) (amb))))) ;;;;;Amb-Eval input ;;(a-pythagorean-triple-between 1 20) ;;;;; Starting a new problem ;;(3 4 5) ;;(5 12 13) ;;(6 8 10) ;;(8 15 17) ;;(9 12 15) ;;(12 16 20) ;;;;; There are no more values of ;;(a-pythagorean-triple-between 1 20) Exercise 4.36 ;; amb は search 戦略として depth first search を使用しているため、 ;; 単純に an-integer-between を an-integer-starting-from に置換え ;; たのでは、特定の変数の値が大きくなるだけとなり上手く行かない。 ;; ex3.69 では interleave を使って特定の stream だけが大きくなるの ;; を防いでいた。 (define (a-pythagorean-triple-from low) (let ((k (an-integer-starting-from low))) (let ((j (an-integer-between low k))) (let ((i (an-integer-between low j))) (require (= (+ (* i i) (* j j)) (* k k))) (list i j k))))) ;;(a-pythagorean-triple-from 20) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;(20 21 29) ;;;;;Amb-Eval input ;;try-again ;;;;;Amb-Eval value ;;(21 28 35) Exercise 4.37 ;; 確認する組合わせの数は n=high-low+1 とすると ;; ex4.35 では n*n*n ;; Ben版 では n*n ;; で Ben は正しいといえる。 ;; sqrt をとった値を整数かどうか判定するのはちょっと危ない気もするが、 ;; 現実的には問題がない? Exercise 4.38 (define (multiple-dwelling) (let ((baker (amb 1 2 3 4 5)) (cooper (amb 1 2 3 4 5)) (fletcher (amb 1 2 3 4 5)) (miller (amb 1 2 3 4 5)) (smith (amb 1 2 3 4 5))) (require (distinct? (list baker cooper fletcher miller smith))) (require (not (= baker 5))) (require (not (= cooper 1))) (require (not (= fletcher 5))) (require (not (= fletcher 1))) (require ( miller cooper)) ; (require (not (= (abs (- smith fletcher)) 1))) (require (not (= (abs (- fletcher cooper)) 1))) (display (list (list baker baker) (list cooper cooper) (list fletcher fletcher) (list miller miller) (list smith smith))) (newline) (amb))) ;;;;;Amb-Eval input ;;(multiple-dwelling) ;;;;; Starting a new problem ;;((baker 1) (cooper 2) (fletcher 4) (miller 3) (smith 5)) ;;((baker 1) (cooper 2) (fletcher 4) (miller 5) (smith 3)) ;;((baker 1) (cooper 4) (fletcher 2) (miller 5) (smith 3)) ;;((baker 3) (cooper 2) (fletcher 4) (miller 5) (smith 1)) ;;((baker 3) (cooper 4) (fletcher 2) (miller 5) (smith 1)) ;;;;; There are no more values of ;;(multiple-dwelling) Exercise 4.39 ;; distinct? の位置を変えて時間を計測。 ;; 「大きな変化はない」という結果になった。 (define (multiple-dwelling) (let ((baker (amb 1 2 3 4 5)) (cooper (amb 1 2 3 4 5)) (fletcher (amb 1 2 3 4 5)) (miller (amb 1 2 3 4 5)) (smith (amb 1 2 3 4 5))) (require ; (a) (distinct? (list baker cooper fletcher miller smith))) (require (not (= baker 5))) (require (not (= cooper 1))) (require (not (= fletcher 5))) (require (not (= fletcher 1))) (require ( miller cooper)) #;(require ; (b) (distinct? (list baker cooper fletcher miller smith))) (require (not (= (abs (- fletcher cooper)) 1))) #;(require ; (c) (distinct? (list baker cooper fletcher miller smith))) (display (list (list baker baker) (list cooper cooper) (list fletcher fletcher) (list miller miller) (list smith smith))) (newline) (amb))) ;;;;; Starting a new problem (a) ;;((baker 1) (cooper 2) (fletcher 4) (miller 3) (smith 5)) ;; ;;# real-time 4.229 ;;# user-time 4.2159999999999975 ;;# system-time 0.0 ;;;;; Starting a new problem (b) ;;((baker 1) (cooper 2) (fletcher 4) (miller 3) (smith 5)) ;; ;;# real-time 4.277 ;;# user-time 4.266 ;;# system-time 0.010000000000000009 ;;;;; Starting a new problem (c) ;;((baker 1) (cooper 2) (fletcher 4) (miller 3) (smith 5)) ;; ;;# real-time 4.254 ;;# user-time 4.246 ;;# system-time 0.0 Exercise 4.40 (define (multiple-dwelling) (let ((cooper (amb 2 3 4)) (miller (amb 3 4 5))) (require ( miller cooper)) (let ((fletcher (amb 2 3 4))) (require (not (= (abs (- fletcher cooper)) 1))) (let ((beker (amb 1 2 3 4)) (smith (amb 1 2 3 4 5))) (require (distinct? (list beker cooper fletcher miller smith))) (display (list (list beker beker) (list cooper cooper) (list fletcher fletcher) (list miller miller) (list smith smith))) (newline) (amb))))) ;;;;; Starting a new problem ;;((beker 1) (cooper 2) (fletcher 4) (miller 3) (smith 5)) ;; ;;# real-time 0.331 ;;# user-time 0.33099999999999996 ;;# system-time 0.0 ;;;;;Amb-Eval value ;;# undef (define (multiple-dwelling2) (let ((cooper (amb 1 2 3 4 5))) (require (not (= cooper 1))) (let ((miller (amb 1 2 3 4 5))) (require ( miller cooper)) (let ((fletcher (amb 1 2 3 4 5))) (require (not (= fletcher 5))) (require (not (= fletcher 1))) (require (not (= (abs (- fletcher cooper)) 1))) (let ((beker (amb 1 2 3 4 5))) (require (not (= beker 5))) (let ((smith (amb 1 2 3 4 5))) (require (distinct? (list beker cooper fletcher miller smith))) (display (list (list beker beker) (list cooper cooper) (list fletcher fletcher) (list miller miller) (list smith smith))) (newline) (amb))))))) ;;# real-time 0.39 ;;# user-time 0.3809999999999998 ;;# system-time 0.0 ;;;;;Amb-Eval value ;;# undef (define (multiple-dwelling3) (let ((cooper (amb 2 3 4)) (miller (amb 3 4 5)) (fletcher (amb 2 3 4)) (beker (amb 1 2 3 4)) (smith (amb 1 2 3 4 5))) (require (distinct? (list beker cooper fletcher miller smith))) (require ( miller cooper)) (require (not (= (abs (- fletcher cooper)) 1))) (display (list (list beker beker) (list cooper cooper) (list fletcher fletcher) (list miller miller) (list smith smith))) (newline) (amb))) ;;# real-time 0.798 ;;# user-time 0.8009999999999997 ;;# system-time 0.0 ;;;;;Amb-Eval value ;;# undef Exercise 4.41 ;; 2章でやった組合せのリストを得る premutations。 ;; 今見ても難しい。 (define (filter predicate sequence) (cond ((null? sequence) ()) ((predicate (car sequence)) (cons (car sequence) (filter predicate (cdr sequence)))) (else (filter predicate (cdr sequence))))) (define (accumulate op initial sequence) (if (null? sequence) initial (op (car sequence) (accumulate op initial (cdr sequence))))) (define (flatmap proc seq) (accumulate append () (map proc seq))) (define (permutations s) (if (null? s) (list ()) (flatmap (lambda (x) (map (lambda (p) (cons x p)) (permutations (remove x s)))) s))) (define (remove item sequence) (filter (lambda (x) (not (= x item))) sequence)) ;; (define (baker set) (list-ref set 0)) (define (cooper set) (list-ref set 1)) (define (fletcher set) (list-ref set 2)) (define (miller set) (list-ref set 3)) (define (smith set) (list-ref set 4)) (define sets (permutations (list 1 2 3 4 5))) (define (filter-p set) (and (not (= (baker set) 5)) (not (= (cooper set) 1)) (not (= (fletcher set) 5)) (not (= (fletcher set) 1)) ( (miller set) (cooper set)) ; (not (= (abs (- (smith set) (fletcher set))) 1)) (not (= (abs (- (fletcher set) (cooper set))) 1)))) (define (multiple-dwelling) (map (lambda (set) (display (list (list baker (baker set)) (list cooper (cooper set)) (list fletcher (fletcher set)) (list miller (miller set)) (list smith (smith set)))) (newline)) (filter filter-p sets))) ;;gosh (multiple-dwelling) ;;((baker 1) (cooper 2) (fletcher 4) (miller 3) (smith 5)) ;;((baker 1) (cooper 2) (fletcher 4) (miller 5) (smith 3)) ;;((baker 1) (cooper 4) (fletcher 2) (miller 5) (smith 3)) ;;((baker 3) (cooper 2) (fletcher 4) (miller 5) (smith 1)) ;;((baker 3) (cooper 4) (fletcher 2) (miller 5) (smith 1)) ;;(# undef # undef # undef # undef # undef ) Exercise 4.42 (define (require-Lair a b) (if a (require (not b)) (require b))) (define (Lairs) (let ((Betty (amb 1 2 3 4 5)) (Ethel (amb 1 2 3 4 5)) (Joan (amb 1 2 3 4 5)) (Kitty (amb 1 2 3 4 5)) (Mary (amb 1 2 3 4 5))) (require (distinct? (list Betty Ethel Joan Kitty Mary))) (require-Lair (= Kitty 2) (= Betty 3)) (require-Lair (= Ethel 1) (= Joan 2)) (require-Lair (= Joan 3) (= Ethel 5)) (require-Lair (= Kitty 2) (= Mary 4)) (require-Lair (= Mary 4) (= Betty 1)) (display (list (list Betty Betty) (list Ethel Ethel) (list Joan Joan) (list Kitty Kitty) (list Mary Mary)) ) (newline) (amb))) ;;;;;Amb-Eval input ;;(Lairs) ;;;;; Starting a new problem ;;((Betty 3) (Ethel 5) (Joan 2) (Kitty 1) (Mary 4)) ;;;;; There are no more values of ;;(Lairs) Exercise 4.43 ;; Lorna の父親は Colonel Downing (define (yacht) ;; father daughter yacht (let ((Moore (cons Ann Lorna)) (Downing (cons (amb Gabrielle Lorna Rosalind) Melissa)) (Hall (cons (amb Gabrielle Lorna) Rosalind)) (Hood (cons Melissa Gabrielle)) (Parker (cons (amb Gabrielle Lorna Rosalind) Ann))) (let ((alist (list Moore Hood Hall Downing Parker))) (require (distinct? (map car alist))) (require (eq? (cdr (assq Gabrielle alist)) (car Parker))) (display (list (list Moore Moore) (list Hood Hood) (list Hall Hall) (list Downing Downing) (list Parker Parker))) (newline)) (amb))) ;;;;; Starting a new problem ;;((Moore (Ann . Lorna)) (Hood (Melissa . Gabrielle)) (Hall (Gabrielle . Rosalind)) (Downing (Lorna . Melissa)) (Parker (Rosalind . Ann))) ;;;;; There are no more values of ;; Moore の娘が Ann という条件を外すと組合せは2通りとなる。 (define (yacht2) ;; father daughter yacht (let ((Moore (cons (amb Gabrielle Rosalind Ann) Lorna)) (Downing (cons (amb Gabrielle Lorna Rosalind Ann) Melissa)) (Hall (cons (amb Gabrielle Lorna Ann) Rosalind)) (Hood (cons Melissa Gabrielle)) (Parker (cons (amb Gabrielle Lorna Rosalind) Ann))) (let ((alist (list Moore Hood Hall Downing Parker))) (require (distinct? (map car alist))) (require (eq? (cdr (assq Gabrielle alist)) (car Parker))) (display (list (list Moore Moore) (list Hood Hood) (list Hall Hall) (list Downing Downing) (list Parker Parker))) (newline)) (amb))) ;;;;; Starting a new problem ;;((Moore (Gabrielle . Lorna)) (Hood (Melissa . Gabrielle)) (Hall (Ann . Rosalind)) (Downing (Rosalind . Melissa)) (Parker (Lorna . Ann))) ;;((Moore (Ann . Lorna)) (Hood (Melissa . Gabrielle)) (Hall (Gabrielle . Rosalind)) (Downing (Lorna . Melissa)) (Parker (Rosalind . Ann))) ;;;;; There are no more values of Exercise 4.44 ;; リスト要素の引算 (define (-list list-a list-b) (filter (lambda (x) (not (memq x list-b))) list-a)) ;; 追加されるカラムの斜め方向の安全性を確認する。 (define (attack? cols new-col) (define (iter cols n) (cond ((null? cols) #f) ((= (abs (- (car cols) new-col)) n) #t) (else (iter (cdr cols) (- n 1))))) (iter cols (length cols))) ;; 横方向の安全性をバックトラックを使わずに確認する版。 (define (8q-a) (define rows (list 1 2 3 4 5 6 7 8)) (define board ()) (let ((col1 (amb 1 2 3 4))) (set! board (list col1)) (let ((col2 (an-element-of (-list rows board)))) (require (not (attack? board col2))) (set! board (list col1 col2)) (let ((col3 (an-element-of (-list rows board)))) (require (not (attack? board col3))) (set! board (list col1 col2 col3)) (let ((col4 (an-element-of (-list rows board)))) (require (not (attack? board col4))) (set! board (list col1 col2 col3 col4)) (let ((col5 (an-element-of (-list rows board)))) (require (not (attack? board col5))) (set! board (list col1 col2 col3 col4 col5)) (let ((col6 (an-element-of (-list rows board)))) (require (not (attack? board col6))) (set! board (list col1 col2 col3 col4 col5 col6)) (let ((col7 (an-element-of (-list rows board)))) (require (not (attack? board col7))) (set! board (list col1 col2 col3 col4 col5 col6 col7)) (let ((col8 (an-element-of (-list rows board)))) (require (not (attack? board col8))) (set! board (list col1 col2 col3 col4 col5 col6 col7 col8)) (display board) (display " ") (display (map (lambda (x) (- 9 x)) board)) (newline) (amb) ))))))))) ;;# real-time 21.899 ;;# user-time 21.78200000000001 ;;# system-time 0.010000000000000009 ;;;;;Amb-Eval value ;;# undef ;; 横方向の安全性をバックトラックを逐次使って確認する版 (define (8q-b) (define board ()) (let ((col1 (amb 1 2 3 4))) (set! board (list col1)) (let ((col2 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (cons col2 board))) (require (not (attack? board col2))) (set! board (list col1 col2)) (let ((col3 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (cons col3 board))) (require (not (attack? board col3))) (set! board (list col1 col2 col3)) (let ((col4 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (cons col4 board))) (require (not (attack? board col4))) (set! board (list col1 col2 col3 col4)) (let ((col5 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (cons col5 board))) (require (not (attack? board col5))) (set! board (list col1 col2 col3 col4 col5)) (let ((col6 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (cons col6 board))) (require (not (attack? board col6))) (set! board (list col1 col2 col3 col4 col5 col6)) (let ((col7 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (cons col7 board))) (require (not (attack? board col7))) (set! board (list col1 col2 col3 col4 col5 col6 col7)) (let ((col8 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (cons col8 board))) (require (not (attack? board col8))) (set! board (list col1 col2 col3 col4 col5 col6 col7 col8)) (display board) (display " ") (display (map (lambda (x) (- 9 x)) board)) (newline) (amb) ))))))))) ;;# real-time 33.231 ;;# user-time 33.048 ;;# system-time 0.019999999999999907 ;;;;;Amb-Eval value ;;# undef ;; 横方向・斜め方向の安全性をまとめてバックトラックで確認する版 (define (8q-c) (define board ()) (let ((col1 (amb 1 2 3 4)) (col2 (amb 1 2 3 4 5 6 7 8)) (col3 (amb 1 2 3 4 5 6 7 8)) (col4 (amb 1 2 3 4 5 6 7 8)) (col5 (amb 1 2 3 4 5 6 7 8)) (col6 (amb 1 2 3 4 5 6 7 8)) (col7 (amb 1 2 3 4 5 6 7 8)) (col8 (amb 1 2 3 4 5 6 7 8))) (require (distinct? (list col1 col2 col3 col4 col5 col5 col7 col8))) (require (and (not (attack? (list col1) col2)) (not (attack? (list col1 col2) col3)) (not (attack? (list col1 col2 col3) col4)) (not (attack? (list col1 col2 col3 col4) col5)) (not (attack? (list col1 col2 col3 col4 col5) col6)) (not (attack? (list col1 col2 col3 col4 col5 col6) col7)) (not (attack? (list col1 col2 col3 col4 col5 col6 col7) col8)))) (set! board (list col1 col2 col3 col4 col5 col6 col7 col8)) (display board) (display " ") (display (map (lambda (x) (- 9 x)) board)) (newline) )) ;;;;;Amb-Eval input ;;(time (8q-c)) ;;; Starting a new problem ;;# real-time 15797.877 ;;# user-time 14527.22 ;;# system-time 0.5309999999999999 ;;;Amb-Eval value ;;# undef Exercise 4.45 ;; 文法用語が入ると見づらいので、元の単語だけ出力する。訳は??? (define (ex4.45) (let ((s (parse (the professor lectures to the student in the class with the cat)))) (display s)(newline) (amb))) ;;;Amb-Eval input (ex4.45) ;;; Starting a new problem ((the professor) (((lectures (to (the student))) (in (the class))) (with (the cat)))) ;猫と一緒にクラスで生徒に教える。 ((the professor) ((lectures (to (the student))) (in ((the class) (with (the cat)))))) ;猫のいるクラスで生徒に教える。 ((the professor) ((lectures (to ((the student) (in (the class))))) (with (the cat)))) ;猫と一緒にクラスの生徒に教える。 ((the professor) (lectures (to (((the student) (in (the class))) (with (the cat)))))) ;クラスの猫と一緒の生徒に教える。 ((the professor) (lectures (to ((the student) (in ((the class) (with (the cat)))))))) ;猫のいるクラスの生徒に教える。 ;;; There are no more values of (ex4.45) Exercise 4.46 ;;文法は、例えば ;;(define (parse-sentence) ;; (list sentence ;; (parse-noun-phrase) ;; (parse-verb-phrase))) ;;(define (parse-simple-noun-phrase) ;; (list simple-noun-phrase ;; (parse-word articles) ;; (parse-word nouns))) ;;のように句の並びで定義され句は語の並びで定義されている。 ;;一方、文の解析は ;;(define (parse-word word-list) ;; (require (not (null? *unparsed*))) ;; (require (memq (car *unparsed*) (cdr word-list))) ;; (let ((found-word (car *unparsed*))) ;; (set! *unparsed* (cdr *unparsed*)) ;; (list (car word-list) found-word))) ;;のように、文の最初から語を取り出し、それが文法により句、文を構成 ;;するかどうかを確認している。 ;;これは 先に読み出した語は、リスト中の先の式によって使われることを ;;前提とした方法となっている。 Exercise 4.47 ;; 文が parse できる間は動作する。parse し尽くした状態で try-again ;; を入力すると loop となる。これは parse-varb-phrase が amb と再帰 ;; に対し終了条件を持たない構造となっているから。 ;; 一方 may-be-extend は extend がある場合に限り再帰を行っている。 (define (parse-verb-phrase) (amb (parse-word verbs) (list ; verb=phrase (parse-verb-phrase) (parse-prepositional-phrase)))) ;;;;;Amb-Eval input ;;(parse (the cat eats)) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;((the cat) eats) ;;;;;Amb-Eval input ;;try-again -- loop ;;;;;Amb-Eval input ;;(parse (the cat eats in the class)) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;((the cat) (eats (in (the class)))) ;;;;;Amb-Eval input ;;try-again -- loop ;;;;;Amb-Eval input ;;(parse (the cat eats in the class with the student)) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;((the cat) (eats (in ((the class) (with (the student)))))) ;;;;;Amb-Eval input ;;try-again ;;;;;Amb-Eval value ;;((the cat) ((eats (in (the class))) (with (the student)))) ;;;;;Amb-Eval input ;;try-again -- loop ;; こちらはすぐに loop (define (parse-verb-phrase) (amb (list ; verb=phrase (parse-verb-phrase) (parse-prepositional-phrase)) (parse-word vervs))) ;;;;;Amb-Eval input ;;(parse (the cat eats)) ;;;;; Starting a new problem ;; -- loop Exercise 4.48 ;; 形容詞を扱えるように拡張。副詞と重文は省略。 ;; simple-noun-phrase = article noun ;; adjective-noun-phrase = article adjective + noun ;; simple/adjective-noun-phrase = simple-noun-phrase | adjective-noun-phrase ;; noun-phrase = simple/adjective-noun-phrase prepositional-phrase * (define adjectives (adjective small big black white)) (define (parse-simple/adjective-noun-phrase) (amb (list simple-noun-phrase (parse-word articles) (parse-word nouns)) (list adjective-noun-phrase (parse-word articles) (parse-adjectives) (parse-word nouns)))) (define (parse-adjectives) (define (iter adjs) (amb adjs (iter (append adjs (list (parse-word adjectives)))))) (iter (list (parse-word adjectives)))) (define (parse-noun-phrase) (define (maybe-extend noun-phrase) (amb noun-phrase (maybe-extend (list noun-phrase noun-phrase (parse-prepositional-phrase))))) (maybe-extend (parse-simple/adjective-noun-phrase))) ;;;;;Amb-Eval input ;;(parse (the cat eats)) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;(sentence (simple-noun-phrase (article the) (noun cat)) (verb eats)) ;;;;;Amb-Eval input ;;(parse (the small cat eats)) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;(sentence (adjective-noun-phrase (article the) ((adjective small)) (noun cat)) (verb eats)) ;;;;;Amb-Eval input ;;(parse (the small white cat eats)) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;(sentence (adjective-noun-phrase (article the) ((adjective small) (adjective white)) (noun cat)) (verb eats)) Exercise 4.49 ;; 解答になっているのかな? (define (parse-word word-list) #;(list (car word-list) (list-ref word-list (+ (random (- (length word-list) 1)) 1))) (list-ref word-list (+ (random (- (length word-list) 1)) 1)) ) (define c 1) (define (generate-6-sentences) (display (parse ())) (newline) (if ( = c 6) done (begin (permanent-set! c (+ c 1)) (amb)))) ;;;;;Amb-Eval input ;;(generate-6-sentences) ;;;;; Starting a new problem ;;((a student) sleeps) ;;((a student) (sleeps (with (the class)))) ;;((a student) ((sleeps (with (the class))) (with (the cat)))) ;;((a student) (((sleeps (with (the class))) (with (the cat))) (to (the cat)))) ;;((a student) ((((sleeps (with (the class))) (with (the cat))) (to (the cat))) (to (the cat)))) ;;((a student) (((((sleeps (with (the class))) (with (the cat))) (to (the cat))) (to (the cat))) (with (a class)))) ;;;;;Amb-Eval value ;;done Exercise 4.50 Exercise 4.51 ;; analyze に追加 ((passignment? exp) (analyze-passignment exp)) ;; (define (passignment? exp) (tagged-list? exp permanent-set!)) (define (analyze-passignment exp) (let ((var (assignment-variable exp)) (vproc (analyze (assignment-value exp)))) (lambda (env succeed fail) (vproc env (lambda (val fail2) (set-variable-value! var val env) (succeed ok fail2))) fail))) ;; set! なら出力される count は常に1 (define (ex4_51) (define count 0) (let ((x (an-element-of (a b c))) (y (an-element-of (a b c)))) (permanent-set! count (+ count 1)) ;;(set! count (+ count 1)) (require (not (eq? x y))) (display (list x y count)) (newline) (amb))) ;;;;;Amb-Eval input ;;(ex4_51) ;;;;; Starting a new problem ;;(a b 2) ;;(a c 3) ;;(b a 4) ;;(b c 6) ;;(c a 7) ;;(c b 8) ;;;;; There are no more values of ;;(ex4_51) Exercise 4.52 ;; analyze に追加 ((if-fail? exp) (analyze-if-fail exp)) ;; (define (if-fail? exp) (tagged-list? exp if-fail)) (define (if-fail-usual exp) (cadr exp)) (define (if-fail-fail exp) (caddr exp)) (define (analyze-if-fail exp) (let ((uproc (analyze (if-fail-usual exp))) (fproc (analyze (if-fail-fail exp)))) (lambda (env succeed fail) (uproc env (lambda (u-value fail2) (succeed u-value fail2)) (lambda () (fproc env succeed fail)))))) ; (define (ex4_52a) (if-fail (let ((x (an-element-of (1 3 5)))) (require (even? x)) x) all-odd)) (define (ex4_52b) (if-fail (let ((x (an-element-of (1 3 5 8)))) (require (even? x)) x) all-odd)) ;;;;;Amb-Eval input ;;(ex4_52a) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;all-odd ;;;;;Amb-Eval input ;;(ex4_52b) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;8 Exercise 4.53 (define (ex4_53) (let ((pairs ())) (if-fail (let ((p (prime-sum-pair (1 3 5 8) (20 35 110)))) (permanent-set! pairs (cons p pairs)) (amb)) pairs))) ;;;;;Amb-Eval input ;;(ex4_53) ;;;;; Starting a new problem ;;;;;Amb-Eval value ;;((8 35) (3 110) (3 20)) Exercise 4.54 ;; analyze に追加 ((sf-require? exp) (amb-analyze-sf-require exp)) ;; (define (sf-require? exp) (tagged-list? exp sf-require)) (define (require-predicate exp) (cadr exp)) (define (analyze-sf-require exp) (let ((pproc (analyze (require-predicate exp)))) (lambda (env succeed fail) (pproc env (lambda (pred-value fail2) (if (not pred-value) (fail2) (succeed ok fail2))) fail)))) ;; (define (prime-sum-pair-for-ex4_54 list1 list2) (define (an-element-of items) (sf-require (not (null? items))) (amb (car items) (an-element-of (cdr items)))) (let ((a (an-element-of list1)) (b (an-element-of list2))) (sf-require (prime? (+ a b))) (list a b))) (define (ex4_54a) (display (prime-sum-pair-for-ex4_54 (1 3 5 8) (20 35 110))) (newline) (amb)) (define (ex4_54b) (display (prime-sum-pair (1 3 5 8) (20 35 110))) (newline) (amb)) ;;;;;Amb-Eval input ;;(ex4_54a) ;;;;; Starting a new problem ;;(3 20) ;;(3 110) ;;(8 35) ;;;;; There are no more values of ;;(ex4_54a)
https://w.atwiki.jp/xenominerwiki/
XENOMINER まとめWiki JPN 初めに 現在編集中です。 おいおい、画像などを載せていく予定です。 とりあえず、botについてのまとめを載せてみました。 今後の編集デイジーから与えられるのテキストの翻訳などを載せていきます。 アイテムの説明などの翻訳などを載せていきます。 botについてまとめていきます。 攻略情報については、基本的なまとめが終わった後に取り掛かるつもりです。 ページの方針について まだ何も決めていません。 多分、一人ではまとめきれないので来てくれた皆さんの力を貸していただきたいと思います。 まずは、@wikiについて勉強します。 以上、見苦しい点が多々あると思いますが、どうかよろしくお願い致します。
https://w.atwiki.jp/marvelheroes/pages/168.html
ベノム ボスとしてのベノムは>こちら 攻撃は全て物理属性で、近接/遠隔どちらも行けるキャラクター。 全体的に便利なパワーに恵まれており、一見複雑なシステムに見えて意外と扱いやすいのも特徴。 使いながらシステムを把握していこう。 SPの代わりに固有ゲージIchorを消費して戦う。 (Ichor=イコル。意味は「霊液」「膿漿」「膿み汁」等) 減ったIchorゲージは特定の技の使用で回復するが、Ichor回復技は代償としてHealthを消費する。 このため体力を削りながら戦うキャラとなるが、DEFが低めな割には防御&回復面で優秀なパワーが多い。 コンセプトに反して持久力が高い。 体力を削らずに戦うビルドも存在し、そちらも実用的。 その体力回復能力から、現在 AXISレイド 突破用として一躍大人気キャラクターとなっている。 課金購入価格: 900G ES交換レート: 400個 装備可能インシグニア: Marvel Knights / Thunderbolts / S.H.I.E.L.D. コスチューム Classic ---G デフォコス。おなじみの黒ベノム Anti-Venom 950G 寄生体が反転した白ベノム Toxin 950G ベノムとは別のシンビオート寄生体 能力値 ステータス 初期値 最終値 Durability 4 6 Strength 4 6 Fighting 2 4 Speed 2 3 Energy 1 1 Intelligence 2 3 ヒーローシナジーLv30効果 Health +3% ヒーローシナジーLv50効果 Health50%以下の時、ダメージ+5% パワー ※各数値はレベル1、ランク1、装備なしの時のもの。(赤字)はLv60、ランク20、装備なしの時のもの。 ※Ic=Ichor(通常キャラのSPに該当)ゲージ消費量 Lethal Protecter 死に到る衣 名称 種別 説明 解禁Lv 属性 威力 速度 効果 消費 Hungering Strike BasicMelee 説明 1 Physical 39-59(7536-11304) 2.4 減少値の8%分のHPを回復 0 Predator s Web RangedArea 説明 1 Physical 49-74(9480-14220) 1.5 エリア上の敵に5秒間、移動・攻撃速度-32%エリア効果後、被害増10%状態 5秒間エリア持続時間 5秒Ic75回復 HP3% Tendril Lunge BasicMeleeMovement 説明 1 Physical 40-59 - 減少値の6%分のHPを回復 0 Dark Tendrils Melee 説明 2 Physical 42-63(8061-12091) 2.6 喪失HP1%につきダメージ+0.5%Ic50回復 HP2% Web Snapshot BasicRanged 説明 6 Physical 34-51 2.3 減少値の8%分のHPを回復 0 Web Barrage Ranged 説明 10 Physical 35-52 2.6 喪失HP1%につきダメージ+0.5%Ic50回復 HP2% Web Swing Movement 説明 12 - - - 移動速度 502.5 0 Come to Venom Melee 説明 18 Physical 165-247(31907-47860) CT4秒 Meleeダメージ基礎値+10% 8秒Ic150回復 HP6% Webswing Kick MeleeMovement 説明 37 Physical 69-104(13482-20223) - ノックダウン 1.2秒Ic100回復 HP4% Monstrosity 怪異 名称 種別 説明 解禁Lv 属性 威力 速度 効果 消費 Symbiote Surge RangedIchor 説明 1 Physical 45-67 2 被害増10%状態の敵に対し、+50%のダメージ Ic57.6 Infect MeleeAreaIchor 説明 4 Physical 28/0.5秒 - Passive効果攻撃力-10%発動中の敵を攻撃した際に5%分のHealthを回復Active効果継続ダメージ8秒間敵攻撃力-10% Ic120 Deadly Maw MeleeIchor 説明 8 Physical 79-118 1.5 攻撃力低下10%状態の敵に対し+50%ダメージ Ic72 Devouring Tendrils MeleeAreaIchor 説明 14 Physical 52-78 2 敵を倒した際Health15回復 Ic48 Wicked Visage Area 説明 22 Physical - CT15秒 状態異常回復状態異常耐性 2秒恐怖状態 1.5秒 0 Writhing Tendrils RangedAreaIchor 説明 26 Physical 46/0.5秒 CT4秒 ダメージ継続 2秒停止時間 2秒8秒間、Rangedダメージを+10% Ic144 Hungry Maw MeleeAreaIchor 説明 47 Physical 212-318 CT8秒 ノックダウン 2秒Health 51回復 Ic240 Symbiosis 共生体 名称 種別 説明 解禁Lv 属性 威力 速度 効果 消費 We Are Indestructible passive 説明 16 - - - Symbiotic Spikes使用時にHealth???回復ダメージ低減 20%最大Health +???Health回復??/秒倒された際、Healthを100%回復して復活(CT5分)Healthが50%以下になった際、毎秒Health??回復 - We Are Unstoppable passive 説明 16 属性 威力 速度 効果 消費 We Are Powerful passive 説明 24 属性 威力 速度 効果 消費 We Are Cunning passive 説明 24 属性 威力 速度 効果 消費 We Are Lethal passive 説明 28 属性 威力 速度 効果 消費 We Are Legion passive 説明 28 属性 威力 速度 効果 消費 Symbiotic Spikes SignatureMeleeArea 説明 30 Physical 708-1062 CT25秒 Passiveから各種特殊効果を受ける 0 Parasitic Tendrils Area 説明 42 Physical 69/0.5秒 CT10秒 吸収対象 最大3体命中時、Ic75回復命中時、Health41回復発動中ダメージ低減50%継続時間 最大3秒 0 Ultimate Power 52Lvで解禁される必殺技 名称 種別 説明 解禁Lv 属性 威力 速度 効果 消費SP We Are Venom! MeleeArea 説明 52 Physical 481-722(1HIT毎) CT10分 吸収対象 最大9体ダメージ値+11クリティカル&ブルータル値+10ダメージ低減30%毎秒Health25回復効果時間 20秒 0 パワー個別解説 Lethal Protecter Hungering Strike 近接Basic。HP回復効果がある。 IchorやHPは他のパワーで補えるので、ビルドが完成すれば必要なくなる。 Predator s Web 移動&攻撃速度低下+敵に被ダメ10%UPデバフを掛ける範囲攻撃。 Ichor回復効果もあるが、体力を削って撃つので使いすぎに注意。 速度低下効果は地面に残るが、範囲DoTがあるわけではなく、ダメージは発射時のみ。 ブルネラを掛けるために1振りするだけでも十分。 Tendril Lunge ダッシュ技。消費0なのでMAP移動能力はかなり優秀。突進HITでのHP回復効果もある。 Dark Tendrils 自分の体力が少なくなれば少なくなるほど威力が上昇する近接攻撃。 Web Snapshot 射撃Basic。HP回復効果がある。 IchorやHPは他のパワーで補えるので、ビルドが完成すれば必要なくなる。 Web Barrage 連射射撃だが、発射速度はイマイチ。こちらもTendril Lungeと同じで、自分の体力が低くなるにつれて威力が上昇する。 Web Swing 空中移動系Movement。スパイダーマンがよくやってるアレ。1振りでもあるとなにかと便利。 Come to Venom スキル使用後8秒間Meleeダメージ10%UPバフもかかるため、現状どのビルドでもMAX振り推奨。 直線上の敵を自分の方へ引き寄せると共にダメージを与える。スキルの使用時に150Ichorを回復できるため、Ichorが枯渇しやすいビルドでは生命線となる。 Webswing Kick 蜘蛛糸でスイング移動しながらキックし、進路上とその周囲一定範囲の敵をノックダウン。 Monstrosity Symbiote Surge Ichorの波を飛ばす直線状の範囲技。被ダメ10%UP状態の敵に対して威力が1.5倍になるので、採用の際はPredator s Webとセット運用が望ましい。 Infect 敵にDoTダメージと攻撃力低下のデバフを付与する自分を中心とした範囲攻撃。攻撃力低下状態の敵を攻撃するとHP回復効果を得られるPassive効果もある。 DoTの威力自体も非常に強力なため、対BOSS戦などでは常にこのDoTを維持していきたい。 Deadly Maw 速度の遅い近接攻撃。攻撃力低下状態の敵に対して威力が1,5倍のため、上記のInfectとセットで使っていきたい。 左クリックに入れたいメイン技。Ver1.48現在、このパワーを主力とするビルドが人気。 Devouring Tendrils キーを押している間範囲内の敵を攻撃し続ける。倒した敵一体につきHPを回復する追加効果がある。 Wicked Visage 状態異常解除技。特定のボスとの戦いで有用。1振っておこう。 Writhing Tendrils DoTダメージを付与する3WAY弾を放つ。DoTの持続時間はデフォルトで2秒と短いが、威力はかなり高めに設定されているため出来る限り切らさず維持していきたい。 使用後8秒間遠距離ダメージ10%UPバフがつくのも優秀。 Hungry Maw 指定地点に飛び込んでいって範囲ダメージを与えるスキル。範囲もそこそこ広く威力も高い。 雑魚殲滅に便利な快適パワー。レベリング時にも有用。追加効果で体力が回復するのも地味にうれしい。 Symbiosis Parasitic Tendrils 周囲の敵に寄生体を刺し、HPとIchorを回復する。刺す対象は3体(ランダム)と少なく、範囲技としては使い辛い。 キー押しっぱなしで約三秒間持続可能。継続発動中は棒立ちになるが、その間ダメージ半減効果も付く。 守りを固めながら体力&Ichor回復と、激戦区でこそ頼れるパワー。 出かかりや使用中にノックやスタンを喰らうと発動に失敗するので、回復してるつもりが棒立ちだった、とならないよう注意。 ダメージ低減効果は体感ではその数値以上に頼もしく、十分なHP・DEFがあれば赤スルトの即死剣攻撃も耐え切れる。 We Are Indestructible / We Are Unstoppable(どちらかを選択して習得) 二つのパッシブに共通している部分は20%のダメージ軽減効果。その上でお互い異なる追加効果を持つ。 We Are Indestructible HPリジェネ系のパッシブ。HPリジェネ量が増加し、HPが50%を切った時点で更に増加する。そしてシグネチャースキルを使用した際に一定量のHPを回復する。クールタイムが設定されているものの、自分が死亡した際にHP全快で蘇生する効果もGood。 We Are Unstoppable 防御力UP系のパッシブ。防御値が増加し、HPが50%を切った時点で更に20%のダメージ軽減が入る。加えてシグネチャースキルを使った後の5秒間受けるダメージを5割カットする。そしてこちらは自分が死亡するほどのダメージを受けた後の10秒間、どんなにダメージを受けてもHPが1を切らないという効果を持つ。そのため、HPを減らすことに意味があるスキルとのシナジーはこちらのほうが高い。 We Are Powerful / We Are Cunning(どちらかを選択して習得) 二つのパッシブに共通している部分はクリティカル率UPの効果。取るパッシブによって使えるオーラが変わり、シグネチャースキルへの追加効果にも大きな差がある。 We Are Powerful オーラは防御値とHPが増加するToughnessオーラ。そしてメレースキルを使用した後の10秒間、クリティカル率UPの効果が2倍になる。加えて敵から受けるメレーダメージを一定割合軽減し、敵を攻撃した際に25%の確率で追加ダメージを発生させる効果も合わせ持つ。シグネチャースキルへの追加効果は、スキルの効果範囲が35%UPするというもの。これによりほぼ画面いっぱいの敵を引き寄せることが可能になりFarmingにおいてとても便利。 We Are Cunning オーラは攻撃値と攻撃 移動速度が増加するPowerオーラ。そして遠距離スキルを使用した後のの10秒間、クリティカル率UPの効果が2倍になる。加えて敵から受ける遠距離ダメージを一定確率で軽減し、敵を攻撃した際に25%の確率でDoTダメージを付与する効果も合わせ持つ。シグネチャースキルへの追加効果は、スキルを使用した後の3秒間透明状態になるというもの。 We Are Lethal / We Are Legion(どちらかを選択して習得) 二つのパッシブに共通している部分は攻撃値UPの効果。この二つのパッシブはそれぞれ全然違う効果を持つ。・・・が、現状明らかにWe Are Lethalの方が強力なため、We Are Legionを選択することはほぼ無いだろう。 We Are Lethal Ichorパワーのダメージが上昇し、スキル使用に必要なIchorコストが減少する。最大Ichorも増える。加えてシグネチャーを使用した際、即座にIchorを300回復するという効果も相まってコスト管理が楽になるパッシブ。 We Are Legion Ichorパワーを使用した際に一定確率で小さな自分の分身を召喚するパッシブ。シグネチャースキルを発動した際は確定で2体召喚する。しかし分身自体の攻撃力もそこまで高いわけではなく、上述の通りWe Are Lethalが強力すぎるためにこちらのパッシブを選択する意味は限りなく薄い。 Symbiotic Spikes シグネチャースキル。周囲広範囲の敵を引き寄せてからの大ダメージ。CT25秒は優秀。 各二択passiveから様々な恩恵を受けられるので、各パワーの効果をチェックしておこう。 ULTIMATE We Are Venom! 発動から一定時間、周囲の敵を自動で攻撃し続けるアルティメットパワー。 ULT発動中に他のスキルも通常通り使えるため、単純な火力UPとして使う形になる。 継続ダメージのため瞬発力こそないが、効果時間が比較的長いのに加え自身の攻撃力などが満遍なく上がるバフもつくため、総合的な火力は中々のもの。 ダメージ軽減が30%もついており、元々の硬さも相まってULT発動中は結構無理が効く。 コメント 最序盤のHPリジェネや最大Ichorの低い時期さえ乗り越えたら火力と耐久力を両立した強キャラよね -- (名無しさん) 2015-02-24 11 52 05 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/xenosagadb/pages/14.html
ゼノサーガ パイドパイパー あらすじ T.C.4667、非武装宙域にある惑星アブラクサスで、星団連邦と移民船団との関係を改善するための会談が開かれていた。そして、この仮想空間内で開かれた会談の場で親善大使、及び外交官らが拘束されるという事件が発生する。 星団連邦警察第1875特殊作戦司令部は、ジャン・ザウアーを隊長とした特捜班を組織。惑星アブラクサスへと派遣した。 この事件の容疑者として名前が上がったのは”ヴォイジャー”。そのコードネーム意外、一切の素性が不明の存在であり、 女性や子供を狙った残虐な犯行を次々と繰り返す殺人鬼だった。 事件現場に到着したジャンは、仮想空間へのダイブを実行し、親善大使が拘束されている現場へ急行する。 対し達が拘束されているポイント付近でマクロファージの脅威にさらされる特捜班。その攻撃により、 仲間の一人であるエーリッヒ・ウェーバーがデリートされてしまう。 仮想空間内でのデリート。これは他でもない通常空間での死を意味していた。 多大な犠牲を払いつつ、親善大使達の元のに辿り着いたジャン達。だが、彼らが目にしたものはセルフでリートを実行し、 自らの命を断っていく幼い子供たちの姿であった。 事件後、エーリッヒが奇跡的に組成したことに喜ぶ特捜班。しかし、ジャン達の元を訪れた医師”シャロン・ロサス”は、 エーリッヒの蘇生が通常ではありえないことを告げるのだった。 親善大使拘束事件の解決の糸口さえも見つからない状況で、新たな大量殺人が発生する。 事件のターゲットはデザイナーズチャイルド―――通称”ザルヴァートルの子供たち”。 遺伝子調整による将来の政府要人育成を目的とした、育児プラントの胎児達だった。 容疑者は前回同様ヴォイジャーと推測されたが、特捜班はその確証を得ることが出来なかった。 この育児プラントでの事件後まもなく、トーレ財団主催による、移民船団を招いた星団連邦のパーティーがU.M.N.内で開催されることとなる。 しかも今回のパーティーは、移民船団の代表である教皇ユリウスも招待されるという大規模なものであった。 ヴォイジャーによるテロを警戒し、特捜班のメンバーが警備に当たる中、 トーレ財団の会長イレーネ・トーレが突如発作を起こし、謎の言葉を口走り倒れてしまう。 この事象をヴォイジャーによるものであると確信した特捜班は、トラップに犯人を追い込むべく行動を開始する。 ジャン達特捜班は容疑者のクラウスを追い詰めるが、彼もまたジャン達の目の前で自ら命をたってしまう。 ジャンは事件の情報を得るため、シャロンの反対を押し切り、クラウスの遺体の脳へのダイブを敢行するのだった。 クラウスの記憶を垣間見るジャン達は、彼が”脳内麻薬プログラム”と呼ばれるものを集めていた事実を知る。 そしてそれは”ある人物に会う”準備のためであった。 ジャンは調査結果を効くために再びシャロン宅を訪れる。押収された脳内麻薬が、 脳の特定部位の働きを活性化させる作用があることをシャロンから告げられるジャン。 さらにシャロンは、亡くなった親善大使たちと、事件のあった育児プラントに提供されていた遺伝子の提供者が、 全て生粋のアブラクサス人であった事を告げる。 アブラクサスの人間を始めとする移民船団の血を受け継いだ人間は、生まれながらにしてその部位が発達している。 そして、自らも移民船団の血を受け継ぐシャロンは、アブラクサスの人間が”ゾハルの民”と呼ばれていたことをジャンに語るのだった。 多くの苦闘の果てに、ついにヴォイジャーの正体を突き止める特捜班。だがその人物はジャン達が追い続けていた殺人鬼の姿ではなく、 彼らが予想もしていなかった人物だった。 ヴォイジャーは、ゾハルの力を持ってしてウ・ドゥとの契約を果たすためには、大量の脳内麻薬を採取することが必要だった、と語った。 彼の発する言葉から多数のアブラクサスの民が集う巡礼会議こそが次なるターゲットであるとジャンは確信する。 そして、その巡礼会議が行われている大聖堂にはシャロンやホアキンも参列していた。 参列者の祈りに呼応するかのように、光を放ち始めるゾハル。空間がクリスタル状の物質へと変化し、参列者達が次々と姿を消していく。 覚醒を始めたゾハルの前でヴォイジャーと対峙するジャン。 ヴォイジャーはウ・ドゥとの契約を果たすため、最期のターゲット、シャロンとホアキンの命を絶つ。 ヴォイジャーの犯行を初めて目の当たりにするじゃん。その眼前に横たわるシャロンとホアキン。 失意が支配する世界で、二人の戦いはついに最期の局面を迎える。 だが、テスタメントと化したヴォイジャーに対し、為す術もなくやられていくジャン。 彼はヴォイジャーの医師に逆らう唯一の手段として、自らの手でその生命を断つのだった。 Xenosaga episodeⅢ データベースより
https://w.atwiki.jp/kattenisrc/pages/670.html
863 :名無しさん(ザコ):2012/09/17(月) 02 36 45 ID 6iM8w5js0 プロメテウス1・インベル(アイドルマスターXENOGLOSSIA) ストーカーロボ。EDの春香がインベルの妄想って…… 格闘が2000、初手から使える2300貫L3や必殺技の2800貫L3と中盤までかなり高火力な、 火力偏重型のユニット。ただし、武装は射程1のみ。 また、能力だけ見ると性能はかなり低く見えるものの、接属性以外の近接攻撃を500+α、 射撃を1000+α軽減するレイヤーフィールドに、接属性以外を迎撃Lvで3000まで阻止する トレークハイト・ブレッヒャーと、防御性能はそれほど悪くない。 しかしEN回復Lv1は持つが、攻撃は燃費が悪く、フィールドはEN10、阻止はEN30と かなり重たいので、雑魚に囲まれるとあっという間にENが枯渇してしまう。 そのため、基本的にザコ戦は避けて後方で待機しつつ、厄介な敵やボスに大火力を 叩きつけるよう運用しよう。 サブパイロットとしても加速必中覚醒と運用にぴったり合ったのものを覚えてくれるが、 他のSPはメインパイロット任せになるので、ボス向けSPを豊富に覚える春香と 最も相性がいいという相思相愛の関係になる。 プロメテウス1・インベル(後期型)(アイドルマスターXENOGLOSSIA) 基礎能力も少し向上しているが、なによりも火力の上昇が著しい後期型。 追加されたファウストシュラークは最大で威力3575の射程4M全貫L3という 月光蝶すら超える破壊力を持ったマップ兵器。 さらに春香なら夢痛撃で三倍火力が可能、夢見極めで乱戦でも気にせず撃てて、 自前の幸運か勇気で稼ぎでもでき、インベルの加速覚醒で位置取りも容易と、 消費の激しい一発芸だが一発に限ればGSC最強のマップ屋となる。 それ以外も正統進化しているが、ファウストシュラークが突出しているので 使用するならそちら中心に使っていくのがいいだろう。 といっても基本的な運用は無印と同じだが、気合を春香に使わせる余裕がないので できれば激励もちと合わせて運用したい。つまりいおりんマジ天使。