Knowledgeゲーム制作に関するプログラミング等を主に書き溜めていきます。どちらかと言えば日記的な書き方が続くと思いますが、そこは温かい目で見て頂ければ。あと、ちょっとしたサンプルやツールのダウンロードも出来るようにしておきます。05:00本作のぶっ飛んだ特徴はやはり100人同時移動です。誰もがまさか動くはずないと思う事に挑戦しました。私には最初から勝算がありました。PCGですよ?PCG特化型ゲームデザイン100人を同時に動かす処理なんて、そりゃあ普通に作ったら無理でしょう。16x8の人間をドット単位で動かすのですから、どう考えても文字キャラ数が足りません。一方で、PCGを書き換えると画面上に表示済の全ての絵が一気に置き換わります。画面に100人いても、PCG2個書き換えれば全てのキャラデザインが変わります。この特性を利用します。人間が動くタイミングが全員同じである前提とします。100名いても移動方向は所詮は4方向です。各方向に専用のPCGを割り当てれば、アニメーションはプログラムで処理する必要はなくなります。処理能力が...PCGの書き換えは垂直ブランキング期間に行います。しないと画面に物凄いノイズが出るためです。垂直ブランキング期間は計算では3.33ms(多分)。怪しいメーカー、調べたら中国で製造している日本企業でした。安いが正義ならご検討をwPCG8100を攻略するPGC8100のダメなところを改めて検証してみます。読み込みポートが無いので、現在どんなパターンになっているのか判定できないという仕様があります。これが厄介なのですが、アドレス指定ポートにBEEPキーオンフラグが入っているのです。HAL研ではPCGは一度定義したら終わりという認識でハードを設計していたのだと思います。そのため、空いているビットとして、ここを使うしか無かったのだと思いますが、これにより現在演奏しているサウンドのキーオンフラグを、PCG定義時に設定しなければいけないのです。ポート状態を読み込む方法はありません。自前でポート出力データを管理しないといけないのです。追加調査の結果、このキーオンフラグを、PCG定義時に1ラインずつサウンドドライバのワークを参照して出力値にAND/ORしていたのが遅い理由だと分かりました。1キャラ8ライン分をループ制御して処理していました。この部分の高速化を考えていきます。割り込みがありません。そのため、サウンドドライバをこちらから呼び出さない限り、ワークの内容は読み込み時の値が保証されます。言い換えると、ワークから取り出したキーオンの状態が途中で変化する事はないのです。する必要は無くなります。ループ展開もしてしまえば最高速ですよね?ということで、PCG書き換えの開始を宣言するサブルーチンを用意しました。ループ展開しまくります。技術的な問題は解決したので、実装方法の検討に入ります。動方向に対してキャラを4個並べて置く。