Xpicw 用ワイプライブラリ 製作者:言問 いるる 138号に載せて頂いたのですが、 釈明が必要な手落ちがたくさんあったので釈 明させていただきます。 釈明1 ファイルの管理が不十分だったようです。wl1.wlとwl1_b.wlは同じもの でした。つまりQ2の質問はほとんど無意味だったのです(なのにノイズの出方が違 うのはなぜだろう?)。別の要因でノイズの出方が違ったのを勘違いしたようです。 と、いうわけで本当の直し方をご存じの方、教えて下さい。 今回、wl2.wlを送り直しましたが、個別に試すとノイズの出方はQ2で書いた通 りだったので一応そのままです。 釈明2 std_ask_vdisp:というラベルの直後の'*省略可'で始まる行は全てのソー スで省略不可でした。今回送ったwl2.sとwl9.sは大丈夫のはずです。ワイプライ ブラリに処理が移った直後が少しだけ違います。前回送ったモノも今回のモノと 同じ様になっているはずだったんですけど、ラムディスクからFDに保存しない まま、暴走→再起動した記憶が星の数ほどあったりしますから…。 釈明3 wl2.sのパレット書き込み部に間違いがありました。 釈明4 wl1.sとwl2.sはIOCS _CRTCRASを使用している事を書き忘れていました。 釈明が不必要な手落ちもあったので一応釈明させていただきます。 ドラクエIIIのワイプは一部ループ展開しています。なのに照れたフリを忘れて いました(村田氏のグラフィックス編46ページ参照)。でも照れたフリってな にをどうすれば…? wl2.wl モザイクです。ワイプ中Timer-C/Dを停止します。IOCS _CRTCRASを使用してい ます。BG画面を使用するので縦横比1:1の画面モードの場合は何もしないで終了し ます。 wl1.sはスプライトエリアにバイトアクセスしていた部分に修正が入っていたの で同じ様に修正しました(Mitsukyさん余計な手間かけてすみませんでした)。 パレット書き込み部の間違いを直しました。送り直しのついでにモザイクデー タ作製部を手直しして、待時間を減らしたかったのですが不十分です。XVIで1.94 秒ですから、まだ待つには長いですね。それでも、138号のwl2.sに時間計測部分 を追加してみたら、待時間は2.67秒だったので3割程減っています(138号で3〜4 秒待つと書いたのはpicファイルの展開など他の処理があることに気付かなかった 為)。 因みにaddx命令を大量に使用しました。なんとなくMPU68000の開発者には見ら れたくない気がします。 最高速は0〜9の間で任意です。例えばアセンブル時に has -sS=9 wl2.s としたら指定できる最高速は9になります。最高速のワイプの時間が短くなるので はなく、最低速のワイプが遅くなります。未指定時は最高速3。 GraySaver用モジュールを作りながら「疑似命令って面白そう」と思っていたら こんな風になってしまいました。ありがちですよね。 余談ですが、アセンブル時に'TIME'というシンボルを付けて作製した実行ファ イルはモザイクデータ作製部のみ実行して所要時間を表示します(±0.01秒位の誤 差はあるはず)。 ●=非対応メニューです wl9.wl wl1.wlのテキスト版です。ワイプ中Timer-C/Dを停止します。IOCS _CRTCRASを 使用しています。BG画面を使用しないので縦横比1:1の画面モードでも実行出来ま す。 せっかくデバグの方法を教えていただいたので活用したかったのですが、「静 的にリンク」という言葉の壁にぶつかりました。「実行ファイルのサブルーチン という形」という文章から、呼びだし側のふりをしてサブルーチンコールしてみ ました。多分、間違ってないと思います。その具体例もワイプライブラリの仕様 書に書いてあったし(技量があれば、あれで気付くものなのかもしれない)。 細かいタイミング調整がうまくいっていない気がしたので、タイミング調整用 のフラグを泥縄式にたくさん付け足しました。やはり割り込みって難しいです。 後から追加した部分により、それ以前からあったフラグを削れる部分もありそう ですが確かめてません。割り込みに詳しい方は削れる部分を探してみた方が良い と思います。 最高速は0〜9の間で任意です。例えばアセンブル時に has -sS=9 wl9.s としたら指定できる最高速は9になります。wl2.wlと逆に、最高速がそれだけ早く なります(ワイプ時に指定した速度+1ドット分だけ、右にスクロールする)。未 指定時は最高速3。 書き忘れるところでしたが、アセンブル時にTYPE=2というシンボルを付けると picファイル上の透明を無視します。 本当はwl1.wlを作っていた時からテキストを使って同じことが出来ると思って いたのですが、テキストパレットを操作するとデバグが困難と思ったので敬遠し ていました。 なのに、作った理由。 1:GraySaver用モジュールを作っているうちにテキスト操作に抵抗がなくなってき たから。 2:私が使っているエディタ(ED.R ver.0.99XI)は終了時にテキストパレットを正常 状態に戻してくれることがわかったから。テキストパレットを戻す目的でも使用 していました(実行後即終了して元通り)。 ●=非対応メニューです その他 Xpicwはテキスト画面をクリアしている様ですが(私には、とても全部は追えな いので自信無し)、ワイプライブラリ仕様書には「操作したハードウェアは可能な 限り元に戻して下さい」と書かれているので、wl9.wlでは一応テキスト画面を保 存しています。アセンブル時に'TEXTSAVEOFF'というシンボルを付けるとテキスト を保存しないで終了時にテキストをクリアしますが、私の独断ですので避けた方 が無難です(ほとんどテストしていないし)。テキスト画面をクリアして終了し ても構わないならば保存の為のメモリが256キロバイト不要になるのですが、読者 の皆様はどう思いますか? ちょっといい話? 私にとっては「ちょっといい」程度ではありません。 前回の投稿の頃は割り込み処理使用中にバスエラーやアドレスエラーが起きて しまったら、生きたままの割り込みが恐いので、その都度再起動していました(私 の環境はFD起動でおよそ80秒掛かります…)。 そんなある日。計測技研の2枚目のCD-ROMに強制終了ドライバというものを発見。 作者の方はDOSに戻れないゲームを強制終了する為に作ったそうです。これが非常 に便利なんです。この日以降、頻繁な再起動から解放されました。もっと早く気 付きたかったです。 追記 ・・ いつ再び手直しが必要になるか分からないので(注釈の形で)古いルーチンも残って ますが気にしないで下さい。 余談 投稿のドキュメントは編集部の方が読みやすく整形してくれるものと思い込ん でました。それで恥ずかしい思いをしたので皆さんは気をつけて下さい。質問の 為の実行ファイルも掲載時には削除されるものと思ってました。不具合の実例を 示した方が答えやすいだろうと思って入れておいたのですが、結果的にディスク 容量を浪費しただけでした。削除するように明記しておけば良かったと思ってま す。あと少しですが同じ事を繰り返す人がいないことを願っています。 自己書き替えという技術があります。関心はあっても、ちょっと恐くて使えな いのですが、疑似命令でアセンブル時にジャンプテーブルを作ってもらったら、 気分だけでも味わえた気がします(無駄に神経をすり減らしただけという気もしま す)。あ、wl9.sの方です。 それにしてもソースファイル、実行ファイル、ドキュメントファイルが全てヘッ ポコだった投稿は過去に例が無いかもしれない。この分では、もしかしたら…。 と、いうわけで無保証のフリーウェアです。いかなる損害でも自腹を切りましょ う。 picファイルは138号に載せて頂いた時と同じものです。 [EOF