web拍手への返信 その2

>突然ですが、道具変更で出した「ドラゴンキラー」と「トドの盾」が何の効果もないものでした。どうすれば本来の効果を付加させることができるのでしょうか?ついこの間実機の方でフェイの最終問題をクリアしたばかりで、エミュを使い始めたのはほんの2、3日前のことでして、まだまだわからないことが山積みなのです。どうか僕みたいなアマチュアにもよくわかるように詳しく教えて下さい。よろしくお願いします。

武器・防具の特殊効果を出すには、道具の種類を変更するだけでなく、その特殊効果に対応したビットも立てなければなりません。
詳しくは以下のページを参照して下さい。
http://oyasen20.tripod.com/edit_item.html


>バグ報告です。
>巻物の洞窟パッチを当てると、
>こばみ谷の4Fに来ると、BGM(水の流れる音)が流れなくなりました。
>エミュは、uosneswです。

残念ながら当方では同様の現象を確認することができませんでした。
エミュレータが悪いと、BGMの一部のパートが聞こえなくなったりしますが、そうでないなら、BGMには手を付けていない筈なので、原因は分かりません。


>洞窟マムルのアイテムドロップ率が100%と書いてありますが、1/2くらいの確率でしか落としません…。

やはりそうでしたか。
あの数値がどう処理されるかを追いかけてみる必要がありそうですね。
[PR]
# by oyasen | 2009-08-08 15:40 | web拍手への返信

巻物の洞窟 プレイ動画

巻物の洞窟のプレイ動画をアップして下さった方がいました。誠に嬉しい限りです。

http://www.nicovideo.jp/watch/sm7581774
http://www.nicovideo.jp/watch/sm7581994
http://www.nicovideo.jp/watch/sm7582180
http://www.nicovideo.jp/watch/sm7582359

まだ全部見ていませんが、よくジェノサイドなしでクリアできましたね。
ジェノサイドとやまびこが出るか出ないかで難易度が大きく変わってしまいます。どちらも店限定です。
[PR]
# by oyasen | 2009-07-28 20:36 | 日記

古印体のフォーマット その2

前回の話の続きをします。
ブロックのタイプには4種類あると言いましたが、それぞれのタイプのフォーマットは以下の通りです。

・タイプ0(非圧縮,8バイト)
最初のバイトがそのブロックの1行目で、最後のバイトが8行目に対応します。
そして、各々のバイトのbit7が1列目で、bit0が8列目に対応します。
要するに圧縮しない、そのまんまのタイプです。

・タイプ1(全て黒,0バイト)
そのブロックのドットは全て黒になります。

・タイプ2(省略行は黒,1+nバイト)
最初のバイトで省略する行を表し、bit0が1行目、bit7が8行目に対応します。
ある行に対応するビットが1のときその行は省略せず、0のときその行は省略します。省略された行は8ドット全てが黒になります。
残りのnバイトに、省略しない行を続けて書きます。各々のバイトのbit7が1列目で、bit0が8列目です。

・タイプ3(省略行は上の行と同じ,1+nバイト)
タイプ2と同じような仕組みですが、省略された行は上の行と同じ描画をする所が違います。
続けてn個の行が省略された場合も、上の省略されていない行と同じ描画をn回(合計n+1回)繰り返します。
但し、1~n行目が省略行だった場合、それらは全て黒になります。

ということで、古印体のフォーマットの解説はこれで終了です。こんな説明でお分かり頂けますでしょうか?もっと分かりやすい説明ができれば良いのですが。
練習問題を1つ出しておきます。以下のデータがカタカナの「マ」であることを確認してみましょう。全てのタイプが使われています。

02 BB D8 63 FF 7E 38 3E 10 7B F0 E0 80 5E E0 F0
38 1C 1E E0 02 03 01 1A F0 01 03 8C FC 1F 3E 3C
78 E0 C0 F8 7C 1E 0F 0F 07 03 01 57 98 80 C0 80
[PR]
# by oyasen | 2009-06-17 20:04 | 改造・解析

古印体のフォーマット その1

階段を降りた直後や、中断した所から再開した時に「99 掛軸裏の洞窟」等と表示されますね。今回はあのフォントの話です。
このフォントは「古印体」と呼ぶことを最近知りました。印鑑に使われる書体だそうですが、少し怖いイメージがあるからか、その手の作品にしばしば登場します(どちらが先かは分かりませんが)。言うまでもなく、かまいたちの夜のタイトル画面のフォントもこれです。
いつものようにJavaScriptで文字を表示していると、いきなり「怨」の文字が登場してびっくりしたのは秘密です。これはROMハッカーに対するCHUNSOFTからの怨念なのかと一瞬思いましたが、http://oyasen20.tripod.com/other_romhacking.htmlから分かるように、当初は「怨念坂」という地形を入れる予定だった訳ですね。
因みに見れば分かりますが、巻物の洞窟の「巻物」のフォントは適当に描いたもので、古印体ではありません。とても暇な時があれば描き直すかも知れません。

さて、前置きが長くなりましたがこのフォント、簡単な圧縮(と言う程でもないが)がされているのでYY-CHR等では編集できません。地道にバイナリエディタで編集しましょう。
1文字は24*24ドットですが、それは8*8ドットのブロックに分かれています。ブロックを左から右へ並べ、右端まで来ると下の行へ降りて左から右へ並べ……を繰り返して1つの文字を描画します。
更にブロックのデータにはタイプ0~タイプ3の4つのタイプがあります。これはブロック毎に自由に設定でき、そのデータを圧縮するか否か、圧縮する場合はその方法を決定します。

1つの文字のフォーマットは以下の通りです。

・横幅(1バイト)
・ブロック1~4のタイプ(1バイト)
・ブロック1(0~8バイト)
・ブロック2(0~8バイト)
・ブロック3(0~8バイト)
・ブロック4(0~8バイト)
・ブロック5~8のタイプ(1バイト)
・ブロック5(0~8バイト)
・ブロック6(0~8バイト)
・ブロック7(0~8バイト)
・ブロック8(0~8バイト)
……

但し、
・(横幅)=(実際の横幅/8)-1
・(ブロックn~n+3のタイプ)=(ブロックnのタイプ)+04h*(ブロックn+1のタイプ)+10h*(ブロックn+2のタイプ)+40h*(ブロックn+3のタイプ)

24*24ドットの文字なら、横幅の値は24/8-1=2、すなわち02hになります。

タイプの解説は次回に行います。
[PR]
# by oyasen | 2009-06-09 19:48 | 改造・解析

(疑似)乱数について

http://oyasen20.tripod.com/random.html
上のページでも解説している本ゲームの乱数ですが、周期は丁度2^31であることが分かりました。
残念ながら当方にはまともなプログラムの開発環境がないので、拙い方法ですが、ひたすら乱数生成をするJavaScriptを埋め込んだページを、PCを使っている間ずっと開いておく、ということを何日か続けて確認しました。
従って、乱数の初期値の組み合わせが2^31のループに含まれるようにセットされるならば、生成されるダンジョンは高々2^31通りということになります。
もし非常に高速なコンピュータがあって、ダンジョンの背景やシレンの初期位置から乱数を逆算できれば、そこからそのフロアの構造や未来が予測できるかも知れません。
2^31のループに含まれない乱数の組み合わせが与えられると、どこかで2^31のループに合流するか、それともより小さいループを回り続けるか、ということになるのでしょうが、勿論私には詳しくは分かりません。

http://www42.atwiki.jp/tsukikage_gb/pages/18.html
こんなページを見つけました。GB版でも乱数生成アルゴリズムは同じようです。トルネコでも多分同じでしょう。
[PR]
# by oyasen | 2009-06-04 21:06 | 改造・解析